欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]交易系统不会编写

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4434人关注过本帖树形打印复制链接

主题:[求助]交易系统不会编写

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/11/15 9:43:47    Post IP:180.169.30.6[显示全部帖子]

 MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);

手数:=1;
//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件

//交易系统
平空:SELLSHORT(开多平空条件 ,holding,MARKET);
平多:SELL(开空平多条件,holding,MARKET);
开多:BUY(开多平空条件  and holding=0,手数,MARKET);
开空:BUYSHORT(开空平多条件  and holding=0,手数,MARKET);

//多头止盈
IF (C-AvGENTERPRICE)/AvGENTERPRICE>=0.1 THEN BEGIN
多止盈:SELL(1,HOLDING,MARKET);
END


//多头止损
IF (AvGENTERPRICE-c)/AvGENTERPRICE>=0.05 THEN BEGIN
多止损:SELL(1,HOLDING,MARKET);
END


//空头止盈
IF (AvGENTERPRICE-c)/AvGENTERPRICE>=0.1 THEN BEGIN
空止盈:SELLSHORT(1,HOLDING,MARKET);
END


//空头止损
IF (c-AvGENTERPRICE)/AvGENTERPRICE>=0.05 THEN BEGIN
空止损:SELLSHORT(1,HOLDING,MARKET);
END
//20周期平仓
if ENTERBARS=19 and holding<>0 then
begin
SELLSHORT(1,HOLDING,MARKET);
SELL(1,HOLDING,MARKET);    
end




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/11/15 11:27:59    Post IP:180.169.30.6[显示全部帖子]

 我上面代码是有反手的。不一定是 止盈止损到的平仓,有的是反手的。如果你不要反手,那就要调整下代码了。
[此贴子已经被作者于2019/11/15 11:28:15编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/11/15 13:26:19    Post IP:180.169.30.6[显示全部帖子]

 
 MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);

手数:=1;
//交易条件

开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件


开多:BUY(开多平空条件  and holding=0,手数,MARKET);
开空:BUYSHORT(开空平多条件  and holding=0,手数,MARKET);

//多头止盈
IF (C-AvGENTERPRICE)/AvGENTERPRICE>=0.1 THEN BEGIN
多止盈:SELL(1,HOLDING,MARKET);
END


//多头止损
IF (AvGENTERPRICE-c)/AvGENTERPRICE>=0.05 THEN BEGIN
多止损:SELL(1,HOLDING,MARKET);
END


////空头止盈
IF (AvGENTERPRICE-c)/AvGENTERPRICE>=0.1 THEN BEGIN
空止盈:SELLSHORT(1,HOLDING,MARKET);
END


//空头止损
IF (c-AvGENTERPRICE)/AvGENTERPRICE>=0.05 THEN BEGIN
空止损:SELLSHORT(1,HOLDING,MARKET);
END
//20周期平仓
if ENTERBARS=19 and holding<>0 then
begin
SELL(1,HOLDING,MARKET);    
end

你直接加载到图表上看下。止盈止损的平仓都是有标识的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/11/15 14:53:17    Post IP:180.169.30.6[显示全部帖子]

 你把策略放图上去,看一下止损止盈位置的收盘价。止盈止损都是按照c写出来的。我开仓K是100点,下一个K是80点,那我肯定也就止损了,总不能因为中间没有95这个点,就不止损了吧。所以这其实就是个价格连续性问题。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2019/11/18 10:58:30    Post IP:180.169.30.6[显示全部帖子]

 先说明下回测中存在的一些无法规避的问题  之后再处理代码问题。
1.止盈止损的判断问题。只能根据开高低收四个价格进行判断。 所以判断上其实是一个大于等于的条件。比如5%止盈止损,我采用L或者C作为多头止损条件,那么有可能这2个价格计算的止损早就超过5%了.  可能已经10%或者更多了,这个无法规避,但是通常小周期会更精确,因为在一个较短时间内价格的差异可能会小点,不过也只是可能小点。

代码上 我按照我的惯例写的C,是因为c在实际交易时候代表着最新价。 你如果是一个大周期,你用L或者H,就有一个问题,如果你开始交易之前这个K的L或者H已经出来了,你可能开仓立马就平仓了。 这是个人选择,我只是说明下情况。你可以改用L或者H都行,用H或者l在回测上会表现的更好。用C的话,在实际交易时候可能更符合情况点。 或者这样你回测和交易用2套代码。


2.市价的问题。市价在回测上也是无法体现出来的。
如果用的是market市价成交,回测上那么其实是用的满足信号条件的次根K的O作为替代的(不同指令会有不同表现)。 所以这个也是导致那个盈亏率计算和需求思路偏差较大的原因之一。   解决办法只能把回测中的下单指令调整成限价,且价格按照止损止盈的价格设置。这样回测上效果会更好,但是作为牺牲就是实际交易时候就只会限价发单了。




命数如织,当如磐石。
 回到顶部