Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 93

 
seny:

Por favor, ayuda, aquí hay un ejemplo

Funciona así...

pero no así...

¿cómo escribo en el buffer a través de la variable k?

doble k=0;
 
Alekseu Fedotov:
doble k=0;

No ayuda! ni en el cuerpo del código, ni en la inicialización, ni en el inicio...

 
seny:

funciona así... y no así...

Para entender, hay que simplificar. Compara dos expresiones: 100/10/10 = 1 y k=10/10 100/k = 100 pero si k=10*10, entonces es correcto

 
Saludos. ¿Podría decirme cómo hacer que la línea de tiempo se extienda hacia el futuro cuando el desplazamiento de la línea de tiempo está activado?
 
Andrey Sokolov:
Saludos. ¿Podría decirme cómo ampliar la línea de tiempo para el futuro cuando el desplazamiento del gráfico está activado?

No se puede. Las líneas verticales sólo puedes dibujarlas tú mismo: muestran la hora en la parte inferior.

 

Hola. Me pueden decir cómo escribir una condición por la cual: si una orden abierta cerró en TakeProfit - eliminar todas las órdenes de mercado restantes; si no (cerró en Stop Loss) - colocar la misma orden exacta (con el mismo Stop Loss y Take Profit) como una orden pendiente.

 
6737998:

Hola. Me pueden decir cómo escribir una condición por la cual: si una orden abierta cerró con un take profit - eliminar todas las órdenes de mercado restantes; si no (cerró con stoploss) - poner la misma orden exacta (con el mismo stoploss y take profit) como una orden pendiente.


Te lo dije en otro hilo: trabaja con la historia y escribe los operadores que necesitas para hacerlo.

 

O puede escribir un artículo en la sección "Artículos" sobre algún fenómeno del mercado de divisas,
y en la parte inferior del artículo coloca un anuncio de un indicador de pago del mercado, un indicador que puede utilizarse para investigar este fenómeno. ?

 

Hola a todos, he encontrado un problema...

La tarea consiste en cambiar interactivamente un EA en un gráfico. No estoy considerando una opción con varios gráficos y varios EAs.

Conozco el uso de ChartApplyTemplate y funciona, pero a veces devuelve una respuesta falsa (en la respuesta constante del bucle) alegando que no puede poner un comando en la cola.

¿Qué es esta cola, dónde puedo leer sobre ella o cómo puedo despejar esta cola, ya que mi tarea debe tener prioridad sobre todas las demás?

Gracias de antemano.

PD: Esto no ocurre con el cambio manual de la plantilla. Tal vez entonces a través de winAPI intentar... necesito investigar, no he trabajado con esto

ChartApplyTemplate - Chart Operations - MQL4 Reference
ChartApplyTemplate - Chart Operations - MQL4 Reference
  • docs.mql4.com
ChartApplyTemplate - Chart Operations - MQL4 Reference
 
Vasili Taucci:

Hola a todos, he encontrado un problema...

La tarea consiste en cambiar interactivamente un EA en un gráfico. No estoy considerando una opción con varios gráficos y varios EAs.

Conozco el uso de ChartApplyTemplate y funciona, pero a veces devuelve una respuesta falsa alegando que no puede colocar un comando en la cola.

¿Qué es esta cola, dónde puedo leer sobre ella o cómo puedo despejar esta cola, ya que mi tarea debe tener prioridad sobre todas las demás?

Gracias de antemano.

PD: Esto no ocurre con el cambio manual de la plantilla. Tal vez entonces a través de winAPI intentar... Hay que investigar, no he trabajado con eso

Echa un vistazo a esto. Es para MT5, pero el principio es completamente similar para MT4. Cuando se utiliza ChartApplyTemplate se necesita una sincronización obligatoria, que hago en el ticket de la siguiente manera

  static bool TemplateApply( const long Chart_ID, const string &Str, const bool Sync = true )
  {
    string TmpStr = Str;

    const bool SyncFlag = (Sync && Chart_ID && (Chart_ID != ::ChartID()) && !::IsStopped());

    if (SyncFlag)
    {
      const color ColorStopLevel = (color)::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL);

      if ((bool)(ColorStopLevel >> 24))
        ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, ColorStopLevel & 0xFFFFFF);

      const int NewColorStopLevel = (int)EXPERT::StringBetween(TmpStr, EXPERT_STOPLEVEL, STRING_END) | (0x01 << 24);

      TmpStr = Str;
      EXPERT::StringReplace(TmpStr, EXPERT_STOPLEVEL, STRING_END, EXPERT_STOPLEVEL + (string)NewColorStopLevel + STRING_END);
    }

    short Data[];
    const bool Res = ::StringToShortArray(TmpStr, Data, 0, ::StringLen(TmpStr)) &&
                     ::FileSave(FILENAME, Data) && ::ChartApplyTemplate((ulong)Chart_ID, FILENAME);

    if (Res && SyncFlag)
    {
      long Value;

      while ((!::IsStopped() && ::ChartGetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, 0, Value) && (!(bool)((int)Value >> 24))))
        ::Sleep(0);

      ::ChartSetInteger(Chart_ID, CHART_COLOR_STOP_LEVEL, (int)Value & 0xFFFFFF);
    }

    return(Res);
  }
Expert
Expert
  • votos: 12
  • 2017.08.28
  • fxsaber
  • www.mql5.com
Библиотека чтения/записи параметров произвольных советников.
Razón de la queja: