Merkmale der Sprache mql4, Feinheiten und Techniken - Seite 19

 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Bibliotheken: Experte

fxsaber, 2019.06.04 16:40

// MT4-советник показывает, в каком режиме Long/Short был запущен.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
  MqlParam Params[];
  string Names[];
  
  const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
  return(((Res & 3) << 1) + (Res & 1));
}

string LongShortToString( const int Chart_ID = 0 )
{
  const int Flag = GetLongShortFlag(Chart_ID);
  string Str = NULL;
  
  if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY) && (bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Long & Short";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_LONGONLY))
    Str = "Only Long";
  else if ((bool)(Flag & SYMBOL_TRADE_MODE_SHORTONLY))
    Str = "Only Short";
    
  return(Str);
}

int OnInit()
{
  Alert(LongShortToString());
  
  return(INIT_FAILED);
}


Alternative

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen, die Neulinge zu MQL4 und MQL5 haben, Hilfe und Diskussion über Algorithmen und Codes

fxsaber, 2019.06.04 19:40

string LongShortToString2()
{
  string Str = "Long & Short";

  if (OrderSend(_Symbol, OP_BUY, 1, 0, 0, 0, 0) && (GetLastError() == ERR_LONGS_NOT_ALLOWED))
    Str = "Only Short";
  else if (OrderSend(_Symbol, OP_SELL, 1, 0, 0, 0, 0) && (GetLastError() == ERR_SHORTS_NOT_ALLOWED))
    Str = "Only Long";
    
  return(Str);
}


Das wird nicht immer funktionieren, aber meistens reicht es aus.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes" verschoben.
 

Die Aufgabe bestand darin, mit möglichst wenig Aufwand alle Ticks (ohne Verluste) aus der Market Watch zu retten.

Ich habe ein Loader-Skript geschrieben, das für jedes Symbol einen Chart öffnet und den Indikator-Collector darauf laufen lässt.

Der ganze Trick besteht darin, den Indikator durch das Laden einer solchen tpl-Datei laufen zu lassen (vollständig angegeben)

<chart>
<window>
<indicator>
name=Custom Indicator
<expert>
name=HistoryTicks_OnlySave
</expert>
</indicator>
</window>
</chart>

Das ist gut, weil es keine Bars gibt. Daher werden keine Ressourcen für sie ausgegeben.

Am Ende des Tages sind es 60 Karten. Die gleiche Anzahl von Indikatoren. Es werden ~500Kb Ticks pro Minute geschrieben.

RAM ~450Mb, CPU ~3-8% (8 HyperThreading).


Wenn Sie so etwas tun möchten, empfehle ich Ihnen, Expert Advisor zu verwenden, der die Häufigkeit der Datenänderungen in Market Watch verfolgt. Mein EA aktualisiert sich nicht länger als drei Sekunden und ist dann gezwungen, sich neu anzumelden. Die Sache ist die, dass MT4 (und auch MT5) sich bei Netzwerkproblemen nach 10-15 Sekunden, manchmal sogar bis zu einer Minute, neu einloggen kann. Erst dann erfolgt die Neuanmeldung selbst. Um in diesen 10-15 Sekunden oder sogar einer Minute keine Ticks zu verlieren, empfehle ich, die Aufgabe der Wiederverbindung zu übernehmen. Das Gleiche gilt für Terminals mit Kampf-TKs.

 
fxsaber:

Die Herausforderung besteht darin, mit möglichst wenig Aufwand alle Ticks (ohne Verluste) aus dem Market Watch zu speichern.

Ist sie verlustfrei? Dieser Mythos wurde bereits ausgeräumt.

 
Andrey Khatimlianskii:

Also keine Verluste? Ich denke, dieser Mythos wurde bereits ausgeräumt.

Ich weiß nicht mehr genau, wie ich mich davon überzeugt habe. Ich weiß, dass ich die gesammelte Historie in MT4 mit der beim Broker verglichen habe. Ich habe eine 100%ige Übereinstimmung.

Ich verwende die HistoryTicks-Lösung von QB. Wenn ich das Ergebnis des virtuellen Testers auf gesammelte Ticks und das Ergebnis des MT5-Testers auf heruntergeladene Ticks vergleiche - 100% Übereinstimmung.

Probleme können nur auf die Konnektivität zurückzuführen sein. Expert Advisors fehlen natürlich. Indikatoren tun dies nicht.

 
fxsaber:

Ich weiß nicht mehr genau, wie ich mich davon überzeugt habe. Ich weiß, dass ich die gesammelte Historie in MT4 mit der beim Broker verglichen habe. Es gab eine 100%ige Übereinstimmung.

Ich verwende die HistoryTicks-Lösung von QB. Wenn ich das Ergebnis des virtuellen Testers mit den gesammelten Ticks und das Ergebnis des MT5-Testers mit den heruntergeladenen Ticks vergleiche, besteht eine 100%ige Übereinstimmung.

Probleme können nur auf die Konnektivität zurückzuführen sein. Expert Advisors fehlen natürlich. Indikatoren tun dies nicht.

