Expert Advisors: Multicurrency Event-Handler OnTick(string symbol) - Seite 3

 

Mit Interesse wieder gelesen, hmmm.

Diese ganzen Tänze mit Tamburin wären nicht nötig!!! wenn!!! MQs die Übertragung des Glases auf dem DC-Server standardmäßig einschalten!!! und nicht zulassen würden, dass DCs sie ausschalten. Lassen Sie es eine leere Wette mit nur Bid und Ask sein, aber es sollte gesendet werden.

Dann kann ein Multicurrency-Tick leicht in OnBookEvent verfolgt werden, indem das gewünschte Instrument abonniert wird.

Tatsächlich ist OnBookEvent ein Standard-Mehrwährungs-Tick-Handler.

Und bis jetzt ist es nur in Dillings möglich, die das Glas übersetzen.

 
micle:

Der Code aus dem Artikel ist veraltet.

Ja, der Code wurde geschrieben, als der OnChartEvent-Handler noch nicht in der Testversion funktionierte.

Urain:

Mit Interesse wieder gelesen, hmmm.

Diese ganzen Tamburintänze wären nicht nötig!!! wenn!!! MQs das Beaker-Broadcasting auf dem DC-Server standardmäßig aktivieren und nicht abschalten lassen würden. Lassen Sie es eine leere Wette mit nur Bid und Ask sein, aber sie sollte übertragen werden.

Dann kann ein Multicurrency-Tick leicht in OnBookEvent verfolgt werden, indem man das gewünschte Instrument abonniert.

Tatsächlich ist OnBookEvent ein Standard-Mehrwährungs-Tick-Handler.

Und bis jetzt ist es nur in Dillings möglich, die das Glas übersetzen.

Ich habe einmal mit OnBookEvent gespielt. Für Experten, im Allgemeinen, würde es funktionieren. Allerdings würde ich das "Broadcasting" entfernen und ein Abonnement für Charts machen. Ein weiteres Minus: es funktioniert nicht in Indikatoren. Ich habe es nicht im Tester ausprobiert.

Seit den ersten Veröffentlichungen zu diesem Thema sind viele Tamburine getötet worden. Es ist etwas Annehmbareres erschienen. Vielleicht werde ich es irgendwann einmal veröffentlichen.

 
Lizar:

Ja, der Code wurde geschrieben, als der OnChartEvent-Handler in der Testversion noch nicht funktionierte.

Ich habe mit OnBookEvent gespielt. Für Experten, im Allgemeinen, wäre es in Ordnung sein. Allerdings würde ich das "Broadcasting" entfernen und ein Abonnement für Charts einrichten. Ein weiteres Minus: Es funktioniert nicht in Indikatoren. Ich habe es nicht im Tester ausprobiert.

Seit den ersten Veröffentlichungen zu diesem Thema sind viele Tamburine getötet worden. Es ist etwas Annehmbareres erschienen. Vielleicht werde ich es irgendwann einmal veröffentlichen.

Es gibt einen subtileren Weg, es gibt ein Abonnement nicht für Charts, sondern für bestimmte Expert Advisors.

Sie werden also die Signale des Charts ohne Abonnement nicht erhalten. Daher ist die Ausstrahlung durchaus qualitativ verarbeitet.

Lassen Sie die Eulen im Anhang auf zwei Charts laufen, die einen Stapel haben. Jede Eule empfängt nur das Signal, für das sie abonniert ist.

Dateien:
 

Hallo Lizar,

Ich möchte Ihren Code verwenden, aber mein Broker verwendet die Sprache mql4 (TradeMasterFX Meta, Version: 4.00 Build 890),

Gibt es eine Möglichkeit, mein Terminal auf ein mql5 unterstützendes Terminal zu aktualisieren?

Vielen Dank für Ihren Rat,

Emre

 
Konstantin Gruzdev:

Willkommen bei der Diskussion ;)

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Eigenschaften der Sprache mql5, Feinheiten und Techniken der Arbeit

Andrey Khatimlianskii, 2018.10.09 23:18

Wenn man einen leeren EA mit Spy auf 50 Instrumenten laufen lässt, fangen die Meldungen an, sich in das Log zu ergießen:

2018.10.09 22:49:24.730 Spy (AUDNZD,W1) indicator is too slow, 4281 ms. rewrite the indicator, please

Wenn Sie dem Indikator einen Filter für die Häufigkeit des Sendens von Kastum-Ereignissen in 500 ms hinzufügen, werden die Fehler weniger häufig, verschwinden aber nicht.

Liegt das nur an mir?


EA-Code:

#define  ForEach(index,array)   for(int index=0, max_##index=ArraySize(array);  index<max_##index;  index++)

string Symbols[];

int OnInit()
{
   ArrayResize( Symbols, SymbolsTotal(true) );

   ForEach( i, Symbols )
   {
      Symbols[i] = SymbolName(i,true);

      if( Symbols[i] != _Symbol )
         iCustom( Symbols[i], PERIOD_W1, "Spy.ex5", ChartID(), i );
   }
   return(INIT_SUCCEEDED);
}

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

void OnTick()
{
   CheckSignal( _Symbol );
}

void OnTickMS(const string &Symb)
{
   CheckSignal( Symb );
}

void CheckSignal(const string symbol)
{
   //Kommentar( Symbol, ": ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_BID ), 5 ), " / ",
   // DoubleToString( SymbolInfoDouble( symbol, SYMBOL_ASK ), 5 )) );
   return;
}


Profiler zeigt 95% der Zeit iCustom, OnChartEvent nimmt fast nichts. Der Prozessor (i5-3570) ist zu 75% ausgelastet.


Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.09.21
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Andrey Khatimlianskii:

Ich lade zur Diskussion ein ;)


Es gibt einen Vorschlag zu versuchen, IndicatorRelease() und IndicatorDelete () eine angemessene Anzahl von Zeiten in OnDeinit() Ihres EA zu verwenden.
 
nra_:
Ich habe einen Vorschlag, um zu versuchen, IndicatorRelease() und IndicatorDelete () die entsprechende Anzahl von Zeiten in OnDeinit() von Ihrem EA zu verwenden.

Es sollte nicht zu OnDeinit kommen, ich brauche das alles, um zu funktionieren.

Nach dem Löschen des EA ist alles in Ordnung, der Speicher wird nach einiger Zeit freigegeben.

 
Andrey Khatimlianskii:

Es muss nicht auf OnDeinit hinauslaufen, ich brauche alles, damit es funktioniert.

Nach dem Löschen des Expert Advisors ist alles in Ordnung, der Speicher ist nach einiger Zeit wieder frei.

Ich schlage ein Profiling des Indikators vor, um herauszufinden, wo genau 4281 ms verschwendet werden. Vielleicht beim Senden der Nachricht selbst.

 
Stanislav Korotky:

Es ist sinnvoll, ein Profil des Indikators zu erstellen, um herauszufinden, wo genau 4281 ms verschwendet werden. Es könnte beim Senden der Nachricht selbst liegen.

Wir haben esgetan.

EventChartCustom beginnt irgendwann, länger als 3 Sekunden zu laufen.

 
Ich weiß, dass OnDeinit im EA nicht zu OnDeinit kommen sollte, aber dies ist ideal. Sind Sie sicher, dass während 15 Stunden Ihres Tests OnInit 1 Mal im Expert Advisor aufgerufen wurde?