在回測結果中有一堆停損點

 

^回測結果的圖表


如題目,想請教一下

MT5 EA回測後的結果報表中,只交易一口的情況下停損點這麼多正常嗎


...
...

   if(IsNewTFbar(線圖週期) && OrdersTotal()==0)
   {
      if(點差>=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD) || 點差==0)//檢查點差
      {
         if(目前多頭持倉+目前空頭持倉<最大總持倉)
         {
            if(多頭訊號=true)
            {
               double tp=0;
               double sl=0;
               if(停損點!=0)
                  sl=SymbolInfoDouble(Symbol(),SYMBOL_BID)-(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*停損點);
               if(停利點!=0)
                  tp=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*停利點);
               if(!trade.Buy(每筆下單量,NULL,0.000000,sl,tp,Order_註記))
                  printf("未成交,已取消");
            }
            if(空頭訊號=true)
            {
               double tp=0;
               double sl=0;
               if(停損點!=0)
                  sl=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*停損點);
               if(停利點!=0)
                  tp=SymbolInfoDouble(Symbol(),SYMBOL_BID)-(SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE)*停利點);
               if(!trade.Sell(每筆下單量,NULL,0.000000,sl,tp,Order_註記))
                  printf("未成交,已取消");
            }
         }  
      }
   } 

...
...
 

试试

 if(IsNewTFbar(線圖週期) && OrdersTotal()==0)

改成

 if(IsNewTFbar(線圖週期) && PositionsTotal() ==0)

OrdersTotal():指的是挂单

PositionsTotal() :指的是已成交的单

 

朋友 你提的問題 還真的很難懂

假設 你的問題是  "MT5 EA回測後的結果報表中,只有交易一口. 這種的情況下, 點差這麼多正常嗎? " 


 除了樓上莊神指出的問題外 我發現其他可能的問題 並給點建議

if(IsNewTFbar(線圖週期) && OrdersTotal()==0)  //這個區塊沒使用掛單 所以應該要檢查的是持倉 用PositionsTotal()
   {
      Print(__LINE__); //用來檢查上一句的兩個條件是否通過
      if(點差>=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD) || 點差==0)//檢查點差
      {
         Print(__LINE__); //用來檢查上一句點差的條件是否通過
         if(目前多頭持倉+目前空頭持倉<最大總持倉)
         {
            Print(__LINE__); //用來檢查上一句持倉的條件是否通過
            if(多頭訊號=true)
            {
             .
             .

啟用回測時 使用可視化的功能 觀察一下 應該要開單 結果卻沒開單的條件是哪一個


如果你提問題是太大的"停損點" 在交易日誌中回報錯誤的止損 那就檢查一下你設置的停損點是不是太小 

或將 SYMBOL_TRADE_TICK_SIZE 改成SYMBOL_POINT試看看(兩個值應該是一樣的 但是在某些品種或部分平台 可能不一樣)

原因: