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: 3822
Beiträge: 36902
Benutzer: 6.068
Aktive Benutzer: 492
Links: 80
Wir begrüßen unseren neuesten Benutzer: supadog
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 10 Stunden
- supadog
vor einem Tag
- POCJonah7
vor einem Tag
- flowi88
vor einem Tag
- dealtycoon
vor einem Tag
- VicenteWuc

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 51
Gesamt: 53
Team: 0
Team:  
Benutzer:  Domke01, fxnoob
Freunde anzeigen

Empfehlungen

Werbung

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 +1. Es ist jetzt 09:24 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.
-----------------------------------------------------------------------------------------------------------------------------