您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

这个软件自带指标如何修改为连亏三次 才交易 [金字塔]

  • 咨询内容:

    闪灵交易者策略

    The Ghost Trader Trading Stategy)

    在交易中,特别是突破类模型,成功率并不高,若碰上反复的假突破,更是一种灾难。那有没有方法来减少这种情形的发生呢?本文介绍的闪灵交易者策略(The Ghost Trader Trading Stategy)为大家提供了一种方式。

    闪灵交易者策略源自于交易者的观察,一些交易者从自己的交易记录中发现,若上一次交易是盈利的,那么下一笔交易是亏损的概率比较大。因此在设计策略时,希望能跳过这些我们认为会亏损的交易。具体到策略中,我们将引入模拟交易的概念(这个概念仅指此策略中代码部分,请勿与金字塔模拟交易混淆), 与之对应的是真实下单模块。模拟交易始终在运行交易条件。而真实下单模块直到上一笔模拟交易是亏损的情况下才执行。

    本文的例子,将忠于原策略,建立在一个指数移动平均和RSI指标上。默认只考虑一次亏损的情况,周期为日线,运行模式为走完K线(在小周期运行此策略,效果更明显些)。

    开多:9日收盘价指数平均大于等于19日最高价的指数平均并且9日收盘价的RSI指标下穿70

    开空:9日收盘价指数平均小于19日最高价的指数平均并且9日收盘价的RSI指标上穿30

    平多:最新价下穿20日低点。

    平空:最新价上穿20日高点。

    以上进出场点并不是这个策略的要点,重在如何记录模拟交易的状况,在金字塔软件中,我们将使用全局变量来构建这个部分。具体的见代码,我会多做些注释。若您完全理解后,移动止盈止损的代码也应不在话下。

    代码:
    //
    策略:闪灵交易者系统
    //
    类型:
    //
    版本:1.0
    //
    修订时间:2012.11.24
    //DESIGNED BY ROGARZ
    //weibo:http://weibo.com/rogarwahoo

    //
    中间变量
    INPUT:N1(9,1,100,1),SS(1,1,100);
    VARIABLE:
    该笔盈亏:=0;模拟持仓:=0,模拟开仓价:=0,模拟平仓价:=0,真实系统下单开关:=0;
    LC := REF(CLOSE,1);
    RSI:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//RSI
    指标默认N19
    9
    日收盘价指数平均:REF(EMA(CLOSE,9),1);
    19
    日最高价收盘价平均:REF(EMA(HIGH,19),1);
    20
    日高点:=REF(HHV(H,20),1);
    20
    日低点:=REF(LLV(L,20),1);
    手数:=SS;
    //
    交易条件
    开多条件:=9日收盘价指数平均>=19日最高价收盘价平均 AND REF(RSI,1)<70;
    开空条件:=9日收盘价指数平均<19日最高价收盘价平均 AND REF(RSI,1)>30;
    平多条件:=C<20日低点;
    平空条件:=C>=20日高点;


    //
    交易系统
    //模拟交易模块
    IF 
    开多条件 AND 模拟持仓=0 THEN BEGIN
       
    模拟开仓价:=CLOSE;//记录开仓价
       
    模拟持仓:=1;//模拟持仓为1
    END

    IF 平多条件 AND 模拟持仓=1 THEN BEGIN
       
    模拟平仓价:=CLOSE;//记录平仓价
       
    该笔盈亏:=模拟平仓价-模拟开仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数
       
    模拟持仓:=0;//将全局变量*模拟持仓*初始化为0
       
    IF 该笔盈亏>0 THEN BEGIN
        
    真实系统下单开关:=0;//0代表模拟交易上一笔是赚钱的。
        
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
        
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
       END
       IF 
    该笔盈亏<=0 THEN BEGIN
        
    真实系统下单开关:=1;//1代表模拟交易上一笔是亏钱的。
        
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
        
    模拟平仓价:=0;//将全局变量*模拟平仓价*初始化为0  
       END
     END
     
    IF 
    开空条件 AND 模拟持仓=0 THEN BEGIN
       
    模拟开仓价:=CLOSE;//记录开仓价
       
    模拟持仓:=-1;//模拟持仓为-1
    END

    IF 平空条件 AND 模拟持仓=-1 THEN BEGIN
       
    模拟平仓价:=CLOSE;//记录平仓价
       
    该笔盈亏:=模拟开仓价-模拟平仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数
       
    模拟持仓:=0;//将全局变量*模拟持仓*初始化为0
       
    IF 该笔盈亏>0 THEN BEGIN
        
    真实系统下单开关:=0;//0代表模拟交易上一笔是赚钱的。
        
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
        
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
       END
       IF 
    该笔盈亏<=0 THEN BEGIN
        
    真实系统下单开关:=1;//1代表模拟交易上一笔是亏钱的。
        
    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0
        
    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0
       END
     END
     
    //
    真实下单模块 
    平空:SELLSHORT(平空条件 AND HOLDING<0,手数,MARKET);
    平多:SELL(平多条件 AND HOLDING>0,手数,MARKET);
    开多:BUY(开多条件 AND 真实系统下单开关=1 AND HOLDING=0,手数,MARKET);
    开空:BUYSHORT(开空条件 AND 真实系统下单开关=1 AND HOLDING=0,手数,MARKET);

     

           这个策略虽说是一个完整的策略,但个人觉得更像是一个模板。大家理解后,应很容易修改这个模板,任意发挥,默认只计算一次亏损策略的效果并不明显。若改成比如连亏3次后再交易的情形,交易次数和效果很明显。

     

  • 金字塔客服:

    1,请首先看懂这部分代码。个人认为您懂了,那么连亏三次表达上也没有问题

    [此贴子已经被作者于2014/7/4 16:33:56编辑过]

     

  • 用户回复: 看看问题出在了哪里,累计盈亏次数不会归0,怎么回事


    INPUT:N1(9,1,100,1),SS(1,1,100);VARIABLE:该笔盈亏:=0;模拟持仓:=0,模拟开仓价:=0,模拟平仓价:=0,累计盈亏次数:=0;LC := REF(CLOSE,1);RSI:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//RSI指标默认N1为99日收盘价指数平均:REF(EMA(CLOSE,9),1);19日最高价收盘价平均:REF(EMA(HIGH,19),1);20日高点:=REF(HHV(H,20),1);20日低点:=REF(LLV(L,20),1);手数:=SS;//交易条件开多条件:=9日收盘价指数平均>=19日最高价收盘价平均 AND REF(RSI,1)<70;开空条件:=9日收盘价指数平均<19日最高价收盘价平均 AND REF(RSI,1)>30;平多条件:=C<20日低点;平空条件:=C>=20日高点;
    //交易系统      //模拟交易模块IF 开多条件 AND 模拟持仓=0 THEN BEGIN   模拟开仓价:=CLOSE;//记录开仓价   模拟持仓:=1;//模拟持仓为1ENDIF 平多条件 AND 模拟持仓=1 THEN BEGIN   模拟平仓价:=CLOSE;//记录平仓价   该笔盈亏:=模拟平仓价-模拟开仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数   模拟持仓:=0;//将全局变量*模拟持仓*初始化为0   IF 该笔盈亏>0 THEN BEGIN    累计盈亏次数:=0;    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0   END   IF 该笔盈亏<=0 THEN BEGIN    累计盈亏次数:=累计盈亏次数+1;    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0    模拟平仓价:=0;//将全局变量*模拟平仓价*初始化为0     END END IF 开空条件 AND 模拟持仓=0 THEN BEGIN   模拟开仓价:=CLOSE;//记录开仓价   模拟持仓:=-1;//模拟持仓为-1ENDIF 平空条件 AND 模拟持仓=-1 THEN BEGIN   模拟平仓价:=CLOSE;//记录平仓价   该笔盈亏:=模拟开仓价-模拟平仓价;//在模拟交易模块中我们只需计算上一笔交易是赚还是亏,在这里我只计算盈亏最后的点数    模拟持仓:=0;//将全局变量*模拟持仓*初始化为0   IF 该笔盈亏>0 THEN BEGIN    累计盈亏次数:=0;    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0    模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0   END   IF 该笔盈亏<=0 THEN BEGIN    累计盈亏次数:=累计盈亏次数+1;    模拟开仓价:=0;//将全局变量*模拟开仓价*初始化为0     模拟平仓价:=0;//将全局变量*模拟开仓价*初始化为0   END END
    平空:SELLSHORT(平空条件 AND HOLDING<0,手数,MARKETR);平多:SELL(平多条件 AND HOLDING>0,手数,MARKETR);开多:BUY(开多条件 AND 累计盈亏次数>=3 AND HOLDING=0,手数,MARKETR);开空:BUYSHORT(开空条件 AND 累计盈亏次数>=3 AND HOLDING=0,手数,MARKETR);

     

  • 网友回复:

    自己调试下代码

     


    此主题相关图片如下:qq截图20140704210624.png

     

  • 网友回复: 调试这个功能我不会用

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容