expert advisor - verschiedene Fragen - Seite 31

 
Max Enrik:


if
(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   Print(ticketnumber);

Drucken Sie Ihre Ticketnummer aus - achten Sie darauf, dass sie korrekt aussieht.

-----

Max Enrik:

if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();
        }
     }
   else printf("OrderSelect failed for %i",ticketnumber); 

}

Prüfen Sie, ob der OrderSelect funktioniert.

-----

Max En rik:
if(id==CHARTEVENT_OBJECT_CLICK && (StringFind(sparam,Button_1,0)>=0 || StringFind(sparam,Button_2,0)>=0))
  {
   ticketnumber=(int) StringSubstr(sparam,1);

   if(OrderSelect(ticketnumber,SELECT_BY_TICKET))
     {
      if(StringFind(sparam,Button_1,0)>=0)
        {
         // ...
        }

      if(StringFind(sparam,Button_2,0)>=0)
        {
         //...
        }

      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(Symbol()!=OrderSymbol()) continue;

         update_1();
         update_2();
         update_3();

        }
     }
  }

Ich verstehe das nicht.

Sie wissen, dass dies durch jede Bestellung mit demselben Symbol geht und update_1() update_2() update_3() ausführt? Nicht nur die Bestellung, die Sie mit ticketnumber gefunden haben.

 
honest_knave:

Drucken Sie Ihre Ticketnummer aus - stellen Sie sicher, dass sie korrekt aussieht.
-----
Prüfen Sie, ob OrderSelect funktioniert.
-----
Ich verstehe das nicht.
Sie wissen, dass dies durch jede Bestellung mit demselben Symbol geht und update_1() update_2() update_3() ausführt? Nicht nur die Bestellung, die Sie mit ticketnumber gefunden haben.

Vielen Dank für Ihren schnellen Kommentar.
Nach Ihrem Kommentar habe ich noch einmal nachgesehen. Es sieht gut aus.

#1 - Ticketnummer - korrekt.
#2 - OrderSelect() funktioniert.
#3 - Ja! Sie haben Recht, aber wenn ich es nicht benutze, wird update_*() nicht funktionieren.

Ich verwende diese Methode für Drags, diese Methode funktioniert gut. Aber diese Methode funktioniert nicht gut für CHARTEVENT_OBJECT_CLICK. (Sie funktioniert gut, wenn ich einen einzelnen Auftrag eröffne, und wenn ich einen anderen Auftrag eröffne, funktioniert sie auch. )

Ich brauche wirklich Hilfe, bitte.

 
Zeigen Sie mir ein Bildschirmfoto von dem, was passieren soll. Mir ist das Problem nicht klar.
 
honest_knave:
Zeigen Sie mir einen Screenshot von dem, was passieren soll. Ich bin mir über das Problem nicht im Klaren.

Während ich den Screenshot gemacht habe, habe ich die Lösung gefunden, einfach wow! ( Ich habe schon über 2 Stunden dafür gebraucht )
Also, bis jetzt sieht es gut aus, wenn etwas schief geht, werde ich einen genaueren Kommentar schreiben.

Vielen Dank für Ihre Zeit.

(Das war wirklich zauberhaft.)

 
Max Enrik:

Während ich einen Screenshot gemacht habe, habe ich die Lösung gefunden, einfach wow! ( Ich habe schon über 2 Stunden dafür gebraucht )
Also, es sieht soweit gut aus, wenn etwas schief gehen sollte, werde ich einen deutlicheren Kommentar schreiben.

Vielen Dank für Ihre Zeit.

(Das war wirklich zauberhaft.)

Ich bin froh, dass Sie es behoben haben
 

#Gewinn Währung Berechnen - Öffnen

Ich habe gerade angefangen, eine Lösung zu finden, wie ich den Gewinn in der Währung berechnen kann. z.B.: 100 pip = 0.89 USD in USDJPY

F: Wie kann ich den Ordergewinn in Pips in Ordergewinn in Währung umrechnen?

(Ich mache mir nur Sorgen, dass ich keine Lösung finden kann, bis der Markt schließt)

Jeder klare Kommentar wäre besser, bitte.

Vielen Dank im Voraus.

//--- 2. Mal bearbeitet

Ich habe eine Menge von ähnlichen Foren gefunden, aber ich kann diese Art von Themen nicht finden.

 

Wie erreichen Sie den Gewinn in Pips?

OrderProfit()

Zurückgegebener Wert:

Der Wert des Nettogewinns (ohne Swaps und Provisionen) für den ausgewählten Auftrag.

Bei offenen Aufträgen handelt es sich um den aktuellen nicht realisierten Gewinn.

Bei geschlossenen Aufträgen handelt es sich um den festen Gewinn.

 
Marco vd Heijden:

