Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 68

 
Implementazione rapida di multisimbolo OnTick

Forum sul trading, sistemi di trading automatico e test di strategia

Analisi dei risultati dei test e ottimizzazione in MetaTrader 5 strategy tester

fxsaber, 2018.01.28 12:25

Indicatore

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


Consulente esperto

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:
Implementazione rapida di un OnTick multisimbolo
Posso usarlo al posto di un timer? Vedere
 
Vladislav Andruschenko:
Posso usarlo al posto di un timer? Vediamo

Sì, OnInit sta sottoscrivendo i simboli da un array

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Sequenza di esecuzione di Init() e DeInit()

Slava, 2017.04.14 10:21

I servizi avranno OnTick(string symbol). Ma i tick di un particolare simbolo dovranno essere sottoscritti.
 

Forum sul trading, sistemi di trading automatico e test di strategia

Analisi dei risultati dei test e ottimizzazione in MetaTrader 5 strategy tester

fxsaber, 2018.01.29 15:24

La velocità dell'ottimizzazione dipende dalla sequenza dei passaggi. Se i passaggi a singolo carattere vanno per primi, seguiti da quelli a più simboli, il tempo di esecuzione sarà più breve che con la sequenza inversa dei passaggi di ottimizzazione.
Dopo l'ottimizzazione obbligatoria del codice MQL5 per aumentare le prestazioni, provate a risparmiare sul Cloud anche in questo modo.


ZS Probabilmente il 90% del denaro del cloud potrebbe essere risparmiato con una normale scrittura del codice. Ma questa è l'ultima cosa a cui pensano gli autori.

 
fxsaber:
Implementazione rapida di multisimbolo OnTick

Fico!!!
Questo funziona davvero anche senza i servizi tanto attesi.

Grazie mille!

Tuttavia, non importa quanto duramente ci abbia provato in MQL4, non ha funzionato. L'indicatore iCustom simula i messaggi dell'utente per circa 10 millisecondi dopo l'ultima richiesta iCustom e poi rimane "silenzioso".

 
Nikolai Semko:

su MQL4, non importa quanto duramente ci abbia provato, non ha funzionato. L'indicatore iCustom simula i messaggi dell'utente per circa 10 millisecondi dopo l'ultima richiesta iCustom e poi rimane "silenzioso".

In MT4 la durata delle "maniglie" degli indicatori è controllata dal terminale stesso. Pertanto, questa soluzione non è adatta.


Questo metodo è descritto più di sette anni fa.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
Quando gli ordini vengono inviati manualmente, OrderCheck viene sempre chiamato per primo. Se non viene passato, l'ordine di compravendita non viene inviato.
 
OnTradeTransaction permette di scrivere un Expert Advisor non di trading (Servizio) che controlla la presenza di un "clone" di trading dell'Expert Advisor in esecuzione sul conto. Queste situazioni a volte si verificano a causa di una disattenzione.
 
In MT5, anche quando si cancellano gli ordini, è necessario considerare le sue peculiarità. Esempio su SB.

Forum sul trading, sistemi di trading automatico e test di strategia

Consulenti esperti: 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());
  }
E, naturalmente, è consigliabile eseguire nuovamente il ciclo dopo OrderDelete.
 
fxsaber:
Implementazione rapida di multisimbolo OnTick
ci possono essere salti di tick
Motivazione: