[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 103

 
Reshetov:

Nein, sie ist niemandem etwas schuldig. Es gibt einen Unterschied zwischen einem Demo-Real und einem Tester. Zum Beispiel wird der Tester beim Öffnen von Aufträgen nie einen Fehler anzeigen, wenn alle OrderSend()-Parameter korrekt sind. Aber ein Handelsserver, im Gegenteil, es wird.

Deshalb sollten wir die Programme nach dem Tester modifizieren und dann auf der Demo laufen lassen, damit sie Ausnahmesituationen, die im Tester nicht vorkommen, adäquat behandeln können.

Ich danke Ihnen!!!
Dies ist eine sehr nützliche Information für mich))
 
Reshetov:
Verwenden Sie Time[x] bar time.


Es wird hier nicht funktionieren, weil in der nächsten Zeile auf demselben Balken diese erste gebildete Figur auch als zweite initiiert wird... Und ich muss sie trennen... getrennt

um dann die Tiefststände zu vergleichen - wenn man long ist - und die Höchststände - wenn man short ist...

......
if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=TimeCurrent(); Print ("образование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 sleep (2000);
 if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false && TimeCurrent() > Time_Figure1)  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
.....

 
robot:

Wenn es nicht schwierig ist, eine Vorlage zu schreiben, habe ich noch nicht richtig nachgedacht)

Vielen Dank für Ihre Aufmerksamkeit.
Ich schlage vor, dass Sie sich Beispiele für Handelskodierung ansehen, zum Beispiel hier
 
Roman.:


Es wird hier nicht funktionieren, weil in der nächsten Zeile auf demselben Balken diese erste gebildete Figur auch als zweite initiiert wird... Und ich muss sie trennen... getrennt

für den anschließenden Vergleich von Tiefstständen - wenn long - und Höchstständen - wenn short...

Nicht so. Wenn Sie den AO-Signalbalken zuerst haben, dann schauen Sie von ihm aus und suchen Sie den Rest tief in der Geschichte. Wenn Sie eine Position öffnen, merken Sie sich den Zeitpunkt der Öffnung des Balkens und öffnen Sie nicht noch einmal zu diesem Zeitpunkt. Sobald sich der nächste AO-Balken gebildet hat, sollten Sie erneut nach einem Muster suchen.
 
artmedia70:
Das stimmt nicht. Wenn Sie den ersten Signalbalken von AO haben, dann von ihm und suchen Sie die anderen tief in der Geschichte. Wenn Sie eine Position öffnen, merken Sie sich den Zeitpunkt der Öffnung des Balkens und öffnen Sie ihn nicht erneut. Sobald sich der nächste AO-Balken gebildet hat, sollten Sie erneut nach einem Muster suchen.


Können Sie das näher erläutern - ich muss nicht tief in der Geschichte suchen...

Es genügt mir, in der Gegenwart festzustellen, ob eine Spitze kam - das ist Abb.1, und wenn nach einigen Balken wie in der Abbildung eine andere Spitze kam, dann zu vergleichen und eine Entscheidung zu treffen...

Die Frage ist, dass die beiden Stacheln der ersten und der zweiten Figur gleich sind, und ich kann nicht (auch nicht mit Flaggen, um eine Figur von der anderen zu unterscheiden)... Ich bin langweilig, was- was...

P.S. Die Stacheln müssen nicht unbedingt hintereinander folgen, sie können auch durch mehrere gleiche Stäbe gehen usw. Sie können unterschiedlich sein - die Hauptsache ist, dass das Prinzip ihrer Konstruktion dasselbe ist.

Das Wichtigste ist, das eine vom anderen zu trennen, um weitere Vergleiche anstellen zu können.

 
Reshetov:
Verwenden Sie Time[x] bar time.

Im Allgemeinen ist es möglich, den EA an einer bestimmten Stelle im Code zu unterbrechen, bevor der nächste Balken gebildet wird, nachdem einige Befehle ausgeführt wurden.
 
Roman.:

Im Allgemeinen ist es möglich, den EA an einer bestimmten Stelle im Code zu unterbrechen, bevor der nächste Balken gebildet wird, nachdem einige Befehle ausgeführt wurden.
Ja, die gibt es. Sie speichern den aktuellen Wert von Time[0] in einer statischen Variablen und vergleichen ihn mit jedem neuen Tick. Wenn sie sich nicht geändert hat, wird(0) zurückgegeben. Wenn sie sich geändert hat, haben wir es mit einem neuen Balken zu tun. Merken Sie sich die Zeit des neuen Taktes, d.h. Time[0], und beginnen Sie Ihre eigenen Berechnungen.
 

eddy:

for(k=0; k<KPeriod; k++)           // перебрать KPeriod баров
if(Low[k]<minimum) minimum=Low[k]; // найти минимум

Wie kann man diese Funktion durch die Funktion iLowest richtig ersetzen?

minimum=Low[iLowest (NULL, 0, MODE_LOW, KPeriod, 0)] - ist das richtig?

Das hat man mir gesagt. Danke, dass Sie eine einfache Frage gegenseitig ignorieren)
 
Reshetov:
Ja, das tut sie. Sie speichern den aktuellen Wert von Time[0] in einer statischen Variablen und vergleichen ihn mit jedem neuen Tick. Wenn sie sich nicht geändert hat, beenden Sie das Programm mit return(0). Wenn sie sich geändert hat, haben wir es mit einem neuen Balken zu tun. Merken Sie sich die Zeit des neuen Taktes, d.h. Time[0], und beginnen Sie Ihre eigenen Berechnungen.


Ich habe es schon vor langer Zeit gewusst... :-)) Mehr aus einem Lehrbuch... Ich danke Ihnen...

Ich vergleiche jetzt, ich glaube, ich bin auf dem richtigen Weg, aber bis jetzt funktioniert es nicht so, wie es sollte...

double AO1 =  iAO(Symbol(), signal_period, 1);
 double AO2 =  iAO(Symbol(), signal_period, 2);
 double AO3 =  iAO(Symbol(), signal_period, 3);
 
 
 //  Расчет переменных для доливки 2-а пика
  
 if (AO3 < 0 && AO3 > AO2 && AO2<0 && AO2 < AO1 && AO1 < 0 && fl1==false && fl2==false) {a1 = AO2; fl1=true;Time_Figure1=Time[0]; Print ("Oбразование первого пика",DoubleToStr(a1, 6),"Время: ",Time_Figure1);}// определение наличия 1-го пика, флаг установлен
 Print ("Образование первого пика",DoubleToStr(a1, 6),"Время1: ",Time_Figure1);
 if (Time_Figure1<Time[0] && Time_Figure1!=0)    // условие наличия первого пика...
   {
    if (AO3<0 && AO3>AO2 && AO2<0 && AO2<AO1 && AO1<0 && fl1==true && fl2==false )  // определение наличия 2-го пика, флаги установлены
      { 
        a11 = AO2; fl1=true; fl2=true; Time_Figure2=Time[0]; Print ("Образование второго пика", DoubleToStr (a11,6), "Время2: ",Time_Figure2);
        if (a1<a11 && High [0] > High [1]) 
           { signal_buy = true; a1=a11; fl1=true;fl2=false; Time_Figure1=Time[0];}   //  активируем бай и устанавливаем сигнал на бай и записываем параметры как первого пика  
        else { a1=a11; fl1=true;fl2=false;Time_Figure1=Time[0];}                     //  просто запоминаем новый минимум - "первый" сигнал   
      }                                                       
   }
 
 if (AO2>0 || High [0] < High [1]) {fl1=false; fl2=false; Time_Figure1=0;}// если какой - либо столбец гистограммы  пересекает 0-ю линию между сигналами 2-а пика
                                                               // то сигнал считается недействительным. Cбрасываем флаги 1-го и 2-го пика вниз,
 if (Mas_Tip[0]!=0 && signal_buy == true )  return(10);        // при доливке и сигнале к покупке открываемся с рынка 
 signal_buy = false;                                           // сбрасываем сигнал к покупке
Sie haben mir richtigerweise die Verwendung von Time[x] vorgeschlagen - ich versuche, die...
 
Jungs wirklich brauchen ein Skript, um Tage aus, um den Chart in MT4, wo es zu finden hinzufügen