Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1601

 
PapaYozh:

Este va desde el índice cero, es decir, desde el principio.

Estoy confundido... ¡tienes toda la razón!
 
PapaYozh:

Este busca desde el índice cero, es decir, desde el principio.

PapaYozh:

Este va desde el índice cero, es decir, desde el principio.

Ahh... Ahora todo tiene sentido, gracias.

 
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);

}

escrito "a mano", sin probar, lleno de errores :-) ajústelo a sus necesidades y utilícelo

por favor, dígame qué significa -"!" en su código?

todavía no lo entiendo muy bien

¿o tal vez alguien más pueda explicármelo, además del autor?

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

por favor, dígame, ¿qué significa -"!" en su código?

Todavía no lo entiendo bien.

¿o puede explicármelo alguien más que el autor?

¡! - se trata de una negación booleana, NOT

if { !OrderSelect() } se traduce en "si OrderSelect NO tiene éxito"

!= respectivamente "NO igual"

 
Maxim Kuznetsov:

¡! - es una negación booleana, NOT

if { !OrderSelect() } se traduce como "si NO tiene éxito OrderSelect"

¡!

gracias

 
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);

}

escrito "a mano", no revisado, tiene muchos errores :-) ajústelo a sus necesidades y utilícelo

Puede que haya "limpiado" el código, pero esta línea muestra una advertencia for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)

posible pérdida de datos debido a la conversión de tipos

¿No puede averiguar qué es lo que está mal?

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

Parece que he limpiado el código, pero en esta línea for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) aparece el aviso:

posible pérdida de datos debido a la conversión de tipos

¿No puedo entender qué es lo que está mal?

Confundí los parámetros... es un lío común cuando se escribe "sobre la marcha" directamente en el foro obviando el terminal

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) debe ser

 
Maxim Kuznetsov:

Parámetros mezclados...confusión común cuando se escribe "sobre la marcha" directamente en el foro evitando el terminal

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) debe ser

gracias

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

Parece que he limpiado el código, pero en esta línea for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) aparece el aviso:

posible pérdida de datos debido a la conversión de tipos

¿No puedo entender qué es lo que está mal?

No puedo entender lo que está mal? ¿Puedo adjuntar toda esta "cosa" a mi Asesor Experto y ejecutarlo a través del probador de la estrategia con la salida de la información en el informe de prueba?

¿funcionará?

 

¿Algún consejo sobre cómo afrontarlo?

En el probador del historial, la apertura de un simple pedido provoca a veces un error...

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 - ¿Qué es esto y qué significa?