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

 
abolk:

der Link https://www.mql5.com/ru/code hat ein ganzes Lager voller ähnlicher Exemplare

Sie haben einen Link zu einem großen Abschnitt angegeben )))

Das ist witzig.

 

Guten Tag!

Ich bitte um Hilfe, ich habe mich schon umgebracht, ich finde es nicht heraus!!! Ich brauche, dass bei Erreichung +20 p., SL des Auftrages auf den Preis der Eröffnung umgestellt wurde, d.h. Funktion gibt 77 aus

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

Ich kann es nicht zum Laufen bringen.

 
demlin:

Ich möchte, dass der SL der Order auf den Eröffnungskurs zurückgesetzt wird, wenn er +20 Pips erreicht, d.h. die Funktion zeigt 77

20 p wird nicht auf diese Weise berechnet, sondern Sie müssen die Funktion OrderOpenPrice() verwenden und sie mit dem aktuellen Preis vergleichen, d. h., wenn die Order einen positiven oder Null-Gewinn erreicht, möchten Sie wahrscheinlich, dass das Ergebnis 77 ist, d. h:

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
die Funktion OrderProfit() gibt den Ordergewinn in der Einzahlungswährung zurück, nicht in Pips
 
Können Sie mir sagen, ob es möglich ist, dass ein EA Indikatordaten (von denjenigen, die dies zulassen) von einem anderen Indikator erhält. Eine solche Gelegenheit habe ich bei den Preistypen nicht gefunden.
 
IgorM:

20p wird nicht auf diese Weise berechnet, Sie müssen die Funktion OrderOpenPrice() verwenden und sie mit dem aktuellen Preis vergleichen. Offensichtlich möchten Sie, dass das Ergebnis 77 zurückgegeben wird, wenn der Auftrag einen positiven Gewinn oder Null erreicht, dann sieht es so aus:

die Funktion OrderProfit() gibt den Ordergewinn in der Einzahlungswährung zurück, nicht in Pips

Das ist ungefähr das, was ich dachte, ich berechne keine 20 Pips, sie werden in der Bezub-Variable eingestellt. Ich versuche, den aktuellen Gewinn der Order in der Einzahlungswährung (OrderProfit()) und die geforderten 20 Punkte in der Einzahlungswährung ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) zu vergleichen
 
demlin:
Das habe ich mir auch gedacht, ich rechne nicht mit 20 p. Sie sind in der Bezub-Variable festgelegt. Ich versuche, den aktuellen Ordergewinn in der Einzahlungswährung (OrderProfit()) und den erforderlichen Wert von 20 p in der Einzahlungswährung ((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) zu vergleichen.

dann haben Sie vergessen, den aktuellen Preis zu berücksichtigen und wie viele Pips sich der Preis seit der Auftragserteilung bewegt hat:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub

ZZZEROXXX:
Bitte teilen Sie mir mit, ob ich Indikatordaten (die, die es erlauben) von einem anderen Indikator erhalten kann. Bei den Preistypen habe ich eine solche Möglichkeit nicht gefunden.

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

dann haben Sie vergessen, den aktuellen Preis zu berücksichtigen und wie viele Pips sich der Preis seit der Auftragserteilung bewegt hat:

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


Ich habe Ihren Plan ausprobiert. Alert ergibt einen (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub-Wert von -0,033. Obwohl der Gewinn 21 Pence beträgt! Ist das normal?
 
demlin:
Ich habe Ihr System getestet. Alarm erzeugt für (OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub Werte -0,033. Obwohl der Gewinn 21 Pence beträgt! Ist das normal?

Tut mir leid, ich schreibe, ohne es zu überprüfen, ich habe es hier falsch verstanden, es sollte so funktionieren:

Verkauf:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

Kaufen: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

 
IgorM:

Tut mir leid, ich schreibe, ohne es zu überprüfen, ich habe es hier falsch verstanden, es sollte so funktionieren:

Verkauf:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

Kaufen: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

Auch das sind noch keine schönen Zahlen. Ich glaube nicht, dass es um die Formel geht. Der Ausdruck (MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) selbst ergibt im Grunde 20 für den Euro. Der Punkt liegt irgendwo in der for-Schleife
 
IgorM:

Tut mir leid, ich schreibe, ohne es zu überprüfen, ich habe es hier falsch verstanden, es sollte so funktionieren:

Verkauf:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

Kaufen: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*Lot/Punkt

Auch das sind noch keine schönen Zahlen. Ich glaube nicht, dass es um die Formel geht. Der Ausdruck (MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) selbst ergibt grundsätzlich 20 für EURUSD. Es befindet sich irgendwo in der for-Schleife