Ich habe gerade über Ihre Exposition gesprochen:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Fehler, Irrtümer, Fragen

fxsaber, 2018.02.26 09:05

Bei einem Paket von drei Ticks wird das Ereignis Calculate dreimal aufgerufen, aber SymbolInfoTick gibt bei jedem dieser drei Aufrufe den letzten Tick zurück. D.h. das sogenannte Sammeln von Ticks ohne Durchlaufen von Indikatoren ist gelinde gesagt fragwürdig.


Hat sich etwas geändert?

 
Andrey Khatimlianskii:

Ich habe gerade über Ihre Exposition gesprochen:

Hat sich etwas geändert?

Bei der Arbeit mit CopyTicks wurden die Ergebnisse der Tick-Sammlung mit denen von CopyTicks verglichen.

Ich erinnere mich nicht mehr genau, aber ich glaube, es gab ein Spiel.

Wir müssen CustomTicksAdd verwenden, um einen Stapel von Zecken hinzuzufügen und ihn zu betrachten. Aber es ist MT5.


Für MT4 kann dies auf diese Weise überprüft werden. Zwei benachbarte aufgezeichnete Zecken sollten immer unterschiedlich sein. Und die Tickvolumina der Balken auf dem Server sollten mit den Balken der gesammelten Ticks übereinstimmen.

Im Jahr 2018 muss ich etwas Gescheites gewusst haben. Ich weiß es nicht mehr.

 
fxsaber:

Ich weiß nicht mehr genau, wie ich mich davon überzeugt habe. Ich weiß, dass ich die gesammelte Historie in MT4 mit der beim Broker verglichen habe. Es gab eine 100%ige Übereinstimmung.

Ich verwende die HistoryTicks-Lösung von QB. Wenn ich das Ergebnis des virtuellen Testers mit den gesammelten Ticks und das Ergebnis des MT5-Testers mit den heruntergeladenen Ticks vergleiche, besteht eine 100%ige Übereinstimmung.

Probleme können nur auf die Konnektivität zurückzuführen sein. Expert Advisors fehlen natürlich. Indikatoren tun dies nicht.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Einen Berater mit der Erfassung der Zeckenhistorie beauftragen

zenz, 2018.03.07 11:10

Ich habe den Vergleich bereits im September durchgeführt. Das Alpari-Archiv hat eine einwöchige Veröffentlichungsfrist, wenn ich also den aktuellen Vergleich durchführe, werde ich ihn nicht vor nächster Woche erhalten (und ich sehe keinen Sinn darin - ich habe es bereits selbst herausgefunden).

Hier sind also zwei Screenshots vom 22.09.2017. Das Terminal wurde auf einem leeren Computer ausgeführt, mit dem einzigen Indikator, der das Protokoll schrieb. Betriebssystem XP SP3, Terminalversion MT4 build 1090. Alpari Pro-ECN Real-Konto.



Links ist das Bild aus dem Alpari-Archiv zu sehen, rechts die vom Indikator aufgezeichneten Ticks.

Hier können Sie feststellen, dass die Ticks vor 17 Sekunden und danach (16 und 18 Sekunden) vollständig übereinstimmen, d.h. in diesem Fall handelt es sich nicht um eine Desynchronisation der Zeit. Ich wiederhole, dass nicht nur innerhalb einer Sekunde die Ticks überspringen - also nicht nur die schnellen Ticks - sondern auch die "langsamen" verschluckt werden. Ich habe dabei keine Systematik gefunden.

Erklärung: Rechts vom Punkt nach den Sekunden im Alpari-Archiv stehen keine Meilen oder Mikrosekunden, sondern die Anzahl der Ticks - aus irgendeinem Grund wird das so gemacht.

Hier ist der Link zu diesem Thema:https://www.mql5.com/ru/forum/229889/page4#comment_6741502 Ich glaube nicht, dass sich seither in MT4 etwas geändert hat, obwohl ich es nicht mehr überprüft habe, aber ich gehe davon aus, dass sowohl Indikatoren als auch EAs in MT4 Ticks vermissen.

Дайте советник для сбора тиковой истории
Дайте советник для сбора тиковой истории
  • 2018.03.07
  • www.mql5.com
Дайте готовый советник для записи тиков в csv файл...
 
zenz:

Hier ist der Link zu diesem Thema:https://www.mql5.com/ru/forum/229889/page4#comment_6741502. Ich glaube nicht, dass sich seither in MT4 etwas geändert hat, obwohl ich es nicht mehr überprüft habe, aber ich gehe davon aus, dass sowohl Indikatoren als auch EAs in MT4 Ticks vermissen.

Es besteht keine Gewissheit, dass auf der Seite des Handelsservers diese "verpassten" Ticks gesendet wurden.

 
fxsaber:

Es besteht keine Gewissheit, dass auf der Seite des Handelsservers diese "verpassten" Ticks gesendet wurden.

Ich habe auch darüber nachgedacht, ich stimme zu. Ich habe damals nur recherchiert und festgestellt, dass die Diskrepanzen nicht vereinzelt auftraten, sondern immer wieder auftraten - also habe ich es gelassen.