prüfen? Wie? Ich habe den Code (den Teil mit der Distanzvariable) aus dem Buch von MQL4 kopiert:
int start()// Special function 'start'{string Symb=Symbol();// Symboldouble Dist=1000000.0;// Presettingint Real_Order=-1;// No market orders yetdouble Win_Price=WindowPriceOnDropped();// The script is dropped here//-------------------------------------------------------------------------------- 2 --for(int i=1; i<=OrdersTotal(); i++)// Order searching cycle{if(OrderSelect( i-1, SELECT_BY_POS)==true)// If the next is available{// Order analysis://----------------------------------------------------------------------- 3 --if(OrderSymbol()!= Symb)continue;// Symbol is not oursint Tip=OrderType();// Order typeif( Tip>1)continue;// Pending order //----------------------------------------------------------------------- 4 --double Price=OrderOpenPrice();// Order priceif(NormalizeDouble(MathAbs( Price- Win_Price),Digits)<//SelectionNormalizeDouble( Dist,Digits))// of the closest order {
Dist=MathAbs( Price- Win_Price);// New value
Real_Order= Tip;// Market order availableint Ticket=OrderTicket();// Order ticketdouble Lot=OrderLots();// Amount of lots}//----------------------------------------------------------------------- 5 --}//End of order analysis}//End of order searching//-------------------------------------------------------------------------------- 6 --while(true)// Order closing cycle{if( Real_Order==-1)// If no market orders available{Alert("For ", Symb," no market orders available");break;// Exit closing cycle }//-------------------------------------------------------------------------- 7 --switch( Real_Order)// By order type{case0:double Price_Cls=Bid;// Order Buystring Text="Buy ";// Text for Buybreak;// Из switchcase1: Price_Cls=Ask;// Order Sell
Text="Sell ";// Text for Sell}Alert("Attempt to close ", Text," ", Ticket,". Awaiting response..");bool Ans=OrderClose( Ticket, Lot, Price_Cls,2);// Order closing
Hängt von der Bedeutung von "die richtige Order" ab
Ich muss die Order OP_BUY auswählen (und schließen), die den niedrigeren Eröffnungskurs hat, und diese Auswahl muss beginnen, wenn es 2 Orders OP_BUY gibt... das Gleiche für OP_SELL... ist das so schwer zu implementieren? Ich bin so verwirrt...
Bitte prüfen Sie den Wert "Dist".
prüfen? Wie? Ich habe den Code (den Teil mit der Distanzvariable) aus dem Buch von MQL4 kopiert:
see also: https://book.mql4.com/trading/orderclose1. Stellen Sie sicher, dass der Anfangswert von "Dist" korrekt ist.
2. Fügen Sie eine Warnung ein, um den Wert von "Dist" am Anfang des Zyklus zu überprüfen: "Warnung ( " Dist = ", Dist ) ; "
Gibt es eine Möglichkeit, die richtige Reihenfolge zu wählen, ohne die Variable "Dist" zu verwenden?
Antwort 1
Die Zeichen ">" und "<" in den Beispielen sind in verschiedenen Richtungen für denselben Ausdruck
Siehe Zeile 22 von closeorder.mq4 und Zeile 6 des vorherigen Beispiels
Ich denke, im zweiten Beispiel muss es sich um einen Fehler handeln... was meinen Sie?
Antwort 2
Hängt von der Bedeutung von "die richtige Order" ab
Ich muss die Order OP_BUY auswählen (und schließen), die den niedrigeren Eröffnungskurs hat, und diese Auswahl muss beginnen, wenn es 2 Orders OP_BUY gibt... das Gleiche für OP_SELL... ist das so schwer zu implementieren? Ich bin so verwirrt...
normale Arbeit
Was mache ich also falsch? Wie würden Sie den OP_BUY mit dem niedrigeren Openprice auswählen? Ich habe es auch ohne "Dist" versucht...
Was bezweckt man mit der Zeile "if (Price < Price), Digits)"?
Sieht für mich verrückt aus.
CB
Was bezweckt man mit der Zeile "if (Price < Price), Digits)"?
Sieht für mich verrückt aus.
Und nicht nur das.
wie konnte das fehlerfrei kompiliert werden, mit einer fehlenden linken Klammer.
Ich bin es leid, dass diese Code-grabbing-null-insight-full-idiots-and-full-wasicus-and-not-want-to-pay-a-cent-asking-for-help-guys
alle Menschen machen Fehler
if (a_human_made_a_mistake==true)
{human_learn_next_lesson();}
sonst
{reincarnate_as_plant=true;}
{human_learn_next_lesson();}
Wenn wir nur MT5 hätten. Dann könnten wir stattdessen human->learnNextLesson() verwenden.
Wenn wir nur MT5 hätten. Dann könnten wir stattdessen human->learnNextLesson() verwenden.
Ich war noch nie mit OOP vertraut.
ich hasse das. zu viel ärger um nichts.
in solchen fällen weigere ich mich, zu lernen... ;-)
this->repeat->this->repeat->this->repeat->this->repeat->this->repeat->this->repeat->this->repeat->this;