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: 3787
Beiträge: 36785
Benutzer: 5.994
Aktive Benutzer: 484
Links: 80
Wir begrüßen unseren neuesten Benutzer: Mozez90
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 12 Stunden
- Mozez90
vor einem Tag
- Yzerman#19
vor 2 Tagen
- Simba
vor 3 Tagen
- kvink
vor 3 Tagen
- taipan

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 34
Gesamt: 36
Team: 0
Team:  
Benutzer:  Domke01, tbooo
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 19.05.17
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 294
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Hab aber keine Ahnung, wie man den dann bei OrderSend einbaun soll.
Das ist ja leider das Problem
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Mit Zitat antworten
  #12 (permalink)  
Alt 19.05.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Ja, dann musst Du halt vor dem OrderSend() Abfragen lassen, ob TP = 0 ist.
Ist das der Fall, dann darf der TP in der OrderSend()-Funktion auch nur 0 sein.
Code:
//SL / TP "deaktivieren" wenn sie 0.0 betragen
if(Stoploss==0.0)buy_SL=0.0;
if(Stoploss==0.0)sell_SL=0.0;
if(Takeprofit==0.0)buy_TP=0.0;
if(Takeprofit==0.0)sell_TP=0.0;
Vielen Dank. Scheint zu funktionieren. Jedenfalls steht jetzt überall bei den offenen Order 0.0 tralala bei TP.

Aber kann man das auch irgendwie mit diesem minstoplevel vergleichen? Wenn TP < minstoplevel() dann TP = 0.nix? Hab eigentlich nur in den Parametern oben gerne Zahlen und drunter möglichst bloß Deklarationen und so.

Wie auch immer. Nächster Schritt wär nen Trailing Stop. Scheint immer wieder zu passieren, dass, selbst wenn der Kurs Gewinn bringt, die Indikatoren erst aussteigen wenn der Trend so gut wie vorbei ist. Oder sogar schon in die Gegenrichtung geht und man noch Verlust macht, weil die Indis ja nur stündlich reagieren.
Angehängte Dateien
Dateityp: mq4 Valerius_SLTP_B0B1_RSI_STOCHA_WPR_MT4_EA.mq4 (18,2 KB, 0x aufgerufen)
Mit Zitat antworten
  #13 (permalink)  
Alt 21.05.17
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 370
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Aber kann man das auch irgendwie mit diesem minstoplevel vergleichen? Wenn TP < minstoplevel() dann TP = 0.nix? Hab eigentlich nur in den Parametern oben gerne Zahlen und drunter möglichst bloß Deklarationen und so.
Code:
int STOPLEVEL = MarketInfo(Symbol(), MODE_STOPLEVEL);

if( Takeprofit < STOPLEVEL || Takeprofit == 0 ) dann usw.
Ist halt die Frage ob 4 oder 5 Digit Broker, da Takeprofit noch um eine Kommastelle versetzt wird bei 5 Digit. Vermutlich gibst Du Dein TP bei 30 Pips mit einer 300 ein, dann ist das ok so.
__________________

Tradertool
Mit Zitat antworten
  #14 (permalink)  
Alt 23.05.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Warum korrektes Runden von Stoploss und Takeprofit so wichtig ist | Code4Trading
Code:
extern double Stoploss=0.0;
extern double Takeprofit=0.0;
Code:
//SL / TP Berechnung
double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
double openPrice=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);
double buy_SL=NormalizeDouble(openPrice-Stoploss*_Point,_Digits);
double buy_TP=NormalizeDouble(openPrice+Takeprofit*_Point,_Digits);
double sell_SL=NormalizeDouble(openPrice+Stoploss*_Point,_Digits);
double sell_TP=NormalizeDouble(openPrice-Takeprofit*_Point,_Digits);
Wenn ich den Kram nicht eintrage, nutzt er wie gesagt 0 als Berechnungsgrundlage für den TP. Und ich denke auch mal fürn SL, würde der 0 betragen.
Code:
//SL / TP "deaktivieren" wenn sie 0.0 betragen
if(Stoploss==0.0)buy_SL=0.0;
if(Stoploss==0.0)sell_SL=0.0;
if(Trailing_Stop==0.0)buy_TS=0.0;
if(Trailing_Stop==0.0)sell_TS=0.0;
if(Takeprofit==0.0)buy_TP=0.0;
if(Takeprofit==0.0)sell_TP=0.0;
Jedenfalls scheint er so zu funktionieren.

Jedenfalls soll jetzt nen Trailing Stop rein. Und zwar, indem mit OrderModify der SL immer wieder hinterher gezogen wird. Ist im Großen und Ganzen klar, nur weiß ich nicht, wie man das jetzt berechnet.
Angehängte Dateien
Dateityp: mq4 Valerius_SL_TS_TP_B0B1_RSI_STOCHA_WPR_MT4_EA.mq4 (20,1 KB, 1x aufgerufen)
Mit Zitat antworten
  #15 (permalink)  
