Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1238

 
Alexey Viktorov:

Und der erste Teil der Zeile und die Frage als Ganzes?

Nun, wir sind Programmierer. Volle und leere Gläser auf dem Nachttisch und so weiter...

Ich habe jedoch drei mögliche Szenarien und deren Ablauf in den Hauptindikatorberechnungszyklus aufgenommen:

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Artyom Trishkin, 2020.08.06 15:17

rates_total - prev_calculates ist ein sehr effizienter Algorithmus.

  • Wenn er gleich Null ist, bedeutet dies, dass die Berechnung für den aktuellen Balken durch den Tick erfolgt.
  • Wenn er gleich 1 ist, bedeutet dies , dass es einen neuen Balken gibt und zwei Balken berechnet werden - der vorherige und der aktuelle
  • Ist der Wert größer als 1, bedeutet dies entweder den ersten Lauf oder eine Änderung in den Verlaufsdaten
Wir berechnen den Grenzwert. Und in der Schleife von Grenzwert bis größer oder gleich Null berechnen wir die Indikatordaten. Und berechnen Sie, wie hoch die Grenze ist, wenn Sie die Grenze berechnen = rates_total - prev_calculates.

Die vierte Situation - unter Null - ist durchaus möglich. Aber es wird einfach nicht in der Schleife verarbeitet, die for(int i=limit; i>=0; i--) ...

Nur wenige Menschen wollen darüber nachdenken, und in der Regel wird einfach kopiert und eingefügt. Dementsprechend sind der erste Start und die Änderung der Historie, wenn limit>1, so sollten wir über den ersten Start in einer solchen Situation zu schreiben und nicht prüfen prev_calculated für Null.

 
Сергей Таболин:

Alexej, ich bin interessiert )))) Aber ich sehe den Fehler nicht! Und es ist keine Schande, zu lernen. Und wenn jemand klüger oder erfahrener ist, sehe ich auch nichts Falsches daran.

Ich habe den Indikator gerade mit einem großen Eingabeparameter für die Größe einer Kerze ausgeführt. Ich möchte kleinere Kerzenständer haben.

Alle Preise für die Candlesticks werden aus Indikatorpuffern berechnet und initialisiert. Alles ist korrekt. Aber es gab keine Rendering. Ich verstehe nicht, warum.

Ich schlug vor, dass Sie

Alexey Viktorov:

........., um mit der Auswahl von Takten nach einer Zahl N oder mindestens einem letzten geschlossenen Takt zu beginnen. Haben Sie es ausprobiert? Wird es gerendert?

Und auch hier schlage ich vor, dass Sie zunächst mindestens einen letzten geschlossenen Balken auswählen. Wenn Sie ein positives Ergebnis erhalten, fahren Sie erst dann mit den Berechnungen und Bedingungen fort.

 
Alexey Viktorov:

Ich habe Ihnen vorgeschlagen

und ich schlage vor, dass Sie damit beginnen, mindestens eine letzte geschlossene Bar auszusuchen. Wenn Sie ein positives Ergebnis erhalten, gehen Sie erst dann zu den Berechnungen und Bedingungen über.

Ich fürchte, ich verstehe Sie nicht... Welchen Balken schlagen Sie vor, zuzuweisen? Die, die ich gebildet habe? Oder auf der Karte?

Wenn es in der Karte steht, brauche ich sie nicht von vornherein. Der Indikator wird in jedem Zeitrahmen als gleichwertig angesehen.

Die vorherige Berechnung wurde auf H1 durchgeführt, jetzt auf H4. Das Ergebnis ist das gleiche.

2020.08.08 11:06:14.580 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора.
2020.08.08 11:06:14.789 newCandles (USDJPY,H4)  2019.01.02 06:00:00 >>> Свеча 00000 >> open = 109.419 hihg = 109.462 low = 105.388 close = 105.388 > Сформирована за 122162 тика.
2020.08.08 11:06:15.230 newCandles (USDJPY,H4)  2019.01.03 00:41:15 >>> Свеча 00001 >> open = 105.388 hihg = 109.388 low = 105.268 close = 109.388 > Сформирована за 1336258 тиков.
2020.08.08 11:06:19.056 newCandles (USDJPY,H4)  2019.01.17 21:50:34 >>> Свеча 00002 >> open = 109.388 hihg = 112.398 low = 105.388 close = 105.388 > Сформирована за 11546466 тиков.
2020.08.08 11:06:20.788 newCandles (USDJPY,H4)  2019.08.09 18:57:55 >>> Свеча 00003 >> open = 105.388 hihg = 109.388 low = 104.453 close = 109.388 > Сформирована за 5400916 тиков.
2020.08.08 11:06:22.592 newCandles (USDJPY,H4)  2019.11.07 17:57:24 >>> Свеча 00004 >> open = 109.388 hihg = 112.225 low = 105.384 close = 105.384 > Сформирована за 5555641 тик.
2020.08.08 11:06:22.725 newCandles (USDJPY,H4)  2020.03.06 11:47:26 >>> Свеча 00005 >> open = 105.384 hihg = 105.732 low = 101.377 close = 101.377 > Сформирована за 272724 тика.
2020.08.08 11:06:22.822 newCandles (USDJPY,H4)  2020.03.09 15:37:48 >>> Свеча 00006 >> open = 101.377 hihg = 105.378 low = 101.187 close = 105.378 > Сформирована за 314847 тиков.
2020.08.08 11:06:23.736 newCandles (USDJPY,H4)  2020.03.10 21:05:27 >>> Свеча 00007 >> open = 105.378 hihg = 109.385 low = 103.094 close = 109.385 > Сформирована за 2045775 тиков.
2020.08.08 11:06:27.124 newCandles (USDJPY,H4)  2020.03.19 04:13:11 >>> Свеча 00008 >> open = 109.385 hihg = 111.711 low = 105.385 close = 105.385 > Сформирована за 10250092 тика.
2020.08.08 11:06:27.296 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора закончен.
 
Сергей Таболин:

Ich fürchte, ich verstehe Sie nicht... Welche Leiste wollen Sie hervorheben? Derjenige, der sich auf mir gebildet hat? Oder auf der Karte?

Wenn es in der Karte steht, brauche ich sie nicht von vornherein. Der Indikator wird in jedem Zeitrahmen als gleichwertig angesehen.

Die vorherige Berechnung wurde auf H1 durchgeführt, jetzt auf H4. Das Ergebnis ist das gleiche.

Alexey hat Ihnen gesagt, dass Sie zuerst zumindest Ihren Indikator Kerzen ziehen lassen sollten. So wie sie sind. Zumindest auf dem aktuellen Balken. Wenn Sie es schaffen, ist der erste Schritt zum Verständnis getan. Es ist jedoch wünschenswert, ihn nicht durch Ausprobieren verschiedener Parameter, sondern mit dem eigenen Verstand zu finden.

Was hat das mit "a priori" zu tun? Man braucht sie sehr - wenn man eine Kerze nicht mit nur vier Werten zeichnen kann.

 
Artyom Trishkin:

Alexey hat Ihnen gesagt, dass Sie Ihren Indikator zunächst einmal nur Kerzen ziehen sollten. So wie sie sind. Zumindest auf dem aktuellen Balken. Wenn Sie es schaffen, haben Sie den ersten Schritt zum Verständnis getan. Es ist jedoch wünschenswert, ihn nicht durch Ausprobieren verschiedener Parameter, sondern mit dem eigenen Verstand zu finden.

Was hat das mit "a priori" zu tun? Man braucht sie wirklich, da man keine Kerze mit nur vier Werten zeichnen kann.

