Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 68

 
Schnelle Implementierung von Multisymbol OnTick

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Analyse der Testergebnisse und Optimierung im MetaTrader 5 Strategie-Tester

fxsaber, 2018.01.28 12:25

Indikator

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


Expert Advisor

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:
Schnelle Implementierung eines Multisymbols OnTick
Kann ich sie anstelle einer Zeitschaltuhr verwenden? Siehe
 
Vladislav Andruschenko:
Kann ich sie anstelle einer Zeitschaltuhr verwenden? Schauen wir mal

Ja, OnInit abonniert Symbole aus einem Array

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Init() und DeInit() Ausführungsreihenfolge

Slawa, 2017.04.14 10:21

Dienste werden OnTick(string symbol) haben. Aber die Ticks eines bestimmten Symbols müssen abonniert werden.
 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Analyse der Testergebnisse und Optimierung im MetaTrader 5 Strategie-Tester

fxsaber, 2018.01.29 15:24

Die Geschwindigkeit der Optimierung hängt von der Reihenfolge der Durchläufe ab. Wenn zuerst Einzelbuchstaben-Durchläufe und dann Durchläufe mit mehreren Symbolen erfolgen, ist die Ausführungszeit kürzer als bei der umgekehrten Reihenfolge der Optimierungsdurchläufe.
Nach der obligatorischen MQL5-Code-Optimierung zur Steigerung der Leistung versuchen Sie, auch auf diese Weise in der Cloud zu sparen.


ZS Wahrscheinlich könnten 90 % der Kosten für die Cloud durch normales Schreiben von Code eingespart werden. Aber das ist das Letzte, woran die Autoren denken.

 
fxsaber:
Schnelle Implementierung von Multisymbol OnTick

Cool!!!
Das funktioniert auch ohne die lang ersehnten Dienste.

Herzlichen Dank!

Aber egal, wie sehr ich mich in MQL4 bemühte, es funktionierte nicht. Der iCustom-Indikator simuliert die Nutzermeldungen für etwa 10 Millisekunden nach der letzten iCustom-Anfrage und bleibt danach "stumm".

Dateien:
 
Nikolai Semko:

auf MQL4, egal wie sehr ich es versuchte, es funktionierte nicht. Der iCustom-Indikator simuliert die Nutzermeldungen für etwa 10 Millisekunden nach der letzten iCustom-Anfrage und bleibt danach "stumm".

In MT4 wird die Lebensdauer der Indikator-"Griffe" vom Terminal selbst gesteuert. Daher ist diese Lösung nicht geeignet.


Diese Methode wurde vor mehr als sieben Jahren beschrieben.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
Beim manuellen Versand von Aufträgen wird immer zuerst OrderCheck aufgerufen. Wird sie nicht überschritten, wird der Handelsauftrag nicht gesendet.
 
OnTradeTransaction ermöglicht es Ihnen, einen nicht handelsbezogenen Expert Advisor (Service) zu schreiben, der das Vorhandensein eines handelsbezogenen "Klons" des Expert Advisors, der auf dem Konto läuft, überwacht. Solche Situationen entstehen manchmal durch Unachtsamkeit.
 
Im MT5 müssen Sie auch beim Löschen von Aufträgen dessen Besonderheiten beachten. Beispiel auf SB.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Experten-Ratgeber: 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());
  }
Und natürlich ist es ratsam, den Zyklus nach OrderDelete erneut zu starten.
 
fxsaber:
Schnelle Implementierung von Multisymbol OnTick
es kann zu Tick-Sprüngen kommen