Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 863

 

Igor Makanu: Natürlich nicht zum Thema. Hier ist eine kleine Idee zu Ihrem Code. Wenn Sie ein Array verwenden, können Sie eine unbegrenzte Anzahl von Intervallen festlegen.

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

Igor Makanu: Natürlich nicht zum Thema gehörend. Hier ist eine kleine Idee zu Ihrem Code. Wenn Sie ein Array verwenden, können Sie eine unbegrenzte Anzahl von Intervallen definieren.

Warum ist das kein Thema? - Das Thema ist technisch, und ich werde jede Diskussion über technische Fragen unterstützen.


Natürlich können Sie ein Array der Ex-Klasse verwenden. Ich habe meine Klasse ein paar Mal überprüft - alles scheint korrekt zu funktionieren, Sie können ein Intervall für jede Minute festlegen und nach jedem TS handeln ;)


Die Idee der Schaffung dieser Art und Weise, um die Zeit des Handels zu mir mehr wie String zu datetime zu analysieren, und die Bedeutung meines Codes - einmal am Tag, um den Beginn und das Ende des Handels als datetime zählen, bis ein neuer Tag nicht sinnvoll, diese Intervalle neu zu berechnen, kam es einen neuen Tag - neu berechnen alles wieder in datetime, und Vergleich zwischen datetime, muss es sehr schnell auftreten, dh, wird nicht das Terminal (Tester) zu laden


Seric29:

Warum funktioniert dieser Code nicht?

Vielleicht sollte eine Klasse durch einen Doppelpunkt beschrieben werden ::? Die Idee, einen Zeiger zu erstellen, der auf einen anderen Zeiger zeigt.

Sie haben Syntaxfehler, es sollte so aussehen:

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

Hallo!

Nochmals vielen Dank anAlexey Viktorov für den Tipp mit den Zitaten - alles funktioniert. An diesem Montag haben wir die Situation, dass die Deutschen gehandelt haben, während die Engländer einen freien Tag haben. Es stellte sich heraus, dass in der Bedingung für die Eröffnung der Euro-Position alte Werte des Pfunds verwendet wurden. Daher die Frage: Wie kann man im Code überprüfen, ob beide Symbole an diesem Tag gehandelt werden?

Ich danke Ihnen.

Tut mir leid, ich bin heute zu faul, die Dokumentation zu lesen. Und die Speicherchips sind längst fast alle durchgebrannt, es gibt nur noch Sklerose und Marasmus.

 
Alexey Viktorov:

Tut mir leid, ich bin heute zu faul, die Dokumentation zu lesen. Und die Speicherchips sind schon längst fast alle durchgebrannt. Alles, was übrig ist, ist Sklerose.

Nun, ich bin noch nicht faul, auch wenn ich genug von meiner eigenen Idiotie habe. Aber wo soll man lesen? Ich konnte es nicht finden. Meine Augen sind durch den Computer völlig verwirrt.

 
novichok2018:

Nun, ich bin noch nicht faul, auch wenn ich genug von meiner eigenen Idiotie habe. Aber wo soll man lesen? Ich konnte es nicht finden. Meine Augen sind durch den Computer verwirrt.

Aus der Dokumentation

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) kann in folgenden Fällen false zurückgeben

  • keine Verbindung zum Handelsserver. Kann mit TerminalInfoInteger(TERMINAL_CONNECTED)) überprüft werden;
  • das Handelskonto wurde in den Nur-Lese-Modus versetzt (ins Archiv gesendet);
  • Der Handel mit dem Konto wurde auf der Handelsserverseite verboten;
  • die Verbindung zum Handelskonto im Anlegermodus hergestellt wurde.

Und wenn das nicht der Fall ist, suchen Sie nach anderen Möglichkeiten.

 
Alexey Viktorov:

Aus der Dokumentation.

Und wenn es nicht ganz so ist, suchen Sie nach anderen Möglichkeiten.

Leider ist das nicht der Fall. Der Handel auf dem Konto ist nicht verboten - wir handeln mit Euro, aber nicht mit dem Pfund. Daher müssen wir den Handel mit einem bestimmten Symbol überprüfen. Vielleicht ist jemandem so etwas schon einmal passiert, oder er weiß, wie man das Problem lösen kann. Ich finde es weder in den Foren noch bei Google.

 
novichok2018:

Leider ist das nicht der Fall. Der Handel auf dem Konto ist nicht verboten - wir handeln mit Euro, aber nicht mit dem Pfund. Ich muss also den Handel mit einem bestimmten Symbol überprüfen. Vielleicht ist jemandem so etwas schon einmal passiert, oder er weiß, wie man das Problem lösen kann. Ich habe es noch nicht in den Foren oder bei Google gefunden.

In der Dokumentation finden Sie weitere Funktionen

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

Nachmittags.

In MT4 wird der in den Einstellungen des TrendLine-Objekts im Feld "Beschreibung" angegebene Text auf der linken Seite des Trends (am linken Ende) angezeigt. Vielleicht hat jemand eine fertige Lösung, wie man den Text am rechten Ende anzeigt?

 
Taras Slobodyanik:

Es gibt noch weitere Funktionen in der Dokumentation

Ich habe es ausprobiert.

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

Dasgilt auch für Montag, den 27., obwohl das ein Feiertag in England war.

 
novichok2018:

Ich habe es ausprobiert.

Am Montag, dem 27. Mai, ist eswahr, auch wenn das in England ein Feiertag war.

Müssen Sie also einen Feiertag oder ein Handelsverbot festlegen?
Am 27. wurde der Handel zugelassen.

Wenn es ein Wochenende ist, brauchen Sie einen Nachrichtenparser, um Feiertage/Wochenenden zu erkennen.

Grund der Beschwerde: