交易机器人在市场发布前必须经过的检验 - 页 14

 

大家好。

这个错误是怎么回事?

测试欧元兑美元,未找到 H1 策略测试报告

如何解决?还有什么其他报告?

 
Denis Bogdanov:

大家好

这是什么奇怪的错误?

测试欧元兑美元,未找到 H1 策略测试报告

如何解决?什么报告?

您好,可能是某个地方出现了无限循环,所以测试没有达到生成报告的时刻。

 

我今天遇到了一个奇怪的问题,它说已经完成,但有错误,但不清楚是什么错误。它是空的。

 
Alexandr Gavrilin:

我今天遇到了一个奇怪的问题,它说已完成,但有错误,但不清楚是什么错误。它是空的。

自动搬运工的小把戏,再运行一次。
 
Alexandr Gavrilin:

我今天遇到了一个奇怪的问题,它说已经完成,但有错误,但不清楚是什么错误。它是空的。

我想已经解决了。
 
Vladislav Andruschenko:
我想已经修好了

肯定修好了,机器人已经测试过了。

 
按卖出价买入 以买入价卖出
TakeProfit -Bid>= SYMBOL_TRADE_STOPS_LEVEL
Bid- StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask- TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss -Ask>= SYMBOL_TRADE_STOPS_LEVEL

文章是这么说的。但是,这难道不是应该做的吗?

买入发生在 Ask 价格 卖出发生在买入价
TakeProfit -Ask>= SYMBOL_TRADE_STOPS_LEVEL
Bid- StopLoss >= SYMBOL_TRADE_STOPS_LEVEL

Bid- TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss -Ask>= SYMBOL_TRADE_STOPS_LEVEL

在函数代码中还有


// ...

switch(type)
     {
      //--- 购买交易
      case  ORDER_TYPE_BUY:
        {
         //--- 检查 StopLoss
         SL_check=(Bid-SL>stops_level*_Point);
         if(!SL_check)
            PrintFormat("For order %s StopLoss=%.5f must be less than %.5f"+
                        " (出价=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d 点)",
                        EnumToString(type),SL,Bid-stops_level*_Point,Bid,stops_level);
         //--- 检查 TakeProfit
         TP_check=(TP-Ask>stops_level*_Point);
         if(!TP_check)
            PrintFormat("For order %s TakeProfit=%.5f must be greater than %.5f"+
                        "(出价=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d 点数)",
                        EnumToString(type),TP,Bid+stops_level*_Point,Bid,stops_level);
         //--- 返回检查结果
         return(SL_check&&TP_check);
        }
      //--- 销售交易
      case  ORDER_TYPE_SELL:
        {
         //--- 检查 StopLoss
         SL_check=(SL-Ask>stops_level*_Point);
         if(!SL_check)
            PrintFormat("For order %s StopLoss=%.5f must be greater than %.5f "+
                        "(Ask=%.5f + SYMBOL_TRADE_STOPS_LEVEL=%d 点)",
                        EnumToString(type),SL,Ask+stops_level*_Point,Ask,stops_level);
         //--- 检查 TakeProfit
         TP_check=(Bid-TP>stops_level*_Point);
         if(!TP_check)
            PrintFormat("For order %s TakeProfit=%.5f must be less than %.5f "+
                        "(Ask=%.5f - SYMBOL_TRADE_STOPS_LEVEL=%d 点)",
                        EnumToString(type),TP,Ask-stops_level*_Point,Ask,stops_level);
         //--- 返回检查结果
         return(TP_check&&SL_check);
        }
      break;
     }

// ...

???

如果我们按照文章中的方法操作,我们只会损失点差利润!也许我有什么不明白的地方?

 
Oleg Arsentev #:
按卖出价买入 以买入价卖出
TakeProfit -Bid>= SYMBOL_TRADE_STOPS_LEVEL
Bid- StopLoss >= SYMBOL_TRADE_STOPS_LEVEL
Ask- TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss -Ask>= SYMBOL_TRADE_STOPS_LEVEL

文章是这么说的。但是,这难道不是应该做的吗?

买入发生在 Ask 价格 卖出发生在买入价
TakeProfit -Ask>= SYMBOL_TRADE_STOPS_LEVEL
Bid- StopLoss >= SYMBOL_TRADE_STOPS_LEVEL

Bid- TakeProfit >= SYMBOL_TRADE_STOPS_LEVEL
StopLoss -Ask>= SYMBOL_TRADE_STOPS_LEVEL

在函数代码中还有


???

如果我们按照文章中的方法操作,我们只会损失点差利润!也许我不明白什么?

我们当然会损失利润。但我们不可能将止损设得更近:

因此,TakeProfit(获利)和 StopLoss(止损)水平应与当前价格进行比较,在当前价格可以进行反方向操作:

  • 以 Ask 价格买入 - TakeProfit 和 StopLoss 水平应与当前卖出价 Bid 进行比较。
  • 按买入价卖出 - TakeProfit 和 StopLoss 水平应与当前卖出价比较。
[删除]  
市场上有一半的机器人无法工作。
 
dryun777 #:
市场上一半的机器人都无法工作。

这篇文章是为编写 EA 的人写的。您需要 "如何测试 "系列中的文章。