Wie erhalten Sie den Gewinn in Pips?

OrderProfit()

Zurückgegebener Wert:

Der Wert des Nettogewinns (ohne Swaps und Provisionen) für den ausgewählten Auftrag.

Bei offenen Aufträgen handelt es sich um den aktuellen nicht realisierten Gewinn.

Bei geschlossenen Aufträgen handelt es sich um den festen Gewinn.

Vielen Dank für Ihren Kommentar.

Sorry Marco, ich habe mein Problem nicht klarer beschrieben.
Ich kann leicht den Wert Order Profit in Pips und Währung erhalten - mit den untenstehenden Codes.

DoubleToString( OrderProfit(), 2 )
DoubleToString( change_to_points( Bid - OrderOpenPrice() ), 0 );

Aber ich versuche, eine Lösung für Stop Loss und Take Profit in Währung zu finden.

Ich arbeite daran und brauche immer noch Hilfe, bitte.

Vielen Dank im Voraus.

 
Max Enrik: ut versuche ich, eine Lösung für Stop Loss und Take Profit in Währung zu finden.
Ersetzen Sie OrderStopLoss durch einen dieser Werte.
  • Sie platzieren den Stopp dort, wo er sein muss - wo der Grund für den Handel nicht mehr gültig ist. Wenn Sie z.B. an einer Unterstützung handeln, wird der Stop unterhalb der Unterstützung platziert.
  • Kontostand * Prozent/100 = RISIKO = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Beachten Sie, dass OOP-OSL den SPREAD einschließt und DeltaPerLot in der Regel etwa $10/Pip beträgt, aber die Wechselkurse des Paares gegenüber Ihrer Kontowährung berücksichtigt).
  • Verwenden Sie NICHT TickValue allein - DeltaPerLot
  • Sie müssen die Lots richtig normalisieren und gegen Min und Max prüfen.
  • Überprüfen Sie auch FreeMargin, um Stop-Outs zu vermeiden.
 
whroeder1:
Ersetzen Sie OrderStopLoss durch einen dieser Werte.
  • Sie platzieren den Stopp dort, wo er sein muss - wo der Grund für den Handel nicht mehr gültig ist. Wenn Sie z.B. an einer Unterstützung handeln, wird der Stop unterhalb der Unterstützung platziert.
  • Kontostand * Prozent/100 = RISIKO = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot+ CommissionPerLot) (Beachten Sie, dass OOP-OSL den SPREAD einschließt und DeltaPerLot in der Regel etwa $10/Pip beträgt, aber die Wechselkurse des Paares gegenüber Ihrer Kontowährung berücksichtigt).
  • Verwenden Sie NICHT TickValue allein - DeltaPerLot
  • Sie müssen die Lots richtig normalisieren und gegen min und max prüfen.
  • Sie müssen auch FreeMargin überprüfen, um StopOut zu vermeiden.

Vielen Dank für Ihren informativen Kommentar.
Ich studiere ihn gerade...

//--- 2. Mal bearbeitet

Vielleicht ist es mir mangels Code-Kenntnissen nicht möglich, Ihre Berechnungsmethode zu verstehen.
Aber ich denke, ich bin nahe an der Lösung. Und ich versuche, unten Code, den ich bekommen ( für Buy Order ) Stop Loss in Währung.
Dann erhalte ich diese Ergebnisse ( ich weiß, dass ich etwas übersehen habe... weil ich sie nicht andeuten kann... ) z.B: Profits: 7.67 USD - Pips: 1001 / für USDCAD. Aber eigentlich Gewinn: 7,69 USD. ( Ich habe bereits überprüft ( Swap und Kommission ) )

double  tickvalue               = MarketInfo( Symbol(), MODE_TICKVALUE ) / MarketInfo( Symbol(), MODE_TICKSIZE ),
        buy_stoploss_incurrency = OrderOpenPrice() - OrderStopLoss();
string  stoploss_incurrency     = DoubleToString( OrderLots() * buy_stoploss_incurrency * tickvalue + OrderCommission(), 2 );

Print( "stop loss in currency: ", stoploss_incurrency );

Ich brauche also einen Rat, bitte.

Vielen Dank im Voraus.

//--- 3. Mal bearbeitet

Bitte Coder oder Programmierer lassen Sie mich wissen, ob obiger Code richtig ist? Denn jetzt sehe ich den korrekten Stop Loss in der Währung für GBPCHF, aber nicht korrekt für USDCAD. Ich weiß nicht herausfinden, was falsch ist?! (Anmerkung: USDCAD ist eine offene Position, aber GBPCHF ist eine Pending Order).

Alles ist OK für jetzt. Also, vielen Dank Mr. William.