Alt 23.05.17
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 294
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Na das sieht ja schon nach was aus!
Kleine Korrektur: Du brauchst sowohl Ask als auch Bid.
Code:
double openAsk=NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),_Digits);
double openBid=NormalizeDouble(MarketInfo(Symbol(),MODE_BID),_Digits);
double buy_SL =NormalizeDouble(openAsk-Stoploss  *_Point,_Digits);
double buy_TP =NormalizeDouble(openAsk+Takeprofit*_Point,_Digits);
double sell_SL=NormalizeDouble(openBid+Stoploss  *_Point,_Digits);
double sell_TP=NormalizeDouble(openBid-Takeprofit*_Point,_Digits);
Sieht bei mir sehr ähnlich aus:
Code:
//+------------------------------------------------------------------+
//| Calculate SL, TS, TP                                             |
//+------------------------------------------------------------------+
void CalcStopsLong ()
{
   if(SL>0) SL_Buy =NormalizeDouble(Ask-SL*_Point,_Digits);
   if(TS>0) TS_Buy =NormalizeDouble(Ask-TS*_Point,_Digits);
   if(TP>0) TP_Buy =NormalizeDouble(Ask+TP*_Point,_Digits);
}

void CalcStopsShort()
{
   if(SL>0) SL_Sell=NormalizeDouble(Bid+SL*_Point,_Digits);
   if(TS>0) TS_Sell=NormalizeDouble(Bid+TS*_Point,_Digits);
   if(TP>0) TP_Sell=NormalizeDouble(Bid-TP*_Point,_Digits);
}
Den Trailingstop aktualisierst du laufend, und wenn die Position im Gewinn ist und der TS über dem Einkaufspreis (jetzt für eine Long Order), änderst du mit OrderModify(...) den StopLoss Level.
Eine Schrittweite bzw ein Schwellwert (zb OrderStep) sollte auch noch definiert und geprüft werden, damit OrderModify() nicht bei jeder minimalsten Änderung ausgelöst wird.

Ich hoffe dir weitergeholfen zu haben.
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Mit Zitat antworten
  #16 (permalink)  
Alt 23.05.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.857
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

@Kronenchakra, da gehst Du aber bei Dir stillschweigend davon aus, dass die Werte der Variablen SL, TS und TP bereits ggf. auf den 5-Digit-Modus angepasst wurden.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #17 (permalink)  
Alt 24.05.17
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 294
Kronenchakra befindet sich auf einem aufstrebenden Ast
Standard

Ja klar, ich verkauf das ja nicht und ich habe meinen Broker.
Warum soll ich es mir dann komplizierter machen
LG Otto
__________________
Das Gras wächst nicht schneller wenn man daran zieht
Mit Zitat antworten
  #18 (permalink)  
Alt 24.05.17
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.857
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Das ist auch klar. Als Lehrbeispiel sollte man da evtl. doch darauf verweisen, für die nicht so Sattelfesten.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #19 (permalink)  
Alt 25.05.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Abend.

Es passiert immer wieder, was ich ein wenig befürchtet hatte. Er richtet sich im H1 nach Bar 1. Wenn die nen Signal gibt, steigt er ein. Das auch, wenn der Kurs gerade in die andere Richtung gedreht hat und in den Verlust geht. Er geht durch den SL, Bar 1 gibt aber immer noch für den Rest der Stunde das Einstiegssignal. Welches er auch fröhlich befolgt bis zum Sankt Nimmerleinstag...

Hatte in einer Vers. zwar auch die Indis auf Bar 0 angesetzt. Allerdings könnten die ja wieder für nen viel zu späten Einstieg sorgen, wenn der Trend schon wieder vorbei ist und nix als Spesen bleiben...

Vielleicht den SL höher einstellen? Steht derzeit auf 80.0 .
Angehängte Dateien
Dateityp: mq4 Valerius_SLTP_B0B1_RSI_STOCHA_WPR_MT4_EA.mq4 (18,1 KB, 2x aufgerufen)
Mit Zitat antworten
  #20 (permalink)  
Alt 03.06.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wollt mir erst wieder hochwissenschaftlich das Hirn verrenken, aber: Geht der ganze Mist mit mql5 vielleicht einfacher? Bzw. sollte man grundsätzlich auf mql5 umsteigen?
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, programmierung mql4, sl, stoploss, takeprofit, tp


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 +2. Es ist jetzt 13:06 Uhr.



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.
-----------------------------------------------------------------------------------------------------------------------------