金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3149|回复: 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)全卖要怎么写?
回复

使用道具 举报

19

主题

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也行。

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

使用道具 举报

19

主题

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);
回复

使用道具 举报

19

主题

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个条件的触发顺序根本就 ...

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

使用道具 举报

19

主题

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同时触发后平仓也是逻辑需求。
回复

使用道具 举报

19

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-10-28 09:23 | 显示全部楼层
[PEL] 复制代码
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, 2024-11-17 07:23 , Processed in 0.273525 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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