Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   SL wird gesetzt TP aber nicht Fehler 130 (http://www.expert-advisor.com/forum/showthread.php?t=4490)

skynat 27.09.15 12:18

SL wird gesetzt TP aber nicht Fehler 130
 
Mahlzeit,

ich habe einen EA (mit Hilfe) auf der Basis von Puria programmiert und nun folgendes Problem.

StopLoss und TakeProfit werden prozentual berechnet und die Abstände habe ich auch schon recht groß gewählt sodass ich nicht glaube dass es am Broker liegt

StopLoss wird auch brav gesetzt, TakeProfit jedoch nicht was natürlich ungünstig ist. Des Weiteren ist mir aufgefallen, dass der StopLoss ab einer bestimmten Marke (ich nehme an dass es die ursprüngliche TP Marke ist) nachgezogen.

Allerdings finde ich ums Verrecken den Fehler nicht



Code:

//StopLoss Longdeals setzen
      if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
        {
            if(OrderCloseTime()==0&&OrderStopLoss()==0)
              {
                  double StopLoss=NormalizeDouble(OrderOpenPrice()/(1+(StopLoss_Prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
              }
        }
       
       
      //StopLoss Shortdeals setzen
      if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
        {
            if(OrderCloseTime()==0&&OrderStopLoss()==0)
              {
                  double StopLoss=NormalizeDouble(OrderOpenPrice()*(1+(StopLoss_Prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,OrderTakeProfit(),0,Yellow);
              }
        }
       
      //TakeProfit Longdeals setzen
      if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
        {
            if(OrderCloseTime()==0&&OrderTakeProfit()==0)
              {
                  double TakeProfit=NormalizeDouble(OrderOpenPrice()*(1+(TakeProfit_Prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),TakeProfit,OrderTakeProfit(),0,Yellow);
              }
        }
     
     
      //TakeProfit Shortdeals setzen
      if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
        {
            if(OrderCloseTime()==0&&OrderTakeProfit()==0)
              {
                  double TakeProfit=NormalizeDouble(OrderOpenPrice()/(1+(TakeProfit_Prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),TakeProfit,OrderTakeProfit(),0,Yellow);
              }
        }


yytrader 27.09.15 12:58

Hallo,

Code:

double TakeProfit=NormalizeDouble(OrderOpenPrice()/(1+(TakeProfit_Prozent/100)),Digits);
                  bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),TakeProfit,OrderTakeProfit(),0,Yellow);

der "TakeProfit" ist auch an der Position des StopLoss, daher bekommst du Error 130 - invalid stop. Du musst es so schreiben:
Code:

bool OrderAngepasst = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfit,0,Yellow);

Du solltest mal deinen ganzen Code aufräumen, da scheint einiges verbesserungswürdig (dann ist das Testen auch einfacher!).
Aber solange er funktioniert!

Gruß

yytrader

skynat 27.09.15 13:10

Ach verflucht - da sehe ich seit Tagen den Wald vor lauter Bäumen nicht!

Ja ich stecke noch in den Anfängen (habe früher mal etwas C programmiert) und muss mich da weiter durchwuseln.

Danke für die Hilfe.

Was meinst du mit Code aufräumen? Ich fand den bislang recht übersichtlich -.-


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:51 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum