Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3823
Beiträge: 36903
Benutzer: 6.073
Aktive Benutzer: 495
Links: 80
Wir begrüßen unseren neuesten Benutzer: Crossa
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 2 Stunden
- Crossa
vor 3 Stunden
- snatshit
vor 22 Stunden
- Roerich
vor 22 Stunden
- John_Liver...
vor 23 Stunden
- harry1001

Onlineuser
'Wer ist online' anzeigen Benutzer: 3
Gäste: 41
Gesamt: 44
Team: 0
Team:  
Benutzer:  fxnoob, marcus1805, traderdoc
Freunde anzeigen

Empfehlungen

Werbung

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 30.06.14
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 10
gluema befindet sich auf einem aufstrebenden Ast
Standard EA setzt den SL und TP falsch

Hallo zusammen,

habe mich am Wochenende mal hingesetzt und versucht einen EA yu programmieren. Leider werden die TP und Sl falsch gesetzt.Anstatt vom Eröffnungskurs soundsoviel Pips entfernt wird der SL und TP bei der Eingabe gesetzt.Als Beispiel Einstieg Dax bei 9000 mit SL von 50 Pips wird der Sl dann bei Kurs 50 gesetzt und nicht bei 9005. Wo ist mein Fehler?

ich habe die Buy und Sell Bedingung bewusst aus dem Beispiel raus gelöscht weil die hierfür keine Rolle spielen.


MfG
Chris
Angehängte Dateien
Dateityp: mq4 teststoploss.mq4 (3,3 KB, 6x aufgerufen)
  #2 (permalink)  
Alt 30.06.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

so könnte man es machen:

Erstmal die ordersend-routine ändern sodaß sl/tp erst nach der erfolgreichen Orderaufgabe gesetzt werden. Weiter sollte man die pips/point-Anpassung nicht vergessen.

im header (bei den externen inputs):

extern int Slippage=3;
int slippagepips;

im init(): slippagepips=Slippage;

hier für BUY:
Code:
BrokerDigitAdjust(Symbol());
double sl = Ask-SLpips*pips2dbl;
double tp = Ask+TPpips*pips2dbl;
bool result=OrderSend2Stage(symb,OP_BUY,lt,ask,Slippage,sl,tp,com,magic,0,Lime);
Code:
bool OrderSend2Stage(string symbol,int type,double lots,double price,int slippage,double sl,double tp,string ocomment,int magic,datetime expiry,color col) {
 bool result=true;
 int ticket;
 RefreshRates();
  while (IsTradeContextBusy()) Sleep(100);
  ticket=OrderSend(symbol,type,lots,price,slippage,0,0,ocomment,magic,expiry,col);
  while (IsTradeContextBusy()) Sleep(100);
   if (!OrderSelect(ticket, SELECT_BY_TICKET)) return(false);
    if (sl!=0.00000 && tp!=0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizePrice(OrderSymbol(),sl),NormalizePrice(OrderSymbol(),tp),OrderExpiration(),CLR_NONE);
    if (sl!=0.00000 && tp==0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizePrice(OrderSymbol(),sl),OrderTakeProfit(),OrderExpiration(),CLR_NONE);
    if (sl==0.00000 && tp!=0.00000) result = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),NormalizePrice(OrderSymbol(),tp),OrderExpiration(),CLR_NONE);  
 return(result);
}

void BrokerDigitAdjust(string symbol) {
 int Multiplier = 1;
 int digits=MarketInfo(symbol,MODE_DIGITS);
 if (digits==3 || digits==5) Multiplier = 10;
 if (digits==6) Multiplier = 100;   
 if (digits==7) Multiplier = 1000;
 pips2dbl = Multiplier*MarketInfo(symbol,MODE_POINT);
 Slippage=slippagepips*Multiplier;
}
it build 509 syntax, mögliich daß für die neuesten versionen etwas geändert werden muß. Man könnte sich jetzt auch eine Funktion schreiben welche den sl und tp zurückgibt, bspw. sl = GetSL(Symbol(),Ask,OP_BUY); usw.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #3 (permalink)  
Alt 30.06.14
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 10
gluema befindet sich auf einem aufstrebenden Ast
Standard

Habe im Mt4 ja auch die Build 646. Kann ich den Code einfach so übernehmen durch copy paste? Doch sehr unfangreich die Änderung. Habe versucht mich an dem Buch Expert Advisor voranzuhangeln, da ich noch sehr neu bin in MQL4.

Kannst Du deine Code etwas beschreiben, damit ich ihn besser verstehe was konkret dahinter steht?
Danke erstmal für die tolle Hilfe.

Beste Grüße

Christoph
  #4 (permalink)  
Alt 30.06.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von gluema Beitrag anzeigen
Habe im Mt4 ja auch die Build 646. Kann ich den Code einfach so übernehmen durch copy paste?
Weiß ich nicht da ich noch nicht wirklich fit mit der neuen syntax bin. Da ich meist an alten mql4-Dateien arbeite genügt (noch) der build 509 editor für mich.

Zitat:
Zitat von gluema Beitrag anzeigen
Kannst Du deine Code etwas beschreiben, damit ich ihn besser verstehe was konkret dahinter steht?
Könnte ich, werde ich aber nicht tun, aus folgendem Grund:
Dieser code ist alles andere als kompliziert. Wenn Du etwas nicht verstehst nutze google, bspw. mql4 + BEFEHL, da findet sich dann massig. Weiter liefert die Seite mql4.com detaillierte Infos zu einzelnen Befehlen.

Der Rest ist dann learning by doing ...
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #5 (permalink)  
Alt 30.06.14
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 10
gluema befindet sich auf einem aufstrebenden Ast
Standard

Ok das kann ich verstehen. Aber nochmal zurück zu meinem Code. Warum wird denn meine externe SL Variable gleich als Kurswert genommen obwohl ich den SL doch berechnen lasse durch die Funktion THESTOPLOSSS und THETAKEPROFIT auch zurückgegeben wird in Order Modify?

Also ich verstehe den Grund nicht dass er nichts berechnet sondern den Wert so einfach übernimmt.

Geändert von gluema (30.06.14 um 14:43 Uhr)
  #6 (permalink)  
Alt 30.06.14
Neues Mitglied
 
Registriert seit: Dec 2013
Beiträge: 10
gluema befindet sich auf einem aufstrebenden Ast
Standard

Wäre über Hilfe dankbar.

MfG
  #7 (permalink)  
Alt 30.06.14
Benutzerbild von Crashbulle
Elite Mitglied
 
Registriert seit: Sep 2011
Ort: Voreifel
Beiträge: 584
Crashbulle befindet sich auf einem aufstrebenden Ast
Crashbulle eine Nachricht über MSN schicken Crashbulle eine Nachricht über Skype™ schicken
Standard

du kannst doch einfach den dir bereitgestellten Text mit copypaste in den Editor laden, dann vergleichen, welches zu deinem Code gleich wäre oder anders ist, schon müßtest du deinen Fehler entdecken.
__________________
Was hoch aufsteigt, fällt tief herunter
Portfolio
Portfolio_1
  #8 (permalink)  
Alt 30.06.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von gluema Beitrag anzeigen
Wäre über Hilfe dankbar.
Baue nach jedem Befehl Print(-Anweisungen ein und lasse Dir die aktuellen Daten (bspw. OrderStopLoss()) anzeigen.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #9 (permalink)  
Alt 30.06.14
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 224
pako befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von gluema Beitrag anzeigen
Hallo zusammen,

habe mich am Wochenende mal hingesetzt und versucht einen EA yu programmieren. Leider werden die TP und Sl falsch gesetzt.Anstatt vom Eröffnungskurs soundsoviel Pips entfernt wird der SL und TP bei der Eingabe gesetzt.Als Beispiel Einstieg Dax bei 9000 mit SL von 50 Pips wird der Sl dann bei Kurs 50 gesetzt und nicht bei 9005. Wo ist mein Fehler?

ich habe die Buy und Sell Bedingung bewusst aus dem Beispiel raus gelöscht weil die hierfür keine Rolle spielen.


MfG
Chris
Code:
//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+
int start()
{
  double MyPoint=Point;
  if(Digits==3 || Digits==5) MyPoint=Point;
  
  double TheStopLoss=0;
  double TheTakeProfit=0;
  if( TotalOrdersCount()==0 ) 
  {
     int result=0;
     if(() // Eroffnung BUY   ????????????????
     {
        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,StopLoss,0,"EA Generator BUY",MagicNumber,0,Green);
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
     }
     if() // Eroffnung SELL ????????????????
     {
        result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Generator SELL",MagicNumber,0,Red);
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
     }
  }
  #10 (permalink)  
Alt 30.06.14
Benutzerbild von fxdaytrader
Premium Mitglied
 
Registriert seit: Dec 2013
Ort: hier und dort
Beiträge: 433
fxdaytrader befindet sich auf einem aufstrebenden Ast
Standard

Da stand wohl die tradelogic, hat er doch herausgenommen da hier nicht wichtig ...

Ach ja, bist Du der Pago aus der fabrik oder ist das jemand anders?
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
Thema geschlossen

Lesezeichen

Stichworte
ea, eröffnungskurs, expert advisor, mql4, programmierung, programmierung metatrader, sl falsch, sl tp falsch, stoploss, takeprofit, tp falsch


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------