[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 373

 
sv.:

Seltsam.
überprüft, es zeigt alles.
vielleicht muss das Diagramm vertikal komprimiert werden, wenn der Kanal breit ist, kann es nicht sichtbar sein, wenn man hineinzoomt.

Nach der Anpassung der Parameter ist etwas passiert. Nur ein sehr enger Bereich passt zu den Bedingungen des EA. Ein Schritt nach links, ein Schritt nach rechts - nichts. Und diese Bedingungen entsprechen nicht der Definition einer Wohnung. Ich erhalte eine Wohnung mit 100 Punkten im 4-stelligen Bereich. Und alles wird genau dargestellt.

//+------------------------------------------------------------------+
//|                                           ind_FletChannel_07.mq4 |
//|                                            Copyright © 2013, sv. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013, sv."
#property link      "7009731@mail.ru"
//----
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_width1 3
#property indicator_width2 3
#property indicator_width3 3
#property indicator_width4 3
//----
extern int    Distans     = 20;      // Количество баров для определения канала
extern int    Channel     = 1000;     // Размер в пипсах канала
extern int    ZoneUnSence = 80;      // Размер выхода за границы канала, в пипсах
extern int    PauseBar    = 1;       // А это по ходу дела - смещение баров,т.е. где нужно считать.
//----
double Up[];
double Down[];
double UpSupport[];
double DownResistance[];

double pnt;
double high,   low;
double high_1 = 0,
       low_1  = 0;
bool   up_chanel, dn_chanel, FirstChanel;
bool   DrawChannel = false;
int    limit,  History=0;        // 0- все бары
int    n=0, n_up=0, n_dn=0;
int    Bar;

//+------------------------------------------------------------------+
int init() 
  {
//----
 //  pnt=Point;
 //  if(Digits==5 || Digits==3) pnt*=10;
   
 //  IndicatorDigits(Digits);
 //  IndicatorBuffers(4);
//----      
   SetIndexBuffer(0,Up);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexEmptyValue(0,0.0);

   SetIndexBuffer(1,Down);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexEmptyValue(1,0.0);
   
   SetIndexBuffer(2,UpSupport);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexEmptyValue(2,0.0);

   SetIndexBuffer(3,DownResistance);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexEmptyValue(3,0.0);
//----      
   return(0);
  }
//+------------------------------------------------------------------+
int start() 
  { 
   limit = Bars-IndicatorCounted()-1; 
   if(limit > 1)                    limit = Bars-1;
   if(History!=0 && limit>History)  limit = History-1;                   // кол-во пересчетов по истории

   Bar = limit;
   
   // ------------------------------------------------------------------
   for(int i=limit; i>=0; i--) 
     {
      if(i < Bar-PauseBar)
       {
        // если не активна отрисовка канала, ищем канал.
        if(DrawChannel==false)
         {
          // отределяется минимум и максимум на заданном интервале Distans
          double low  = iLow (NULL,0,iLowest (NULL,0,MODE_LOW, Distans,i));
          double high = iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,Distans,i));
          
          // и если разность между максимумом и минимумом меньше заданной ширины канала Channel
          if( (high-low) < Channel*Point )  DrawChannel=true;
         }  
       }
      // ------------------------------------------------------------------
      if(DrawChannel)
       {  
        // определяются границы канала как максимум и минимум на интервале Distans
        
        // отрисовка первоначального отправного канала
        if(FirstChanel) { Up[i]   = high;   Down[i] = low;  }
        if(up_chanel)   { Up[i]   = high;   UpSupport[i]      = high - Channel*Point; }   // отрисовка канала тренда вверх
        if(dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel*Point; }   // отрисовка канала тренда вниз
        
        // определяются границы отправного первоначального канала
        // ------------------------------------------------------------------
        if( high_1==0 && low_1==0 )    
         {
          FirstChanel=true;  high_1=high;  low_1=low; 
         }
        else                     // если первоначальный отправной канал уже определён и отрисован
         { 
          if(high > high_1)      // если верхняя граница нового канала выше верхней границы предыдущего канала, то это восходящий тренд
           {
            up_chanel=true;      // активируем флаг отрисовки канала тренда вверх
            high_1 = high;       // и перезаписываем значение
            low_1  = low;
           }
        
          if(low < low_1)        // если нижняя граница нового канала ниже нижней границы предыдущего канала, то это нисходящий тренд
           {
            dn_chanel=true;      // активируем флаг отрисовки канала тренда вниз
            high_1=high;         // и перезаписываем значение
            low_1=low;
           }
         }  
        // ------------------------------------------------------------------
        
        if(Up[i]!=0 && UpSupport[i]!=0)        // пока условие выполняется, границы канала не изменяются
         {
          if ((Close[i] > Up[i]        + ZoneUnSence*Point) ||
              (Close[i] < UpSupport[i] - ZoneUnSence*Point))
           {
            // если условие не выполняется, флаг сбрасывается - Т.е. если не в границах канала
            up_chanel=false;
            dn_chanel=false;
            FirstChanel=false; 
            DrawChannel=false;
           }
         } 
        // ------------------------------------------------------------------
        if(Down[i]!=0 && DownResistance[i]!=0)
         {
          if ((Close[i] > DownResistance[i]+ZoneUnSence*Point) ||
              (Close[i] < Down[i]-ZoneUnSence*Point))
           {
            // если условие не выполняется, флаг сбрасывается - Т.е. если не в границах канала
            up_chanel=false;
            dn_chanel=false;
            FirstChanel=false;
            DrawChannel=false;
           }
         }
        if(Up[i]!=0 && Down[i]!=0)
         {
          if ((Close[i] > Up[i]   + ZoneUnSence*Point) ||
              (Close[i] < Down[i] - ZoneUnSence*Point))
           {
            // если условие не выполняется, флаг сбрасывается
            up_chanel=false;
            dn_chanel=false;
            FirstChanel=false; 
            DrawChannel=false;
           }
         }    
        Bar = i; 
       }    
     } 
   // Конец перебора
   // ------------------------------------------------------------------
   return(0);
  }
