金字塔决策交易系统

用户名  找回密码
 

微信登录

微信扫一扫,快速登录

帖子
查看: 3388|回复: 9

如何实现多种条件下买入,同一条件卖出?

[复制链接]

7

主题

20

帖子

20

积分

Rank: 1

等级: 新手上路

注册:
2021-7-28
曾用名:
发表于 2021-10-27 15:15 | 显示全部楼层 |阅读模式
请问一下,多种情况买入后,同一条件卖出如何编写?
比如cross(ma5,ma10)买入40%,
       cross(ma10,ma30)再买入60%,
        cross(ma30,ma10)全卖要怎么写?
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-27 15:16 | 显示全部楼层
全卖时候,平仓手数参数直接写0  如果是图表直接写holding也行。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

7

主题

20

帖子

20

积分

Rank: 1

等级: 新手上路

注册:
2021-7-28
曾用名:
 楼主| 发表于 2021-10-27 15:50 | 显示全部楼层
技术009 发表于 2021-10-27 15:16
全卖时候,平仓手数参数直接写0  如果是图表直接写holding也行。

我的意思是分两次买入要怎么写在一个策略里面,并且能够在一个买卖循环里面执行。
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-27 15:53 | 显示全部楼层
首先,你这个仓位总量 是如何控制的。是固定手数分配,还是怎样的。比如条件1 开仓4手,条件2开仓6手。还是其他方式。

如果是固定手数,最简单了。直接写2个开仓语句,设置下单手数不一样就行了。没什么特殊的地方。但是有一点是很明确的,平仓条件触发是可能在你只开了一次情况下就触发了的。

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

7

主题

20

帖子

20

积分

Rank: 1

等级: 新手上路

注册:
2021-7-28
曾用名:
 楼主| 发表于 2021-10-27 16:04 | 显示全部楼层
技术009 发表于 2021-10-27 15:53
首先,你这个仓位总量 是如何控制的。是固定手数分配,还是怎样的。比如条件1 开仓4手,条件2开仓6手。还是 ...

固定手数,是不是可以直接写成?
buy(cross(ma5,ma10),40%,thisclose);
buy(cross(ma10,ma30),60%,thisclose);
sell(cross(ma30,ma10),0,thisclose);
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-27 16:16 | 显示全部楼层
不可以这样子。这个40%的确是符合代码规范的写法,但是不符合你的逻辑。

首先这2个条件的触发顺序根本就是不可控的。你可能先触发40% ,那么下次再触发60%的下单,这个60%的下单其是是扣除了上次那个40%后剩余部分的60%了。

你如果是固定手数,你直接按比例写固定手数嘛。

比如这样直接固定手数。
buy(cross(ma5,ma10),4,thisclose);
buy(cross(ma10,ma30),6,thisclose);
sell(cross(ma30,ma10),0,thisclose);

但是我前面说的问题还在,2个下单顺序是无法预测的。

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

7

主题

20

帖子

20

积分

Rank: 1

等级: 新手上路

注册:
2021-7-28
曾用名:
 楼主| 发表于 2021-10-27 16:37 | 显示全部楼层
技术009 发表于 2021-10-27 16:16
不可以这样子。这个40%的确是符合代码规范的写法,但是不符合你的逻辑。

首先这2个条件的触发顺序根本就 ...

谢谢版主,但是每条指令会重复开仓呢,怎么样写死每个条件触发只开一次仓,也就是说没平仓前最多只能开两次。
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-27 16:53 | 显示全部楼层
处理这个之前 必须先明确。你这里是必须等到2个条件都触发开仓了才能平仓,还是怎样。因为你这个可能条件1 开仓了,很快平仓条件也触发了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

7

主题

20

帖子

20

积分

Rank: 1

等级: 新手上路

注册:
2021-7-28
曾用名:
 楼主| 发表于 2021-10-27 17:27 | 显示全部楼层
技术009 发表于 2021-10-27 16:53
处理这个之前 必须先明确。你这里是必须等到2个条件都触发开仓了才能平仓,还是怎样。因为你这个可能条件1  ...

开仓1触发了平仓就不开开仓2,
开仓1和开仓2同时触发后平仓也是逻辑需求。
回复

举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-28 09:23 | 显示全部楼层
[PEL] 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
INPUT:SS1(4,1,100,1),SS2(6,1,100,1);;
VARIABLE:ct:=0;
 
ma5:ma(c,5);
ma10:ma(c,10);
ma30:ma(c,30);
 
kd1:cross(ma5,ma10);
kd2:cross(ma10,ma30);
pd:cross(ma30,ma10);
 
 
if kd1 and (ct=0 or ct=2) then
begin 
开多1:buy(1,ss1,thisclose);
ct:=ct+1;  
end 
 
if kd2 and (ct=0 or ct=1) then
begin 
开多2:buy(1,ss2,thisclose);
ct:=ct+2;  
end 
 
 
if pd  and ct>0 then
begin
sell(1,0,thisclose);
ct:=0;
end


ss1,ss2分别是2个条件的开手数。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-5-24 17:00 , Processed in 0.082824 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表