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: 3961
Beiträge: 37801
Benutzer: 6.249
Aktive Benutzer: 404
Links: 80
Wir begrüßen unseren neuesten Benutzer: HoigerHL69
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 13 Stunden
- HoigerHL69
vor einem Tag
- sergej_bln
vor 2 Tagen
- metatrader...
vor 3 Tagen
- darkknight
vor 3 Tagen
- callimeroo

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 40
Gesamt: 42
Team: 0
Team:  
Benutzer:  fxnoob, traderdoc
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.09.14
Mitglied
 
Registriert seit: Feb 2014
Beiträge: 32
PitPoke befindet sich auf einem aufstrebenden Ast
Standard TrailingStop in vorhanden Code einsetzen.

Hallo,

da ich mich jetzt so nach und nach mit mql4 beschäftigen möchte, habe ich mir verschieden frei erhältliche Codes angesehen.
Sehr interessiert hat mich da der TimeTrader mit dessen Code ich anfangen möchte zu lernen.
Ziel ist es, in diesen vorhanden Code einen Trailing-Stop einzubauen.
Ich habe mir auch schon einige hier gepostete Codes für einen BE oder TrailingStop angesehen. Auch wenn ich die Meinung vertrete, dass das Lernen und studieren von vorhandenen Codes besser ist, als etliche Bücher zu wälzen... Ich bekomme aber im Moment einfach nicht hintereinander, wie die Codeschnippsel harmonieren könnten.

Hier der Code um den es geht:

Code:
//+------------------------------------------------------------------+
//|                                                  time trader.mq4 |
//|                            Copyright © 2012, www.FxAutomated.com |
//|                                       http://www.FxAutomated.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, www.FxAutomated.com"
#property link      "http://www.FxAutomated.com"
//---- input parameters
extern string   time_trader_v2="visit www.FxAutomated.com for more!!!";
extern double   Lots=0.4;
extern int      TakeProfit=5;
extern int      StopLoss=10;
extern int      TrailingStop=3; // <<<<<<<<<<<<<<<<<<
extern int      Slip=5;
extern string   TradeSettings="Mt4 time(min-max): hours 0-23, minutes 0-59, seconds 0-59";
extern bool     AddBuy=true;   // Namen geändert <<<<<
extern bool     AddSell=true;   // Namen geändert <<<<<
extern int      TradeHour=10;
extern int      TradeMinutes=0;
extern string   MagicNumbers="Aendern bei Problemen mit anderen EAs"; //<<
extern int      BuyMagicNumber =10001;
extern int      SellMagicNumber =10002;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  // Alert("Visit www.FxAutomated.com for more goodies!"); <<<<<< anpassen
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert starts                                  |
//+------------------------------------------------------------------+

int start()
  {
//----
int StopMultd,Sleeper=1;



int digits=MarketInfo("EURUSD",MODE_DIGITS);
StopMultd=1; // 10
double TP=NormalizeDouble(TakeProfit*StopMultd,Digits);
double SL=NormalizeDouble(StopLoss*StopMultd,Digits);
double BE=NormalizeDouble(TrailingStop*StopMultd,Digits);  // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
int Slippage=Slip*StopMultd;

// Calculate stop loss
double slb=NormalizeDouble(Ask-SL*Point,Digits);
double sls=NormalizeDouble(Bid+SL*Point,Digits);

// Calculate take profit
double tpb=NormalizeDouble(Ask+TP*Point,Digits);
double tps=NormalizeDouble(Bid-TP*Point,Digits);

//-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+
if(OrdersTotal()>0){
  for(int i=1; i<=OrdersTotal(); i++)          // Cycle searching in orders
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available
        {
          if(OrderMagicNumber()==BuyMagicNumber) {int halt1=1;}
          if(OrderMagicNumber()==SellMagicNumber) {int halt2=1;}
        }
     }
}
//-------------------------------------------------------------------+
// Kauf- und Verkauf-Signale und Ausführung                          +
//-------------------------------------------------------------------+

if((halt1!=1)&&(AddBuy==true)){// halt1

// Kaufen, wenn...
if ((TradeHour==Hour())&&(TradeMinutes==Minute())) //Kauf Signal
 {
   int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"time trader buy order ",BuyMagicNumber,0,Blue);
   if(openbuy<1){int buyfail=1;}
 }
 
}// halt1
 
if((halt2!=1)&&(AddSell==true)){// halt2
RefreshRates();
 // Verkaufen, wenn...
 if ((TradeHour==Hour())&&(TradeMinutes==Minute())) //Verkauf Signal
 {
   int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"time trader sell order ",SellMagicNumber,0,Green);
   if(opensell<1){int sellfail=1;}
 }
 
}// halt2

//-----------------------------------------------------------------------------------------------------
// Hier muss der Trailing Stop untergebracht werden: <<<<<<<<<<<<<<<<

if(OrdersTotal()>0){
  for(i=1; i<=OrdersTotal(); i++){          // Offene Orders suchen
  
      if (OrderSelect(i-1,SELECT_BY_POS)==true){ // If the next is available
        
          if((OrderMagicNumber()==BuyMagicNumber)&&(OrderTakeProfit()==0||OrderStopLoss()==0)) { OrderModify(OrderTicket(),0,slb,tpb,0,CLR_NONE); }
          if((OrderMagicNumber()==SellMagicNumber)&&(OrderTakeProfit()==0||OrderStopLoss()==0)) { OrderModify(OrderTicket(),0,sls,tps,0,CLR_NONE); }

        }
     }
}
//-------------------------------------------------------------------+
// Fehlerausgabe, wenn
//-------------------------------------------------------------------+
if(buyfail==1||sellfail==1){
int Error=GetLastError();
  if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();}
  if(Error==133){Alert("Trading prohibited.");}
  if(Error==2){Alert("Common error.");}
  if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();}

}


//-------------------------------------------------------------------
   return(0);
  }
//+-----------------------------------
Und das ist der Code von einem hier aus dem Forum für einen Trailing-Stop, den ich leider nicht für mich verständlich unterbringen kann:

Code:
void UpdateTS()
{
  for(int i = OrdersTotal() - 1; i >= 0; i--)
	{
	 if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
  	   {
  	    if(OrderType() == OP_BUY && NormalizeDouble(Bid - OrderStopLoss(), Digits) > NormalizeDouble(TrailingStop * Point, Digits))
  	      {
  	       OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailingStop * Point, OrderTakeProfit(), 0);
  	       }
  	     if(OrderType() == OP_SELL && NormalizeDouble(OrderStopLoss() - Ask, Digits) > NormalizeDouble(TrailingStop * Point, Digits))
  		{
  		 OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TrailingStop * Point, OrderTakeProfit(), 0);
  		 }
  	     }
	 }
}
Wie gesagt... ich fange gerade erst frisch an. Ich bin der Meinung, dass ich zumindest schonmal verstehe, wo etwas wie abläuft. Ich habe daher an verschiedenen Stellen im Original Code eigene Beschreibungen hinterlegt.

Stellen die ich bereits im Original Code geändert habe,
sind mit // <<<<<<<<<<<<<<<
gekennzeichnet.

Ich wäre euch sehr dankbar, wenn ihr mir da helfen könntet, und die entsprechende Stelle (die ich im Original Code bereits gekennzeichnet habe) ändert bzw. mir den entsprechenden Code hier postet. Dann kann ich mir das selber mal ansehen und hoffentlich daraus lernen.

lg
Peter
Thema geschlossen

Lesezeichen

Stichworte
ea, expert advisor, mql4, programmierung, programmierung metatrader, 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 +2. Es ist jetzt 11:02 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------