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

 
Noterday:

Ich habe einen neuen Block in meinen EA eingefügt, um die Losgröße der zu eröffnenden Position zu berechnen. Die Idee ist die folgende:

1. Der Stop wird bei einer Verkaufsposition auf den Höchststand des aktuellen Tages und bei einer Kaufposition auf den Tiefststand des Tages gesetzt.

2. Wenn die Bedingung für die Eröffnung des Auftrags eintritt, wird dieser Block für die Losberechnung ausgeführt. Der Abstand zum Höchst-/Tiefstwert des Tages in Punkten wird berechnet, und ich durchlaufe die Lots, beginnend bei 0,1, um das benötigte Lot zu finden (5%, wenn ein Stop ausgelöst wurde)

Aber solche Zeilen erscheinen in meinem Tagebuch:

2011.01.30 16:59:47 TestGenerator: Nicht übereinstimmende Datenfehler (Volumengrenze 1107 am 2011.01.13 14:45 überschritten)

Sobald ich diesen Block ausschalte, ist alles in Ordnung. Wo liege ich falsch? Können Sie mir das bitte sagen?

Hier ist der Code selbst:

Es ist unwahrscheinlich, dass die Meldung des Testers mit Ihrem Code zusammenhängt.

Versuchen Sie immer wieder, alle Zeiträume im Angebotsarchiv neu zu berechnen.

Die Meldung besagt, dass das Volumen von 1107 um 14:45 Uhr erreicht wurde, was völlig unmöglich ist, da der Handel bis 24:00 Uhr fortgesetzt wurde.

Dieser Fehler ist jedoch vernachlässigbar.

 
Saltan:

Beim Versuch, eine Include-Datei (*.mqh) zu kompilieren, tritt der Fehler '\end_of_program' - no function defined auf. Was ist los und wie kann man es beheben?

extern double Lots = 0.0;
extern int Percent = 0;
extern int StopLoss = 100;
extern int TakeProfit = 40;
extern int TrailngStop = 100;

int Level_New;
int Level_Old;


Das kommt vor und ist normal. Zum Beispiel in meiner Variables.mqh - expert's externe und globale Variablen angegeben sind ... beim Kompilieren, es sagt '\end_of_program' - keine Funktion definiert, eine Art von fehlenden Ende im Programm, keine Funktion definiert, aber beim Kompilieren Experte selbst, alles ist OK - 0 Fehler, 0 Warnungen. (*.mqh) - nicht separat kompilieren, beim Kompilieren des Expert Advisors selbst wird der Compiler alle seine Inludes zusammenfassen und entscheiden, ob es Fehler gibt, keine Fehler, etc. :-))) Es ist also alles normal. Versuchen Sie, sich selbst zu kompilieren...

P.S. Beim Kompilieren anderer Inludes kann der Compiler schreiben, dass eine globale Variable nicht definiert ist... Natürlich muss er nicht definiert werden, wenn er in einer völlig anderen Zeile steht. Beachten Sie die Reihenfolge, in der die Einlagen angeordnet sind... Wenn eine Variable in einem Zwischensatz definiert ist und in einem anderen verwendet wird, muss der erste Zwischensatz vor dem zweiten platziert werden, andernfalls tritt beim Kompilieren ein Fehler auf - eine Variable ist nicht definiert, im Allgemeinen werden alle globalen Variablen im äußeren Zwischensatz definiert. Sie können aber auch in jeder anderen definiert werden, wenn nur diese diese Variablen verwendet. Irgendwie... Sie ist ziemlich vage, sollte aber verständlich sein. Probieren Sie es aus.

 
DhP:

Es ist unwahrscheinlich, dass die Meldung des Testers mit Ihrem Code zusammenhängt.

Versuchen Sie immer wieder, alle Zeiträume im Angebotsarchiv neu zu berechnen.

Die Meldung besagt, dass das Volumen 1107 um 14:45 Uhr erreicht wurde, was völlig unmöglich ist, da der Handel bis 24:00 Uhr andauerte.

Dieser Fehler ist jedoch vernachlässigbar.

Nun, wenn dieser Block auskommentiert wird, ist im Testgerät alles in Ordnung. Der Fehler liegt also in diesem Block...
 
100yan:
Kein Problem... Aber wie ermittelt man den aktuellen Wert der TF im Code?

Periode() würde helfen
 
Sergey_Rogozin:

Ich habe mir das Cover des STUDY-Buches von allen Seiten angesehen und verstehe immer noch nichts...))

Überall sehe ich, dass es so geschrieben wird:

Ist die folgende Schreibweise angemessen, wenn ich Price = OrderOpenPrice() für die weitere Verarbeitung und das Setzen von Stops erhalten möchte?

Für mich funktioniert es, aber ist das akzeptabel?

Ihr Satz ist genauso gültig wie der erste.

Auf diese Weise können Sie alle Informationen über einen offenen Auftrag erhalten,

aber nur einmal zum Zeitpunkt der Öffnungsbestätigung.

Siehe https://docs.mql4.com/ru/trading/OrderSend

 
Noterday:
Nun, wenn dieser Block auskommentiert wird, ist im Testgerät alles in Ordnung. Der Fehler liegt also in diesem Block...
    double DistanceToHighDay = MathAbs(HighDay-Ask)*10000;
    double DistanceToLowDay  = MathAbs(Bid-LowDay)*10000;

Höchstwahrscheinlich liegt das daran, dass Sie die Daten des Tages verarbeiten, deren Volumen nicht mit dem der Minuten übereinstimmt,

und das Testgerät warnt Sie davor.
 
Die Variablen HighDay und LowDay werden nicht nur in diesem Block, sondern auch an anderen Stellen im Programm verwendet, so dass ich denke, dass sie nichts damit zu tun haben. Glauben Sie, dass der Algorithmus dieses Blocks korrekt ist?
 

Kann jemand einen besseren Job machen?

1. Der Stopp wird auf dem Tageshöchststand in einer Verkaufsposition platziert.

2. Dann berechnen wir den Abstand in Pips zwischen dem aktuellen Kurs und dem Tageshoch.

3. Berechnen Sie, wie viel dieser Abstand in $ bei 0,1 Lot sein wird und berechnen Sie, wie viel er in % der Einlage sein wird. Wenn sie weniger als 5 % beträgt, werden 0,2 Lose gezählt und so weiter, bis sie 5 % überschreitet.

Und das ist dann die Losgröße, die Sie brauchen.

Mein Code funktioniert aus irgendeinem Grund nicht...., obwohl alles richtig geschrieben zu sein scheint.

 

WER WISSET?

wie kann ich programmatisch auf die Bollinger, die sagt - gelten für "Previous Indicator's Data"? was sollte ich in der applied_price Feld setzen?

danke

 

Einen guten Tag an alle. Frage: Wie kann ich CheckEvents zum Laufen bringen? Die Datei Events (aus Komposter) befindet sich im Verzeichnis include. Es gibt ein Beispiel in EventsExpert.mq4:

CheckEvents( MagicNumber );

        if ( eventBuyClosed_SL > 0 )
                Alert( Symbol(), ": Buy-позиция закрыта по СтопЛоссу!" );

Aber ich brauche keinen Alert. Ich möchte, dass die schwebende Order gelöscht wird, wenn die Marktorder beim Stop Loss schließt.

CheckEvents( Magic==0 );
    
   if (eventBuyClosed_SL > 0)
   ??????????? 
        
   DELETE("Buy Stop");

Was sollte ich anstelle des Alerts angeben? Wenn diese Funktion für den Zweck geeignet ist.

Grund der Beschwerde: