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)
-   -   Problem bei TP (http://www.expert-advisor.com/forum/showthread.php?t=6159)

Tullermore 24.07.18 08:40

Problem bei TP
 
Guten Morgen,

ich versuche mir das Programmieren gerade selbst bei zu bringen und der Übungs EA läuft zumindest schon mal.
Wenn ich den TP mt festen Größen laufen lasse, dann wird er auch so gesetzt wie es sein soll aber ich versuche im Moment den TP so einzustellen dass er als CRV gesetzt wird.
Zum Beispiel SL unter bestimmte Kerze und TP als CRV 3 setzten.

double entry=NormalizeDouble(Ask,_Digits);
double sl = KerzeStopp1;
double tp = KerzeStopp1 * Profit;
orderTicket=OrderSend(_Symbol,OP_BUY,Lots,entry,Sl ippage,sl,tp,Commentary,Magic);

Der SL wird da gesetzt wo er hin soll aber beim TP kommt wirres Zeug raus...
Woran kann das liegen?

Leopold 24.07.18 08:53

Hallo,

du must wenn du SL oder TP berechnest NormalizeDouble() verwenden, weil es sonst sein kann, dass die Zahl zu viele Kommastellen hat.

---Leopold---

Tullermore 24.07.18 09:58

double entry=NormalizeDouble(Ask,_Digits);
double sl =NormalizeDouble(entry - KerzeStopp1 * Point,_Digits);
double tp =NormalizeDouble(entry + KerzeStopp1 * Point,_Digits) * Profit;
orderTicket=OrderSend(_Symbol,OP_BUY,Lots,entry,Sl ippage,sl,tp,Commentary,Magic);

Jetzt bekomme ich nur noch die Fehlermeldung Order Send Error 130.

Leopold 24.07.18 10:08

Code:

double entry=NormalizeDouble(Ask,_Digits);
double sl =NormalizeDouble((entry - KerzeStopp1) * Point,_Digits);
double tp =NormalizeDouble((entry + (KerzeStopp1 * Profit)) * Point,_Digits) ;
orderTicket=OrderSend(_Symbol,OP_BUY,Lots,entry,Sl ippage,sl,tp,Commentary,Magic);

Probiers mal so.


---Leopold---

Tullermore 24.07.18 11:17

if(checkGD()=="sell" && checkKerzen() == "sell" && checkADX() == "sell" && checkOBV() == "sell")
{
double entry=NormalizeDouble(Bid,_Digits);
double sl =NormalizeDouble((entry + KerzeStopp2) * Point,_Digits);
double tp =NormalizeDouble((entry - (KerzeStopp2 * Profit)) * Point,_Digits);
orderTicket=OrderSend(_Symbol,OP_SELL,Lots,entry,S lippage,sl,tp,Commentary,Magic);
}
else if(checkGD()=="buy" && checkKerzen() == "buy" && checkADX() == "buy" && checkOBV() == "buy")
{
double entry=NormalizeDouble(Ask,_Digits);
double sl =NormalizeDouble((entry - KerzeStopp1) * Point,_Digits);
double tp =NormalizeDouble((entry + (KerzeStopp1 * Profit)) * Point,_Digits);
orderTicket=OrderSend(_Symbol,OP_BUY,Lots,entry,Sl ippage,sl,tp,Commentary,Magic);



Wenn ich es so schreibe, dann bekomme ich bei Short Positionen Error 130 // TP hae ich bei 2
und bei Long Positionen Error 4107 // Invalid TakeProfit for OrderSend funktion

Ich bin mit dem wenigen Latein wo ich habe am Ende

Leopold 24.07.18 11:21

Welchen Wert haben die Variablen KerzeStopp1 und Profit?

---Leopold---

Tullermore 24.07.18 11:25

KerzeStopp1 = iLow(_Symbol,0,StoppKerze); // StoppKerze drittletzte Kerze

input double Profit=2.0; // Profit als CRV

Tullermore 24.07.18 11:27

Wenn ich s so schreibe, dann läuft es ohne Probleme aber ich möchte halt nicht immer einen feste Größe als SL und TP.

if(checkGD()=="sell" && checkKerzen() == "sell" && checkADX() == "sell" && checkOBV() == "sell")
{
double entry=NormalizeDouble(Bid,_Digits);
double sl = NormalizeDouble(entry + Stop * _Point,_Digits);
double tp = NormalizeDouble(entry - Profit * _Point,_Digits);
orderTicket=OrderSend(_Symbol,OP_SELL,Lots,entry,S lippage,sl,tp,Commentary,Magic);
}
else if(checkGD()=="buy" && checkKerzen() == "buy" && checkADX() == "buy" && checkOBV() == "buy")
{
double entry=NormalizeDouble(Ask,_Digits);
double sl = NormalizeDouble(entry - Stop * _Point,_Digits);
double tp = NormalizeDouble(entry + Profit * _Point,_Digits);
orderTicket=OrderSend(_Symbol,OP_BUY,Lots,entry,Sl ippage,sl,tp,Commentary,Magic);

Leopold 24.07.18 11:29

KerzeStopp2 ist wahrscheinlich iHigh(...) oder?

Leopold 24.07.18 11:40

Da hast du das Problem, überleg dir mal was du da ausrechnest!
Rechne es mal im kopf durch, das kann nicht gehn.

---Leopold---


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:37 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