Caractéristiques du langage mql5, subtilités et techniques - page 68

 
Implémentation rapide du multisymbole OnTick

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Analyse des résultats des tests et optimisation dans le testeur de stratégie MetaTrader 5

fxsaber, 2018.01.28 12:25

Indicateur

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


Conseiller expert

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:
Implémentation rapide d'un OnTick multisymbole
Puis-je l'utiliser à la place d'un minuteur ? Voir
 
Vladislav Andruschenko:
Puis-je l'utiliser à la place d'un minuteur ? Voyons voir.

Oui, OnInit s'abonne aux symboles d'un tableau.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Séquence d'exécution de Init() et DeInit()

Slava, 2017.04.14 10:21

Les services auront OnTick(string symbol). Mais il faudra s'abonner aux ticks d'un symbole particulier.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Analyse des résultats des tests et optimisation dans le testeur de stratégie MetaTrader 5

fxsaber, 2018.01.29 15:24

La vitesse de l'optimisation dépend de la séquence des passages. Si les passes à un seul caractère passent en premier, suivies des passes à plusieurs symboles, le temps d'exécution sera plus court qu'avec la séquence inverse de passes d'optimisation.
Après l'optimisation obligatoire du code MQL5 pour augmenter les performances, essayez également d'économiser sur le Cloud de cette manière.


ZS Probablement 90% de l'argent du cloud pourrait être économisé par une écriture normale du code. Mais c'est la dernière chose à laquelle les auteurs pensent.

 
fxsaber:
Implémentation rapide du multisymbole OnTick

Cool ! !!
Cela fonctionne vraiment, même sans les services tant attendus.

Merci beaucoup !

Cependant, j'ai eu beau essayer dans MQL4, cela n'a pas fonctionné. L'indicateur iCustom simule les messages de l'utilisateur pendant environ 10 millisecondes après la dernière demande iCustom et reste "silencieux" après cela.

Dossiers :
 
Nikolai Semko:

sur MQL4, j'ai eu beau essayer, ça n'a pas marché. L'indicateur iCustom simule les messages de l'utilisateur pendant environ 10 millisecondes après la dernière demande iCustom et reste "silencieux" après cela.

Dans MT4, la durée de vie des indicateurs "handles" est contrôlée par le terminal lui-même. Cette solution n'est donc pas adaptée.


Cette méthode est décrite il y a plus de sept ans.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
Lorsque les commandes sont envoyées manuellement, OrderCheck est toujours appelé en premier. S'il n'est pas passé, l'ordre de transaction n'est pas envoyé.
 
OnTradeTransaction vous permet d'écrire un conseiller expert non commercial (service) qui surveille la présence d'un "clone" commercial du conseiller expert exécuté sur le compte. De telles situations se produisent parfois en raison d'un manque d'attention.
 
Dans MT5, même lorsque vous supprimez des ordres, vous devez tenir compte de ses particularités. Exemple sur SB.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Expert Advisors : 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());
  }
Et, bien sûr, il est conseillé de relancer le cycle après OrderDelete.
 
fxsaber:
Implémentation rapide du multisymbole OnTick
il peut y avoir des sauts de coche