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

 
Yurij Kozhevnikov:

Las variables estáticas no se reinicializan cuando se cambian los parámetros de entrada, el periodo del gráfico, etc.

¿No hay algún tipo de truco de oído para reinicializarlos a la fuerza? Más largo es el camino que se imagina, ¿no hay uno simple y corto?

Inicializar en oninit y no hacerlos estáticos. De repente

 
Gracias. Una sonrisa siempre es mejor que una negativa.
 
Hola! El servidor de la MT5 de AMP Global está caído. Volver a escanear la red no ayuda. Volver a registrar tampoco ayuda.
Archivos adjuntos:
 

¡Salud!

¿Qué significa "archivo ex4 no válido (7)" y "fallo de inicialización global"?

 
Yurij Kozhevnikov:
Gracias. Una sonrisa siempre es mejor que una negativa.
No recuerdo haber dicho nada negativo que no fuera a propósito, pero da igual.

MQL no es del todo (no del todo) C plus. Los miembros de la clase o las variables estáticas no deben estar en las funciones. Causan muchos problemas y estos problemas son luego difíciles de localizar.

Sólo en el nivel más alto, en un EA específico, pensando mucho.
 

¡¡¡Hola!!!

  1. Hay una matriz de valores - 500 MA para cada barra

¿Cómo podemos calcular los arneses resultantes?:

- Al cambiar de dirección...

Aconsejado para sumergirse en los Mapas Kohonen, bueno, ¡no pude entenderlo!

 
Top2n:

¡¡¡Hola!!!

  1. Hay una matriz de valores - 500 MA para cada barra

¿Cómo podemos calcular los arneses resultantes?:

- Al cambiar de dirección...

Me aconsejaron que me sumergiera en los mapas de Kohonen, ¡pero no pude entenderlo!

¿cuáles son sus mA?

Si se trata de SMA, probablemente pueda arreglárselas con la aritmética escolar. Sólo hay que recordar la fórmula :-)

 

¡Salud!
Existe un código que traduce una parada al punto de equilibrio (para las ventas, por ejemplo):

if(PositionGetDouble(POSITION_SL)>PositionGetDouble(POSITION_PRICE_OPEN) && ask()<PositionGetDouble(POSITION_PRICE_OPEN)-BreakEven) {
                     //Comment("Modify sell");
                     MqlTradeRequest request;
                     MqlTradeResult  result;
                     ulong  position_ticket  = PositionGetTicket(i);// тикет позиции
                     string position_symbol  = PositionGetString(POSITION_SYMBOL); // символ
                     int    digits           = (int)SymbolInfoInteger(position_symbol,SYMBOL_DIGITS); // количество знаков после запятой

                     double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

                     double tp               = PositionGetDouble(POSITION_TP);  // Take Profit позиции
                     ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);  // тип позиции
                     ZeroMemory(request);
                     ZeroMemory(result);
                     request.action          = TRADE_ACTION_SLTP; // тип торговой операции
                     request.position        = position_ticket;   // тикет позиции
                     request.symbol          = position_symbol;     // символ
                     request.sl              = NormalizeDouble(sl,digits);                // Stop Loss позиции
                     request.tp              = tp;                // Take Profit позиции
                     request.magic = Magic;

                     //--- вывод информации о модификации
                     PrintFormat("BreakEven POSITION_TYPE_SELL Modify #%I64d %s %s",position_ticket,position_symbol,EnumToString(type));
                     //--- отправка запроса
                     if(!OrderSend(request,result))
                        PrintFormat("BreakEven POSITION_TYPE_SELL OrderSend error %d",GetLastError());  // если отправить запрос не удалось, вывести код ошибки
                     //--- информация об операции
                     PrintFormat("BreakEven POSITION_TYPE_SELL retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
                  }

Si la línea de definición del stop en el nivel de precio abierto es la siguiente

double sl               = PositionGetDouble(POSITION_PRICE_OPEN);  // Stop Loss позиции

entonces ok, transfiere la parada sin problemas.

Pero cómo añado aquí para que no sea al precio de apertura, sino por debajo:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-SymbolInfoDouble(_Symbol,SYMBOL_POINT);  // Stop Loss позиции

o:

double sl               = PositionGetDouble(POSITION_PRICE_OPEN)-1.0;  // Stop Loss позиции (для РТС например и других фондовых штуковин)

Entonces, inmediatamente los problemas salen volando. Dice, son paradas equivocadas:

2020.07.29 13:06:24.127 Trades  '723763': failed modify #16003799 sell 1 RTS-9.20 sl: 126900, tp: 124470 -> sl: 126379, tp: 124470 [Invalid stops]

Aunque se pueden mover las manecillas y por debajo del tope. Por favor, aconséjeme cómo resolver este caso.

 

¡Buenos días a todos!


Soy un novato - acaba de conectarse a la "apertura" del corredor - instalado MT5 en mi iPhone, no se puede conectar a mi cuenta de operaciones. Mi iPhone requiere un certificado. Mi agente también me ha enviado el certificado. No sé cómo instalarlo en el iPhone. ¿Puede decirme cómo instalarlo? Gracias de antemano.

Archivos adjuntos:
 
Buenas tardes, ¿cómo se puede establecer una condición en OnTimer? ¿Se puede comparar Time[0] TimeCorrect?