当我仅在策略测试器的“ Jurnal”部分中测试EA和BreakEven选项时,我看到有关头寸修改的错误信息:“修改失败#28卖出1.00 EURUSD sl:1.14730,tp:1.13730-> sl:1.14730 ,tp:1.13730 [无效的停靠站]
当我放慢策略测试器的收支平衡时,将其运作良好,并将止损设置为0。一切正常,但是我看到一个错误报告。 如果有人知道要解决此问题,我将不胜感激。
谢谢
输入double break_even = 3.0; double ExtBreakEven = 0.0;
int Oninit()
{
//--- tuning for 3 or 5 digits
int digits_adjust=1;
if(_symbol.Digits()==3 || _symbol.Digits()==4 || _symbol.Digits()==5)
digits_adjust=10;
m_adjusted_point=_symbol.Point()*digits_adjust;
//---
ExtBreakEven = break_even * m_adjusted_point;
}
//..... and finally
void BreakEven(const double price)
{
if (break_even==0)
return;
for (int i=PositionsTotal()-1; i>=0; i--){
string symbol=PositionGetSymbol(i);
ulong magic=PositionGetInteger(POSITION_MAGIC);
if (symbol==_symbol.Name() && magic == magic_number){
ulong PositionTicket=PositionGetInteger(POSITION_TICKET);
double PriceEntry=PositionGetDouble(POSITION_PRICE_OPEN);
double CurrentTakeProfit=PositionGetDouble(POSITION_TP);
if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY){
if (price>=(PriceEntry+ExtBreakEven)){
if (!_trade.PositionModify(PositionTicket,PriceEntry,CurrentTakeProfit)) {
Print("Modify ",PositionTicket,
" Position -> false. Result Retcode: ",_trade.ResultRetcode(),
", description of result: ",_trade.ResultRetcodeDescription());
PrintResultModify(_trade,_symbol,_position);
}
}
}
else {
if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL){
if (price<=(PriceEntry-ExtBreakEven)){
if (!_trade.PositionModify(PositionTicket,PriceEntry,CurrentTakeProfit)){
Print("Modify ",PositionTicket,
" Position -> false. Result Retcode: ",_trade.ResultRetcode(),
", description of result: ",_trade.ResultRetcodeDescription());
PrintResultModify(_trade,_symbol,_position);
}
}
}
}
}
}
}