新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1601

 
PapaYozh:

这个从指数0开始, 也就是从开始。

我很困惑......你说得太对了!"。
 
PapaYozh:

这个人从零指数 开始搜索 即从头开始。

PapaYozh:

这个从 指数开始,也就是从开始。

啊...现在这一切都说得通了,谢谢你。

 
Maxim Kuznetsov:

for(int i=OrdersTotal()-1;i>=0;i--) {

   if (! OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;

   double prosad=DBL_MIN;

   if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;

   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {

      double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );

      delta /= MarketInfo(OrderSymbol(),MODE_POINT);

      if (delta>prosad) prosad=delta;

   }

  PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);

}

手工写的,未经测试,充满了错误:-) 根据你的需要调整它并使用它。

请告诉我 -"!"在你的代码中是什么意思?

我还不太了解它

或者除了作者之外,也许还有人可以向我解释?

 
законопослушный гражданин:

请告诉我,-"!"在你的代码中是什么意思?

我还没有真正理解它。

或者除了作者之外,还有谁能给我解释一下?

!- 这是一个布尔式的否定,不是

if { !OrderSelect() }翻译为 "如果OrderSelect 不成功"

!=分别为 "不等于"

 
Maxim Kuznetsov:

!- 是一个布尔式的否定,NOT

if { !OrderSelect() }翻译为 "如果不成功OrderSelect"

!

谢谢

 
Maxim Kuznetsov:

for(int i=OrdersTotal()-1;i>=0;i--) {

   if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;

   double prosad=DBL_MIN;

   if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;

   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {

      double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );

      delta /= MarketInfo(OrderSymbol(),MODE_POINT);

      if (delta>prosad) prosad=delta;

   }

  PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);

}

手写的,没有经过检查,有很多错误 :-) 根据你的需要调整它,并使用它。

我可能已经 "清理 "了代码,但是这一行显示了一个警告for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0; j--)

由于类型转换可能造成的数据损失

搞不清楚哪里出了问题?

 
законопослушный гражданин:

我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。

由于类型转换而可能造成的数据损失

我搞不清楚哪里出了问题?

我把参数弄混了......当它绕过终端而 "飞 "到论坛上时,这是很常见的混乱。

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是

 
Maxim Kuznetsov:

参数混在一起......当绕过终端直接在论坛上 "飞 "写时,常见的混乱情况。

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是

谢谢

 
законопослушный гражданин:

我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。

由于类型转换可能造成的数据损失

我搞不清楚哪里出了问题?

我真的不明白哪里出了问题? 我可以把这整个 "东西 "附在我的专家顾问上,通过策略测试器运行,并在测试报告中输出信息?

能否成功?

 

有什么诀窍来处理这个问题吗?

在历史上的测试器中,一个简单的订单打开有时会导致一个错误...

OrderSend(_Symbol,OP_SELL,0.5,Bid,0,0,0,NULL,0)
2021.08.26 14:56:33.375 2017.08.07 08:00:00  Trader EURUSD,H1: OrderSend error 3

ERR_INVALID_TRADE_PARAMETERS - 这到底是什么,意味着什么?

原因: