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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4972
Beiträge: 43327
Benutzer: 7.217
Aktive Benutzer: 85
Links: 84
Wir begrüßen unseren neuesten Benutzer: DFeck
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin
vor 3 Wochen
- mMmaanu

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 90
Gesamt: 91
Team: 0
Team:  
Benutzer:  DFeck
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard Trailing Stop setzen

Hallo Leute,
bin am verzweifeln. Bekomme es nicht gebacken eine Trailing Stop in mein Programm zu integrieren.Meine Programmierkenntnisse sind sehr bescheiden. Wäre sehr dankbar, wenn jemand helfen könnte.
Meine Startroutine sieht bisher so aus. Orders werden gesetzt, jedoch ohne Trailing Stops.
Gruß Dieter


int start()
{


Comment("Copyright © 2014 *** Robot_Dax ***"+"\n"+
"TimeStart " , TimeStart, "\n",
"TimeEnd " , TimeEnd, "\n",
"MaxPrice ", Max_Price, "\n",
"MinPrice " , Min_Price, "\n",
"Akt.Preis ", Ask, "\n");


if (MoneyManagement)
{
if (Risk<1 || Risk>100)
{
Comment("Invalid Risk Value.");
return(0);
}
else
{
Lots=MathFloor((AccountFreeMargin()*AccountLeverag e()*Risk*Point*BrokerMultiplier*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo( Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_M INLOT);
}
}
datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".", Year()," ",TimeStart, ":00"));
datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".", Year()," ",TimeEnd, ":00"));
datetime Time_CloseOrder = StrToTime(StringConcatenate(Day(),".",Month(),".", Year()," ",TimeCloseOrder,":00"));

if (Time_CloseOrder>Time_End) if (CurTime()>=Time_CloseOrder) CLOSEORDERS();

int tip;
if (Orders>OrdersTotal()) tip=CloseOrder();
Orders=OrdersTotal();

if (ORDERS(0)==0 && tip==0 && (CurTime()<Time_CloseOrder || Time_CloseOrder<=Time_End) && TradeDay!=TimeDay(CurTime()))
{
int BarStart = iBarShift(NULL,0,Time_Start,false);
int BarEnd = iBarShift(NULL,0,Time_End ,false);
Max_Price=iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,B arStart-BarEnd,BarEnd));
Min_Price=iLow (NULL,0,iLowest (NULL,0,MODE_LOW, BarStart-BarEnd,BarEnd));

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1)
{
ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet ("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);
ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME1 ,Time_Start);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);
ObjectSet ("bar0"+Time_End, OBJPROP_TIME2 ,Time_End);
ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);
}


if(Bid > Max_Price && order == 0)
{
OrderSend(Symbol(), OP_BUY, Lots, Ask,Slippage, Ask-SL,Ask+TP, "br", Magic, 0, Green);
order=order+1;
}

if(Ask < Min_Price && order == 0)
{
OrderSend(Symbol(), OP_SELL, Lots, Bid,Slippage, Bid+SL,Bid-TP, "br", Magic, 0, Green);
order=order+1;
}

return(0);
}

if (No_Loss) No_Loss();
if (tip==1 && TradeDay!=TimeDay(CurTime()))
{
Lots=Lots*K_martin;

if (tipOrders==0) OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP ,NULL,Magic,Blue);
if (tipOrders==1) OrderSend(Symbol(),OP_BUY ,Lots,Ask,Slippage,SL,TP,NULL,Magic,Blue);
}
return(0);
}
  #2 (permalink)  
Alt 24.08.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

Suche dir eine trailingstop-funktion (bspw. über google) und implementiere sie in dem EA.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #3 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

habe ich schon versucht. Leider ohne Erfolg. Bekomme einfach nicht die richtige Schleife integriert. Deshalb mein Programmausschnitt. Vielleicht kann mir jemand die Routine in das Programm kopieren.
Danke im voraus.
Dieter
  #4 (permalink)  
Alt 24.08.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 dieter23 Beitrag anzeigen
habe ich schon versucht. Leider ohne Erfolg. (...) Vielleicht kann mir jemand die Routine in das Programm kopieren.
Wo ist sie denn die Routine? Die müsstest Du hier schon mit anhängen.
__________________
krank im Kopf aber sonst ganz nett
build 509 mql4 editor download
  #5 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

habe diese Routine versucht einzubauen. Leider funktioniert der Trailing Stop nicht. Keine Ahnung wo der Fehler liegt.


double PointValue;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
PointValue = MarketInfo(OrderSymbol(), MODE_POINT);

double TSTP = TrailingStop * PointValue;
if (OrderType() == OP_BUY)
{ if ((Bid - OrderOpenPrice()) > TSTP)
{ if (OrderStopLoss() < (Bid - TSTP))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSTP, OrderTakeProfit(), Red);
}}}

else if (OrderType() == OP_SELL)
{ if ((OrderOpenPrice() - Ask) > TrailingStop * PointValue)
{ if ((OrderStopLoss() > (Ask + TrailingStop * PointValue)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSTP, OrderTakeProfit(), Red);
}}}}
  #6 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

habe die Routine eingebaut. Ist aber irgendwo noch ein Fehler drin. Orders werden gesetzt, leider aber kein Trailing Stop ausgeführt.
Bitte um H I L F E ! !


for (int i = 0; i < OrdersTotal(); i++)
OrderSend(Symbol(), OP_BUY, Lots, Ask,Slippage, Ask-SL,Ask+TP, "br", Magic, 0, Green);
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
PointValue = MarketInfo(OrderSymbol(), MODE_POINT);

double TSTP = TrailingStop * PointValue;
if (OrderType() == OP_BUY)
{ if ((Bid - OrderOpenPrice()) > TSTP)
{ if (OrderStopLoss() < (Bid - TSTP))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSTP, OrderTakeProfit(), Red);
}}}
OrderSend(Symbol(), OP_SELL, Lots, Bid,Slippage, Bid+SL,Bid-TP, "br", Magic, 0, Green);
if (OrderType() == OP_SELL)
{ if ((OrderOpenPrice() - Ask) > TrailingStop * PointValue)
{ if ((OrderStopLoss() > (Ask + TrailingStop * PointValue)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSTP, OrderTakeProfit(), Red);
}}}}

return(0);
}

if (No_Loss) No_Loss();
if (tip==1 && TradeDay!=TimeDay(CurTime()))
{
Lots=Lots*K_martin;

if (tipOrders==0) OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP ,NULL,Magic,Blue);
if (tipOrders==1) OrderSend(Symbol(),OP_BUY ,Lots,Ask,Slippage,SL,TP,NULL,Magic,Blue);
}
return(0);
  #7 (permalink)  
Alt 24.08.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Nicht in die OrderSend-Funktion einbauen, sondern den Code des Trailings in eine separate Funktion packen, z.B. Trailing() und diese mit jedem ankommenden Tick auch separat anspringen.

Desweiteren muß berücksichtigt werden, ob Du einen 5-Digit-Broker hast, dann müßte die Variable TrailingStop mit 10 multipliziert werden.

Also über if (Digit == 3 || Digit == 5) Multiplier = 10;

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

vielen Dank für den Tipp, wede es gleich mal testen.
Gruß Dieter
  #9 (permalink)  
Alt 24.08.14
Mitglied
 
Registriert seit: Sep 2013
Beiträge: 35
dieter23 befindet sich auf einem aufstrebenden Ast
Standard

habe die Routine in eine separate Trailing() Funktion gelegt. Was meinst du mit " bei jedem Tick anspringen "

Dieter
  #10 (permalink)  
Alt 24.08.14
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

int start() {
.....
Trailing();
.....
}

Bei Dir lag der Trailingcode innerhalb der OrderSend-Funktion und die wird eigentlich nur angesprungen, wenn eine Order geöffnet werden soll.
Die Trailing-Funktion muß aber zu jeder Zeit die offenen Orders managen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, trailing stop, trailingstop

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 09:40 Uhr.





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