Características del lenguaje mql5, sutilezas y técnicas - página 68

 
Implementación rápida de OnTick multisímbolo

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Análisis de los resultados de las pruebas y optimización en el probador de estrategias de MetaTrader 5

fxsaber, 2018.01.28 12:25

Indicador

#property indicator_chart_window
#property indicator_plots 0

input long Chart = 0; // идентификатор графика-получателя события
input int Index = 0;

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  if (prev_calculated)
    EventChartCustom(Chart, 0, Index, 0, NULL);
  
  return(rates_total);
}


Asesor experto

input int AmountSymbols = 1;

const string Symbols[] = {"EURUSD", "GBPUSD", "AUDUSD", "USDJPY", "USDCAD"};

void OnInit()
{
  for (int i = 0; i < AmountSymbols; i++)
    if (Symbols[i] != _Symbol)
      iCustom(Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i); // MQL5\Indicators\Spy.ex5
}

void OnTick()
{
  OnTick(_Symbol); 
}

void OnChartEvent( const int id, const long &lparam, const double&, const string& )
{
  if (id == CHARTEVENT_CUSTOM)
    OnTick(Symbols[(int)lparam]);
}

// Мультисимвольный OnTick
void OnTick( const string &Symb )
{
}
 
fxsaber:
Implementación rápida de un OnTick multisímbolo
¿Puedo utilizarlo en lugar de un temporizador? Ver
 
Vladislav Andruschenko:
¿Puedo utilizarlo en lugar de un temporizador? Veamos

Sí, OnInit se suscribe a los símbolos de un array

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Secuencia de ejecución de Init() y DeInit()

Slava, 2017.04.14 10:21

Los servicios tendrán OnTick(string symbol). Pero habrá que suscribir los ticks de un determinado símbolo.
 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Análisis de los resultados de las pruebas y optimización en el probador de estrategias de MetaTrader 5

fxsaber, 2018.01.29 15:24

La velocidad de la optimización depende de la secuencia de pases. Si los pases de un solo carácter van primero, seguidos de los pases multisímbolos, el tiempo de ejecución será más corto que con la secuencia inversa de pases de optimización.
Después de la obligatoria optimización del código MQL5 para aumentar el rendimiento, intente ahorrar en la nube también de esta manera.


ZS Probablemente el 90% del dinero de la nube podría ahorrarse escribiendo el código normal. Pero eso es lo último en lo que piensan los autores.

 
fxsaber:
Implementación rápida de OnTick multisímbolo

¡Genial!
Esto realmente funciona incluso sin los tan esperados servicios.

¡Muchas gracias!

Sin embargo, por más que lo intenté en MQL4, no funcionó. El indicador iCustom simula los mensajes del usuario durante unos 10 milisegundos después de la última solicitud de iCustom y se mantiene "en silencio" después de eso.

Archivos adjuntos:
 
Nikolai Semko:

en MQL4, por más que lo intenté, no funcionó. El indicador iCustom simula los mensajes del usuario durante unos 10 milisegundos después de la última solicitud de iCustom y se mantiene "en silencio" después de eso.

En MT4 la duración de las "asas" de los indicadores es controlada por el propio Terminal. Por lo tanto, esta solución no es adecuada.


Este método se describió hace más de siete años.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
Cuando los pedidos se envían manualmente, siempre se llama primero a OrderCheck. Si no se pasa, la orden de comercio no se envía.
 
OnTradeTransaction le permite escribir un Asesor Experto no comercial (Servicio) que controla la presencia de un "clon" comercial del Asesor Experto que se ejecuta en la cuenta. Estas situaciones se producen a veces por falta de atención.
 
En MT5, incluso al borrar órdenes, hay que tener en cuenta sus peculiaridades. Ejemplo en SB.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Asesores Expertos: VR---ZVER v.2

fxsaber, 2018.02.06 11:29

void DeleteAllOrders()
  {
   for(int i=OrdersTotal()-1;i>=0;i--)
      if(m_order.SelectByIndex(i) && (m_order.State() == ORDER_STATE_PLACED))
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==m_magic)
            m_trade.OrderDelete(m_order.Ticket());
  }
Y, por supuesto, es aconsejable volver a ejecutar el ciclo después de OrderDelete.
 
fxsaber:
Implementación rápida de OnTick multisímbolo
puede haber saltos de garrapatas