//+------------------------------------------------------------------+

Ich habe sie ein wenig abgeändert - ich habe versucht, sie zu verstehen. Aber es funktioniert so. Ich habe H1 verwendet. Es ist schade, dass ich es bei anderen TFs aufgrund der Parameterauswahl nicht zeigen konnte. Zum Beispiel bei 5 und 15 Minuten. - Man könnte meinen, dass es möglich wäre, mit diesen TFs eine Wohnung zu erreichen. (Wenn jemand mit einem erfahreneren Blickwinkel einige Ideen einbringt oder auf Fehler hinweist).

Ich habe keine Probleme mit dem Rendering festgestellt.

Bei Ihrem Indikator, wie auch bei den meisten anderen, ist das, was einmal gezeichnet wird, das, was für die Schreibvorlage des Indikators normal ist. Aber was jetzt passiert (wie Sie sagten - auf dem aktuellen Balken), passt nicht zu den Bedingungen dieses Indikators. Daher gibt es bei der aktuellen Bar kein Problem.

 
Chiripaha:

Nach der Anpassung der Parameter ist etwas passiert. Nur ein sehr enger Bereich passt zu den Bedingungen des EA. Ein Schritt nach links, ein Schritt nach rechts - nichts. Und diese Bedingungen entsprechen nicht der Definition einer Wohnung. Ich erhalte eine Wohnung mit 100 Punkten im 4-stelligen Bereich. Alles ist klar gezeichnet.

Ich habe sie vielleicht ein wenig abgeändert - ich habe versucht, sie zu verstehen. Aber es funktioniert so. Ich habe H1 verwendet. Es ist schade, dass ich es versäumt habe, dies bei anderen TFs durch Parameterauswahl zu zeigen. Zum Beispiel bei 5 und 15 Minuten. - Man könnte meinen, dass es möglich wäre, mit diesen TFs eine Wohnung zu erreichen. (Wenn jemand mit einem erfahreneren Blickwinkel einige Ideen einbringt oder auf Fehler hinweist).

Ich habe keine Probleme beim Zeichnen festgestellt.

Was Sie in diesem Indikator haben, sowie die überwiegende Mehrheit, ist die Wiedergabe, was einmal war, die für den Indikator Schreibvorlage ist normal. Aber was jetzt passiert (wie Sie sagten - auf dem aktuellen Balken), passt nicht zu den Bedingungen dieses Indikators. Daher gibt es kein Problem mit der aktuellen Leiste.


Der ParameterPauseBar ist der Mindestabstand zwischen den einzelnen Kanälen. In Ihrer Ausgabe sollte dieser Parameter größer als 5 sein, dann wird er bei verschiedenen anderen Parametern gezeichnet.
Das Problem mit dem Rendering bei neuen Balken bleibt jedoch bestehen.

 
sv.:


Der ParameterPauseBar ist der Mindestabstand, der einen Kanal vom anderen trennt. In Ihrer Version sollte dieser Parameter größer als 5 sein, dann wird er mit verschiedenen anderen Parametern gezeichnet.
Aber das Problem mit dem Rendering bei der Ankunft neuer Bars blieb bestehen.

Um ehrlich zu sein, verstehe ich die Logik der Arbeit Ihres Indikators nicht (obwohl ich sein Wesen verstehe). Aber...

Sehen Sie - das Problem liegt genau in diesem Block:

        if(FirstChanel) { Up[i]   = high;   Down[i] = low;  }                             // отрисовка первоначального отправного канала
        if(up_chanel)   { Up[i]   = high;   UpSupport[i]      = high - Channel*Point; }   // отрисовка канала тренда вверх
        if(dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel*Point; }   // отрисовка канала тренда вниз

Irgendwann werden die Werte nicht mehr in die Puffer geschrieben, so dass sie den Wert "Null" erhalten. Daher die Sticks nach unten - auf Null. Wie man eine Logik aufbaut und was man hinzufügt - ich verstehe es nicht. Aber die Daten werden offensichtlich nicht geschrieben, weil Sie Flags haben, darunter den Parameter

DrawChannel=false;

Daher werden die Werte den Puffern nicht zugewiesen. - Sie müssen irgendwie damit herumspielen.

 
Chiripaha:

Um ehrlich zu sein, verstehe ich die Logik Ihres Indikators nicht (obwohl ich sie verstehe). Aber...

Sehen Sie - das Problem liegt genau in diesem Block:

Irgendwann werden die Werte nicht mehr in die Puffer geschrieben, so dass sie den Wert "Null" erhalten. Daher die Sticks nach unten - auf Null. Wie man eine Logik aufbaut und was man hinzufügt - ich verstehe es nicht. Aber die Daten werden offensichtlich nicht geschrieben, weil Sie Flags haben, darunter den Parameter

Daher werden die Werte den Puffern nicht zugewiesen. - Sie müssen irgendwie damit herumspielen.


Ich verstehe, es ist also eine Frage der Logik. Ich werde darüber nachdenken.
Ich danke Ihnen für Ihre Hilfe.

P.S.
Prüfen Sie, ob alles gut gerendert wird auf Ihre Geschichte mit Erhöhung PauseBar Parameter mit einem anderen Satz von anderen Parametern, oder gibt es ein Problem mit ihm zu?

 
Wie kann ich das erweiterte Ascicode-Tabellensymbol anzeigen und darstellen?
 
sv.:


Ich verstehe, es ist also eine Frage der Logik. Ich werde weiter nachdenken.
Ich danke Ihnen für Ihre Hilfe.

P.S.
Überprüfen Sie zumindest, ob alles in Ihrem Verlauf korrekt angezeigt wird, wenn Sie den Parameter PauseBar mit einem anderen Satz anderer Parameter erhöhen, oder gibt es auch damit ein Problem?

Ich habe mit zunehmender PauseBar geprüft und diese Sticks bei 1 und 5 Minuten erhalten. Aber ich kann nicht herausfinden, wie man sie richtig umgeht. Ich verstehe, dass Sie wahrscheinlich (aber nicht offensichtlich) schreiben müssen, wenn der Wert

DrawChannel=false;

в

if(dn_chanel)   { Down[i] = low;    DownResistance[i] = low  + Channel*Point; }   // отрисовка канала тренда вниз

den Wert der vorherigen Balken - etwa so:

if(dn_chanel)   { Down[i] = Down[i+1];    DownResistance[i] = DownResistance[i+1]; }   // отрисовка канала тренда вниз
Aber wenn ich es versuche, "bewegt" sich mein ganzer Indikator - weil ich die Logik nicht verstehe und nicht weiß, wo und unter welchen Bedingungen ich ihn einsetzen soll.
 
zfs:
Wie kann ich das erweiterte Zeichen der Ascicode-Tabelle anzeigen?

Dies wird als ANSI bezeichnet.

Das Skript ist beigefügt.

Dateien:
ansi.mq4  2 kb
 
Zum ersten Mal auf dem Forum, habe ich beschlossen, eine Frage zu stellen, die mich interessiert - ist es möglich, Änderungen im Terminal zu machen, um meinen Kommentar (1 oder mehrere Male) einzufügen, wenn eine Position bereits geöffnet ist? nicht sofort, wenn Sie einen Kommentar öffnen. aber wenn Sie es bereits geöffnet haben - so dass der aktuelle Kommentar erscheint?
 
Bitte beraten Sie mich, wie ich das Problem lösen kann: Der gleiche EA ist auf mehreren Charts, ein Signal zum Öffnen einer Order erscheint z.B. auf zwei Charts zur gleichen Zeit. Die zweite Bestellung darf sich jedoch nicht öffnen. Der EA hat eine Prüfung auf einen offenen Auftrag, aber das hilft nicht, weil der erste EA wahrscheinlich einen Auftrag geöffnet hat und der zweite auch eine Anfrage zum Öffnen eines Auftrags sendet. Gibt es mögliche Lösungen?
 
Twoberg:
Zum ersten Mal auf dem Forum, habe ich beschlossen, eine Frage zu stellen, die mich interessiert - ist es möglich, solche Änderungen im Terminal zu machen, um meinen Kommentar (1 oder mehrere Male) auf eine offene Position bereits einfügen? nicht sofort, wenn Sie einen Kommentar zu öffnen. aber wenn Sie bereits geöffnet haben - so dass der aktuelle Kommentar erscheint?

Nein