您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者公式>>正文内容

开拓者随机发买卖单的模型源码[开拓者公式]

  • 思路: 投资学里经典的一句话 - 限制损失,让盈利奔跑。只要盈亏比达到一个理想的值,那胜率低也一样能赚到钱。为了验证这个理论,我写了一个随机发买卖单的模型,并且限制每次损失的上限,对盈利进行追踪止损。模型为日内交易,每3分钟发一个单。

     
  • 源码:(程序化交易网 WWW.CXH99.COM  转载请保留出处)
    1. Params

    2.         Numeric InitialStop(2);

    3.         Numeric BreakEvenStop(3);

    4.         Numeric TrailStop(5);

    5.    

    6. Vars

    7.         Numeric RandNum;

    8.         Numeric BuyOrSell;

    9.         Numeric StopLine;

    10.         Numeric MyEntryPrice;

    11.         Numeric MyExitPrice;

    12.         NumericSeries HighestAfterEntry;

    13.         NumericSeries LowestAfterEntry;

    14.  

    15. Begin

    16.  

    17.         If(Time>=0.1455){//如果要实盘测试,把Time改为CurrentTime

    18.                         If(MarketPosition == 1)

    19.                                 Sell(0,Close);

    20.                         If(MarketPosition == -1)

    21.                                 BuyToCover(0,Close);

    22.                                 return;

    23.                         }

    24.  

    25. If(BarsSinceentry == 0)

    26.         {  

    27.                 HighestAfterEntry = Close;

    28.                 LowestAfterEntry = Close;  

    29.          If(MarketPosition <> 0)  

    30.          {

    31.                 HighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);

    32.                 LowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);

    33.          }         

    34.     }else

    35.         {

    36.                 HighestAfterEntry = Max(HighestAfterEntry,High);

    37.                 LowestAfterEntry = Min(LowestAfterEntry,Low);

    38.         }

    39.         Commentary("HighestAfterEntry="+Text(HighestAfterEntry)); Commentary("LowestAfterEntry="+Text(LowestAfterEntry));

    40.         MyEntryPrice = AvgEntryPrice;

    41.  

    42.         If(MarketPosition==1) // 有多仓的情况( WWW.CXH99.COM )  

    43.         {

    44.                 StopLine = AvgEntryPrice * (1-InitialStop/1000);

    45.                

    46.                 If(HighestAfterEntry[1] >= MyEntryPrice *(1 + BreakEvenStop/1000))

    47.                   Stopline  = MyEntryPrice;

    48.                

    49.                 If(Stopline < HighestAfterEntry[1]*(1 - TrailStop/1000))

    50.                   Stopline  = HighestAfterEntry[1]*(1 - TrailStop/1000);

    51.                

    52.                 if(Low <= Stopline)

    53.                 {

    54.                         MyExitPrice = Stopline;

    55.                         If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替

    56.                         Sell(0,MyExitPrice);

    57.                         return;

    58.                 }

    59.         }else if(MarketPosition==-1) // 有空仓的情况

    60.         {

    61.             StopLine = AvgEntryPrice * (1+InitialStop/1000);

    62.                

    63.                 If(LowestAfterEntry[1] <= MyEntryPrice *(1 - BreakEvenStop/1000))

    64.                   Stopline  = MyEntryPrice;

    65.                

    66.                 If(Stopline > LowestAfterEntry[1]*(1 + TrailStop/1000))

    67.                   Stopline  = LowestAfterEntry[1]*(1 + TrailStop/1000);

    68.                

    69.                 Commentary("StopLine="+Text(Stopline));

    70.                 If(High >= Stopline)

    71.                 {

    72.                         MyExitPrice = Stopline;

    73.                         If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价有跳空触发,则用开盘价代替 来源 CXH99.COM

    74.                         BuyToCover(0,MyExitPrice);

    75.                         return;

    76.                 }

    77.         }

    78.  

    79.         RandNum = Rand(0,100); //产生0到100的随机数

    80.         BuyOrSell = Mod(RandNum,2); //产生0到1的随机数

    81.  

    82.         Commentary("BuyOrSell:"+TEXT(BuyOrSell));

    83.  

    84.         If(BuyOrSell == 0 && Mod(Minute,3) == 0 && MarketPosition!= -1) //如果BuyOrSell为0,每3分钟发一次多单

    85.                 Buy(1,Close);

    86.         else If(BuyOrSell == 1 && Mod(Minute,3) == 0 && MarketPosition!=1)//如果BuyOrSell为1,每3分钟发一次空单

    87.                 SellShort(1,Close);  

    88. End

     

 

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

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!

 


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

相关文章

    没有相关内容