人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現在的位置:程序化交易>> 期貨公式>> 交易開拓者(TB)>> 開拓者知識>>正文內容

止損出現錯誤 [開拓者 TB]

  • 咨詢內容: 今天在用數據庫測試時發現開倉不正確,根據輸出的日志發現一個問題。
    程序如下,本程序在價格突破前6根Bar的高低點時建倉,止損設置為4跳。但是在09:29:01時開空后立即止損,止損價格就是開倉價格,并且止損單買入平倉失敗。我沒有發現程序的問題,所以請版主解答一下,謝謝!
    1. Params
    2.                 Numeric L1(6);
    3.                 Numeric Stoploss(4);
    4. Vars
    5.                 Bool        upbreak;
    6.                 Bool        lowbreak;
    7.                 String        orderstate;
    8.                 Numeric protectprice;
    9.                 Numeric Mx;
    10.                 Numeric Mn;
    11.                 Numeric i;
    12. Begin
    13.         //求最值------------------------------------------------------------------------
    14.     Mx=High[1];
    15.     Mn=Low[1];
    16.     For i=2 To L1
    17.     {
    18.         If(High[i]>Mx)
    19.             Mx=High[i];
    20.         If(Low[i]<Mn)
    21.             Mn=Low[i];
    22.     }
    23.     PlotNumeric("最大值",Mx);
    24.     PlotNumeric("最小值",Mn);
    25.        
    26.         If(BarStatus==2)
    27.                 {
    28.                         orderstate=GetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單");
    29.                         Commentary("已發單:"+orderstate);
    30.                         If(orderstate=="0" Or orderstate==InvalidString)
    31.                                 {
    32.                                         If(Q_Last>Mx)
    33.                                                 {
    34.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+",開多前orderstate為:"+orderstate+",開多前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    35.                                                         A_SendOrder(Enum_Buy,Enum_Entry,1,Q_AskPrice);
    36.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(1));
    37.                                                 }
    38.                                         If(Q_Last<Mn)
    39.                                                 {
    40.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+"開空前orderstate為:"+orderstate+",開空前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    41.                                                         A_SendOrder(Enum_Sell,Enum_Entry,1,Q_BidPrice);
    42.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(-1));
    43.                                                 }
    44.                                 }
    45.                         If(orderstate=="1")
    46.                                 {
    47.                                         protectprice=A_BuyAvgPrice-Stoploss;
    48.                                         If(Q_Last<protectprice)
    49.                                                 {
    50.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+"多單止損前orderstate為:"+orderstate+"止損前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    51.                                                         A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice);
    52.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(0));
    53.                                                 }
    54.                                         Else If(Q_Last<Mn)
    55.                                                 {
    56.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+"平多前orderstate為:"+orderstate+"平倉前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    57.                                                         A_SendOrder(Enum_Sell,Enum_Exit,1,Q_BidPrice);
    58.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(0));
    59.                                                 }
    60.                                 }
    61.                         If(orderstate=="-1")
    62.                                 {
    63.                                         protectprice=A_SellAvgPrice+Stoploss;
    64.                                         If(Q_Last>protectprice)
    65.                                                 {
    66.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+"空單止損前orderstate為:"+orderstate+"止損前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    67.                                                         A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice);
    68.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(0));
    69.                                                 }
    70.                                         Else If(Q_Last>Mx)
    71.                                                 {
    72.                                                         FileAppend("C:\\breaktest記錄.log",TimeToString(CurrentTime)+"平空前orderstate為:"+orderstate+"平倉前持倉為:"+Text(A_TotalPosition)+",發單價格:"+Text(Q_Last));
    73.                                                         A_SendOrder(Enum_Buy,Enum_Exit,1,Q_AskPrice);
    74.                                                         SetTBProfileString2File("C:\\breaktest.log","開倉控制","已發單",Text(0));
    75.                                                 }
    76.                                 }
    77.                 }
    78. End

     

  • TB技術人員: 買入平倉失敗的原因是前面的開空單尚未成交,因此平倉會失敗。但是不明白為什么止損條件未達到就發了止損單

     

  • TB客服:
    zhoucx 發表于 2016-7-14 14:23
    買入平倉失敗的原因是前面的開空單尚未成交,因此平倉會失敗。但是不明白為什么止損條件未達到就發了止損單 ...

    現有的日志可以確認是滿足了哪一個條件而進行的平倉動作。
    可以在日志里再加上內容,判斷當時的條件分別是什么從而滿足了人工認為不應該滿足的條件 。。
    上述出現問題的是條件是If(Q_Last>protectprice),可以在日志里將q_last,protectprice的值都分別寫日志里再觀察 。。
    在使用A函數交易中,在沒有經過一段時間的實時交易測試確認策略能完全按自己的需求執行前,建議在必要的地方(特別是開平倉時)都寫日志吧。這樣有助于及時排查問題,減少測試周期。

     

  • 網友回復:
    小米 發表于 2016-7-14 15:19
    現有的日志可以確認是滿足了哪一個條件而進行的平倉動作。
    可以在日志里再加上內容,判斷當時的條件分別 ...

    剛才加入了你說的這些,不過只進行了三次交易,沒有錯誤,明天再試試吧

     

  • 網友回復:
    小米 發表于 2016-7-14 15:19
    現有的日志可以確認是滿足了哪一個條件而進行的平倉動作。
    可以在日志里再加上內容,判斷當時的條件分別 ...

    問題解決了,謝謝小米
    確實是開倉單未成交的原因,因為已經發出了開空單,orderstate已經變成-1,下一tick到來時由于A_SellAvgPrice=0,所以protectprice=4,觸發了平倉動作,造成多開一單

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 511411198  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 欧美激情视频一区二区 | 欧美高清视频性播放 | 欧美精品专区免费观看 | 久久精品18 | 日韩午夜在线 | 日韩欧美精品综合久久 | 丁香婷婷激情五月 | 午夜无码国产理论在线 | 最新中文字幕在线观看 | 亚洲一级毛片免费在线观看 | 国产精品成人h片在线 | 黑丝足 | 欧美69精品国产成人 | 中国野外性xxxx | 国产日韩欧美一区二区 | 在线日韩欧美一区二区三区 | 一级欧美在线的视频 | 女性特黄一级毛片 | 怡红院美国十次成人影院 | 亚洲成a v人片在线看片 | 污视频网站免费观看 | 国产欧美日韩高清专区ho | 亚洲激情文学 | 国产综合色在线视频区色吧图片 | 欧美一级网址 | 一级女人18片毛片免费视频 | 老司机午夜在线 | 黄色大片在线看 | bban在线| 一级特黄aaa大片 | 亚洲免费二区 | 天天影视色香欲综合网网站麻豆 | 交性大片欧美多人 | 色综合天天综合高清网国产 | 国产午夜毛片一区二区三区 | 黄色毛片视频 | 成人三级在线播放 | 极品美女丝袜被的网站 | 亚洲国产成人久久精品动漫 | 午夜天堂在线观看 | 久久成人黄色 |