Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1601

 
PapaYozh:

Эта перебирает с нулевого индекса, т.е. с начала.

Я попутал...ты абсолютно прав!
 
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:

! - это булево отрицание , НЕ 

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--)   выдает предупреждение:

possible loss of data due to type conversion 

не могу разобраться в чем дело?

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

вроде бы "причесал" код но в  этой строчке   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)   выдает предупреждение:

possible loss of data due to type conversion 

не могу разобраться в чем дело?

параметры местами перепутал...обычная путаница, когда пишется "в лёт" прямо в форум минуя терминал

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) должно быть

 
Maxim Kuznetsov:

параметры местами перепутал...обычная путаница, когда пишется "в лёт" прямо в форум минуя терминал

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) должно быть

спасибо

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

вроде бы "причесал" код но в  этой строчке   for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)   выдает предупреждение:

possible loss of data due to type conversion 

не могу разобраться в чем дело?

а всю эту "штуку" реально вообще прикрутить к советнику и прогонять через тестер стратегий с выводом информации в отчет тестирования?

будет работать?

 

Подскажите как с этим бороться?

В тестере на истории простое открытие ордера иногда вызывает ошибку...

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 - что это вообще за фигня, что это значит?

Причина обращения: