Diskussion zum Artikel "20 Handelssignale in MQL5" - Seite 4

 

Vielen Dank an den Autor für diesen Artikel!

Tun Sie nicht, was 1CMaster rät, es ist einfach Unsinn.

Tun Sie etwas anderes, setzen Sie eine vertikale Linie auf dem Chart, bewegen, die Indikatoren zeigen den Zustand von diesem Moment (wo ist die vertikale Linie), und nicht die aktuelle?

 

Der Code könnte von gutem Wert sein, aber einige der Indikatoren sind überflüssig:

BB und Standardabweichungskanal - dasselbe;

Preis-, Donchian- und Gallagher-Kanäle - dasselbe;

Wie auch immer, danke für den Artikel...

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Properties - Documentation on MQL5
 

Fehler bei der Bildung des Alligatorsignals

.....
      if(CopyBuffer(h_al,0,0,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,0,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,0,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- die Bedingung prüfen und den Wert für sig festlegen
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- Rückgabe des Handelssignals
   return(sig);
  }


Das Kopieren dieser Puffer ist notwendig, wenn man die Verschiebung der Indikatorlinien berücksichtigt, aber hier ist es nicht notwendig.

Zweitens, warum zwei Indikatorwerte kopieren, wenn nur ein Balken verglichen wird, d.h. ein Wert pro Puffer (Linie) reicht aus.

Signal von AO: Es werden auch viele Daten kopiert (sie nehmen nicht an der Analyse teil).

     if(CopyBuffer(h_ao,1,0,20,ao_buffer)<20)
         return(0);
      if(!ArraySetAsSeries(ao_buffer,true))
         return(0); 

Und am Anfang des Artikels wurde gesagt, dass wir zur Beseitigung des Rüttelns nicht den Null-Balken, sondern den ersten Balken in der Historie analysieren werden, warum also den Null-Balken kopieren?

Wir sparen keine Ressourcen ....

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
olyakish:

Fehler bei der Bildung des Alligatorsignals


Das Kopieren dieser Puffer ist notwendig, wenn man die Verschiebung der Indikatorlinien berücksichtigt, aber hier ist es nicht notwendig.

Zweitens, warum zwei Indikatorwerte kopieren, wenn nur ein Balken verglichen wird, d.h. ein Wert pro Puffer (Linie) reicht aus.

Signal von AO: Es werden auch viele Daten kopiert (sie nehmen nicht an der Analyse teil).

Und am Anfang des Artikels wurde gesagt, dass wir zur Beseitigung des Rüttelns nicht den Null-Balken, sondern den ersten Balken in der Historie analysieren werden, warum also den Null-Balken kopieren?

Wir sparen keine Ressourcen ....



Erstens steht es eindeutig in der Hilfe.

Необходимо помнить, что смещение линии является чисто визуальным для отображения и значения в индикаторном буфере хранятся без смещения. 
При получении значений буфера функцией CopyBuffer() значение смещения никакого эффекта иметь не будет.

Zweitens habe ich vielleicht einige Fehler beim Kopieren von Daten gemacht, aber das beeinträchtigt nicht den Kern der Aufgabe. Der Zweck des Artikels ist es, zu zeigen, wie man Indikatoren und Daten korrekt anspricht.

 

Übrigens verwende ich persönlich eine solche Konstruktion, in diesem Fall können die Daten aus der Funktion direkt an die Handelsabfrage übergeben werden.

ENUM_ORDER_TYPE ind_01()
  {
   ENUM_ORDER_TYPE sig=WRONG_VALUE;

   if(IND01_handle==INVALID_HANDLE || IND01_handle==0)
     {
      IND01_handle=iAC(_Symbol,TF_01);
      return(WRONG_VALUE);
     }
   else
     {
      if(CopyBuffer(IND01_handle,1,0,AC_shift+3,IND01_buffer1)<AC_shift+3) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer1,true)) return(WRONG_VALUE);

      if(CopyBuffer(IND01_handle,0,0,AC_shift+1,IND01_buffer2)<AC_shift+1) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer2,true)) return(WRONG_VALUE);
     }

   if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0 && IND01_buffer1[AC_shift+2]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1)sig=ORDER_TYPE_SELL;
   else if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1 && IND01_buffer1[AC_shift+2]==1)sig=ORDER_TYPE_SELL;
   else sig=WRONG_VALUE;

   return(sig);
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
sergey1294:

Erstens ist es in der Hilfe klar beschrieben.

Zweitens habe ich vielleicht einige Fehler beim Kopieren von Daten gemacht, aber das beeinträchtigt nicht den Kern der Aufgabe. Der Zweck des Artikels ist es, zu zeigen, wie man Indikatoren und Daten richtig anspricht.

Ja, es ist zwar visuell, aber wir orientieren uns bei der Eingabe eines Geschäfts an den visuellen Werten und nicht daran, wie sie im Speicher des Terminals liegen, also müssen wir das berücksichtigen.

Der richtige Weg für Alligator ist 13 auf 8, 8 auf 5, 5 auf 3 (Standardwerte).

int TradeSignal_17()
  {
   int sig=0;

   if(h_al==INVALID_HANDLE)
     {
      h_al=iAlligator(Symbol(),Period(),13,0,8,0,5,0,MODE_SMMA,PRICE_MEDIAN);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_al,0,8,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,5,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,3,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- die Bedingung prüfen und den Wert für sig festlegen
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- Rückgabe des Handelssignals
   return(sig);
  }
 
olyakish:

Ja, es ist zwar visuell, aber wir orientieren uns bei der Eingabe eines Geschäfts am visuellen Wert und nicht an der Art und Weise, wie sie im Terminalspeicher sind, also müssen wir dies berücksichtigen.

Der richtige Weg für Alligator ist 13 auf 8, 8 auf 5, 5 auf 3 (Standardwerte).

Ich will nicht sagen, aber ich glaube nicht, dass jeder den Alligator mit einem Offset verwendet. In diesem Fall liegt also kein Fehler vor. Sie brauchten einen Offset Sie es hinzugefügt, und so kann Stahl diejenigen, die es brauchen. Ich werde noch einmal wiederholen, der Zweck des Artikels ist es, zu zeigen, wie man richtig die Indikatoren und ihre Daten zu adressieren, und wie viel und in welcher Menge, um sie zu bekommen, ist eine Angelegenheit von jedem einzelnen.
 
sergey1294:
Ich werde es nicht sagen, aber ich glaube nicht, dass jeder den versetzten Aligator verwendet. In diesem Fall liegt also kein Fehler vor. Sie brauchten einen Offset, Sie fügten ihn hinzu, und das können auch die Stählernen, die ihn brauchen. Ich wiederhole noch einmal, der Zweck des Artikels ist es, zu zeigen, wie man Indikatoren und ihre Daten richtig anspricht, und wie viele und in welcher Menge man sie bekommt, ist eine Angelegenheit jedes Einzelnen.

Referenz...

Dertechnische Indikator Alligator ist eine Kombination aus Gleichgewichtslinien (gleitende Durchschnitte) unter Verwendung fraktaler Geometrie und nichtlinearer Dynamik.

  • Die blaue Linie (Alligator's Jaw) ist die Gleichgewichtslinie für den Zeitraum, der zur Erstellung des Diagramms verwendet wurde (geglätteter gleitender Durchschnitt über 13 Perioden, um 8 Balken in die Zukunft verschoben );
  • Die rote Linie (Alligatorzähne) ist die Gleichgewichtslinie für einen aussagekräftigen Zeitraum, der eine Größenordnung niedriger liegt (8-periodiger geglätteter gleitender Durchschnitt , 5 Balken in die Zukunft verschoben);
  • Die grüne Linie (Alligatorlippen) ist die Gleichgewichtslinie für einen aussagekräftigen Zeitraum, der um eine weitere Größenordnung niedriger liegt (geglätteter gleitender Durchschnitt über 5 Perioden , der um 3 Balken in die Zukunft verschoben wurde).


Die Schlüsselwörter sind fett gedruckt.

Das Ergebnis Ihres Codes ist die Analyse der Durchschnittswerte

Das Ergebnis des von mir vorgeschlagenen Codes ist die Analyse von Alligator-Linien.

 
Sie sind wirklich nützlich zum Lernen, danke.
 
Gut für Anfänger wie mich, sehr nützlich. Danke.