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: 3627
Beiträge: 35737
Benutzer: 5.755
Aktive Benutzer: 625
Links: 80
Wir begrüßen unseren neuesten Benutzer: Piz_Buin
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- Piz_Buin
vor einem Tag
- ThisIsSef
vor einem Tag
- ASZSpeedy
vor 2 Tagen
- Superopa
vor 2 Tagen
- mkdaher

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 53
Gesamt: 55
Team: 0
Team:  
Benutzer:  Collider, Nostradamus
Freunde anzeigen

Empfehlungen

Werbung

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt vor einer Woche
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 257
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 vor einer Woche
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 558
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 vor einer Woche
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 362
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.
__________________

Du suchst ein Tradertool?
Mit Zitat antworten
  #14 (permalink)  
Alt vor 4 Tagen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 558
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, 0x aufgerufen)
Mit Zitat antworten
  #15 (permalink)  
Alt vor 4 Tagen
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 257
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 vor 4 Tagen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.743
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 vor 4 Tagen
Benutzerbild von Kronenchakra
Mitglied
 
Registriert seit: Feb 2016
Ort: 2100 Österreich
Beiträge: 257
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 vor 4 Tagen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.743
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 vor 2 Tagen
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 558
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, 1x aufgerufen)
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 10:37 Uhr.



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