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

 
Artyom Trishkin #:
Descanso

¿Cuál es la pregunta?)

 
Alexey Viktorov #:

¿Cuál es la pregunta?))

Aparentemente tú y Andrei deberíais dejar de trolear...

El ambiente es realmente antipático (como se ha señalado anteriormente). He venido aquí para discutir cuestiones de MQLQL. Pero he leído algo que no tiene que ver con MQL. ¿De qué estás hablando?

Que algún recién llegado haga una pregunta o algo... ¿O tal vez tiene miedo de...? Perderse en la refriega entre tú y Andrei... :)
 

Buenas tardes a todos.

Por favor, aconseje cómo escribir el código correctamente.
Cierro varias órdenes a la vez en diferentes direcciones, diferentes pares de divisas, de acuerdo con ciertas condiciones. Pero a veces la orden no se ejecuta debido a la empresa de corretaje y alguna parte de las órdenes permanece abierta. Puedo prescribir el sueño para cada pedido. Pero quiero algo más corto.

if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);

      }
 
makssub "Sleep" para cada pedido. Me gustaría usar algo más corto.

https://book.mql4.com/ru/trading/orderclose

Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
makssub sueño para cada pedido. Me gustaría tener algo más corto.

Cuando se produce la condición de salida/cierre, debemos añadir el ticket al array. A continuación, si la matriz no está vacía, el programa hará un bucle a través de ella, llamando a OrderClose para cada ticket. A continuación, compruebe la existencia de cada billete y elimínelo de la lista. Repita estas acciones a intervalos de 1 a 3 segundos hasta que la lista esté vacía.

 

Hola.

Necesito calcular el beneficio neto del Asesor Experto al final del trabajo. Ejecuto un bucle sobre OrdersHistoryTotal() en OnDeinit y añado OrderProfit().

Beneficio=Beneficio+Beneficio del pedido();

Pero al final el beneficio es diferente al reportado en el probador. He descubierto que el valor de los puntos difiere en una parte de los pedidos.

¿Cuál es la razón de esto? La dispersión se ajusta manualmente en el probador.

 
AlexandrVV #:

Hola.

Necesito calcular el beneficio neto del Asesor Experto al final del trabajo. Inicio un bucle por OrdersHistoryTotal() en OnDeinit y añado OrderProfit().

Beneficio=Beneficio+Beneficio del pedido();

Pero al final el beneficio es diferente al reportado en el probador. He descubierto que el valor de los puntos difiere en una parte de los pedidos.

¿Cuál es la razón de esto? La dispersión se ajusta manualmente en el probador.

¡El intercambio y la comisión fueron olvidados para ser añadidos! El diferencial ya se tiene en cuenta ya que siempre está entre los precios de entrada y salida.

 
Mihail Matkovskij #:

Se ha olvidado añadir el intercambio y la comisión. El diferencial ya se tiene en cuenta, ya que siempre está entre el precio de entrada y el de salida.

¡Oh, eso es! ¡¡¡Muchas gracias!!! )

 
Hola a todos. Por favor, díganme dónde puedo encontrar un script o indicador que envíe una notificación a mi teléfono, cuando el precio alcance un determinado nivel especificado por mí.
 

Me podéis decir cuál es el problema, el código debería cerrar las órdenes y si faltan debería abrir una nueva.

Pero por alguna razón, sólo cierra 1 orden y se detiene hasta la siguiente señal.

2022.01.17 16:22:08.38 92022.01.04 08:00:00 e:Señal1.1322 < clos 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Señal 1.1322 >clos1.1304ExistPosBuy1
2022.01.17 16:22:08.366 2022.01.04 08:00:00 e: Señal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: Señal 1.1325 > clos 1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 2022.01.04 00:00:00 e: Señal 1.1326 < clos 1.1296ExistPosSell0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Señal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.
01.17 16:22:08.298 2022.01.03 20:00:00 e:Señal 1.1328 <cierre 1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: cierre #1 compra 0.01 EURUSD a 1.13598 al precio 1.12831

2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Señal 1.1328> cierre 1.
ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: open #4 bu y0.01 EURUSD at 1.13512 ok 2022.01.17 16:22:08.190 2022.01.03 16:00:00 e:Señal 1.134 <cierre 1.135ExistPosSell0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Señal 1.134 > cierre 1.135 ExistPosBuy 1

if(isNewBar()==true) {  
if(Signal > clos ) {  //--------------------- МА выше цены закрытия предыдущего бара.
     if(ExistPositions( NULL, OP_BUY, Magic) == true) //---------------- Если есть позиция BUY то
ClosePosWithMaxProfitInCurrency(); //--------  закрытие одной позиции с максимальным профитом в валюте депозита.
         if(ExistPositions( NULL, OP_BUY, Magic) == False) //----------- если позиции BUY отсутствуют то
   ticket=OpenPosition(NULL,OP_SELL, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию SELL

if(Signal < clos ) { //--------------------- МА ниже цены закрытия предыдущего бара.
    if(ExistPositions( NULL, OP_SELL, Magic) == true) //---------------- Если есть позиция SELL то
 ClosePosWithMaxProfitInCurrency(); //---------------------закрытие одной позиции с максимальным профитом в валюте депозита.
        if(ExistPositions( NULL, OP_SELL, Magic) == False)  //----------- если позиции SELL отсутствуют то
  ticket=OpenPosition(NULL,OP_BUY, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию BUY

} return;