Ich hab's. Wird gemacht. ...

 
Hallo Forumsnutzer. Können Sie mir bitte sagen, wie ich einen sequentiellen Empfang von Signalen durchführen kann? Zum Beispiel, ich bekomme die erste von 4h Zeitrahmen, dann die Stunde Zeitrahmen, 15 Minuten und geben Sie den Handel nur auf das Minimum? Ich habe den Code von CodeBase übernommen
//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool  SearchTradingSignals(void)
  {
   if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
      return(true);
//---
   double  ma[];
   MqlRates  rates_1[],rates_2[],rates_3[],rates_4[];
   ArraySetAsSeries(ma,true);
   ArraySetAsSeries(rates_1,true);
   ArraySetAsSeries(rates_2,true);
   ArraySetAsSeries(rates_3,true);
   ArraySetAsSeries(rates_4,true);
   int  start_pos=0,count=3;
   if(!iGetArray(handle_iMA,0,start_pos,count,ma) ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_1,start_pos,count,rates_1)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_2,start_pos,count,rates_2)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_3,start_pos,count,rates_3)!=count ||
      CopyRates(m_symbol.Name(),Inp_Timeframe_4,start_pos,count,rates_4)!=count)
     {
      return(false);
     }
   int  size_need_position=ArraySize(SPosition);
   if(size_need_position>0)
      return(true);

   if((rates_1[0].open<rates_1[0].close) && (rates_2[0].open<rates_2[0].close) &&
      (rates_3[0].open<rates_3[0].close) && (rates_4[0].open<rates_4[0].close) && ma[2]<ma[1] && ma[1]<ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
     }
   if((rates_1[0].open>rates_1[0].close) && (rates_2[0].open>rates_2[0].close) &&
      (rates_3[0].open>rates_3[0].close) && (rates_4[0].open>rates_4[0].close) && ma[2]>ma[1] && ma[1]>ma[0])
     {
      if(!InpReverse)
        {
         if(InpTradeMode!=buy)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
            return(true);
           }
        }
      else
        {
         if(InpTradeMode!=sell)
           {
            ArrayResize(SPosition,size_need_position+1);
            SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
            return(true);
           }
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+

Four Timeframes 2
Four Timeframes 2
  • www.mql5.com
На одном из таймфреймов (задается через параметр 'MA Trend ') создаётся трендовый индикатор iMA (Moving Average, MA). Именно этот индикатор будет работать в качестве трендового фильтра. Тренд определяется так: MA на трёх барах (#2, #1 и #0) имеет одно направление. Советник проверяет направление бара #0 (это самый правый бар, который Вы видите...
 
Hallo. Ich habe beschlossen, zu versuchen, sowohl die mql5 Sprache als auch die mt5 Plattform zu beherrschen. Ich habe eine Frage zum Testgerät. Meine Frage bezieht sich auf die Zitate. Ich habe das audcad-Paar auf die Plattform von Weltrade gestellt. Ich habe ein kleines Informationspanel in meinem Expert Advisor. Im Visualisierungsmodus sehe ich, dass die Spreads nicht korrekt sind (sehr klein, ähnlich wie der eurusd-Spread). Ich habe den technischen Support des Unternehmens (Veltrade) kontaktiert und gefragt, ob es unterschiedliche Spreads für mt4 und mt5 gibt. Sie antworteten, sie seien gleich. Was soll ich tun, wenn der Prüfer keinen Schriftverkehr hat? Ich habe versucht, sie mit Hilfe des genetischen Codes zu optimieren. Meine CPU-Last betrug 100%, und nach ein paar Minuten Arbeit stürzte mein Computer ab (Prozessor war ein Phenom II x4 955 (4 Kerne, 3,2 GHz), Kühler war auf Reserve). Nach zwei Versuchen habe ich beschlossen, nichts mehr zu riskieren. Wie soll ich eine solche Situation verstehen? Beim Testen ohne Visualisierung gibt es dann überhaupt keine Geschäftsinformationen, sondern nur ein Diagramm. Stimmt das, oder mache ich etwas falsch? Der Informationsgehalt ist im Visualisierungsmodus eher gering. Am meisten Sorgen bereitet mir die Inkonsistenz der Spreads. Kurzum, mein erster Eindruck ist eine völlige Enttäuschung. Aber ich schiebe es auf die Tatsache, dass ich es noch nicht herausgefunden habe.
 
Youri Lazurenko:
Hallo. Ich habe beschlossen, zu versuchen, sowohl die mql5 Sprache als auch die mt5 Plattform zu beherrschen. Ich habe eine Frage zum Testgerät. Ich habe eine Frage zu Zitaten. Ich habe das audcad-Paar auf die Plattform von Weltrade gestellt. Ich habe eine kleine Informationstafel in meinem Expert Advisor. Im Visualisierungsmodus sehe ich, dass die Spreads nicht korrekt sind (sehr klein, ähnlich wie der eurusd-Spread). Ich habe den technischen Support des Unternehmens (Veltrade) kontaktiert und gefragt, ob es unterschiedliche Spreads für mt4 und mt5 gibt. Sie antworteten, sie seien gleich. Was soll ich tun, wenn der Prüfer keinen Schriftverkehr hat? Ich habe versucht, sie mit Hilfe des genetischen Codes zu optimieren. Meine CPU-Last betrug 100%, und nach ein paar Minuten Arbeit stürzte mein Computer ab (Prozessor war ein Phenom II x4 955 (4 Kerne, 3,2 GHz), Kühler war auf Reserve). Nach zwei Versuchen habe ich beschlossen, nichts mehr zu riskieren. Wie soll ich eine solche Situation verstehen? Beim Testen ohne Visualisierung gibt es dann überhaupt keine Geschäftsinformationen, sondern nur ein Diagramm. Stimmt das, oder mache ich etwas falsch? Der Informationsgehalt ist im Visualisierungsmodus eher gering. Am meisten Sorgen macht mir, dass die Spreads nicht übereinstimmen. Kurzum, mein erster Eindruck ist eine völlige Enttäuschung. Aber ich schiebe es auf die Tatsache, dass ich es noch nicht herausgefunden habe.

Prüfung auf der Grundlage echter Ticks einstellen. Dann werden alle Zweifel an der Gültigkeit der Verbreitung verschwinden.


 
Alexey Viktorov:

Prüfung auf der Grundlage echter Ticks einstellen. Dann werden alle Zweifel an der Gültigkeit der Verbreitung verschwinden.


Danke, ich werde es jetzt versuchen. Was raten Sie zur Optimierung? Ich bin mehr an der Geschwindigkeit interessiert. Ich kann die Qualität später beim Testen korrigieren.

P.S. Ich habe es so gemacht, wie Sie es empfohlen haben, die Streuungen sind die gleichen. Ich habe absichtlich den Kontotyp überprüft. Es ist spezifiziert, sich auf audcad 4.1 (floating) zu verteilen. Auf demselben Konto (Demochart) liegt er bei 4,7 (floating). Im Testgerät, mt5, maximal 2,8 (schwimmend zu einer kleineren Seite).

 
Youri Lazurenko:

Danke, ich werde es ausprobieren. Wie lautet Ihr Rat zur Optimierung? Ich bin mehr an Geschwindigkeit interessiert. Die Qualität kann später beim Testen angepasst werden.

Ich kann Ihnen keinen Rat geben. Ich verwende keine Optimierung. Ich denke, es ist nur ein Quacksalber.

Grund der Beschwerde: