Autor Thema: mql4 Codeschnipsel für Indicatoren und EA's  (Gelesen 881 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

  • FORENTROLL
  • Sponsor
  • Extremschreiber
  • *
    • Beiträge: 625
    • Karma: +249/-5
    • Mitglied seit:
      05 Jan 2011
    • just trading
  • Broker: diverse

  • Stop
mql4 Codeschnipsel für Indicatoren und EA's
« am: Mai 08, 2011, 07:29:55 am »
Wie angekündigt poste ich hier mal einige Codeschnipsel.
Ich habe das nicht alles selbst programmiert, aber vieles geändert und/oder angepaßt.
Dem einen oder anderen wird es sicherlich helfen, erspart es doch die lästige Arbeit, alles immer und immer wieder zusammenzukopieren wenn man  etwas neues programmiert.

Auch wenn die beiden hier nicht mitlesen und kein deutsch sprechen:
Ohne Steve Hopwood (Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen) und Mark Johnson (Scooby-Doo, Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen)
würde ich wohl nichtmals halb so weit sein in meinem Lernprozeß. Wer sich die Beiträge/programme der beiden im Nachbarforum ansieht wird
wissen was ich meine.

Die Tradefunktionen sollten so laufen, trailingstop habe ich nicht getestet. Wenn jemand Fehler findet oder Verbesserungsvorschläge hat bin ich dankbar wenn sie hier gepostet werden.

Die Dateien gehören ins MT4/experts/include Verzeichnis, eingebunden wird das ganze im EA oder Indicator wie folgt:

#include <inc.determineTrendFunctions.mqh>
#include <inc.dateTimeFunctions.mqh>
#include <inc.tradeFunctions.mqh>
#include <inc.miscFunctions.mqh>

Erläuterungen finden sich teilweise ebenfalls im code.


zu den einzelnen Funktionen in den Dateien (hoffe ich habe jetzt keine vergessen):

inc.dateTimeFunctions.mqh:
==========================

string daynumberToString(int daynumber)
  daynumberToString(5) : returns friday (converts daynumber to string name)

string gmtTime(int gmtShift, int hourOrDaynumber)
  gmtTime(6,0): returns current hour in gmt timezone (e.g. 14 for time 14:01 - 14:59)
  gmtTime(6,1): returns number of current day in gmt timezone (e.g. 5 for friday)
  gmtTime(6,2): returns name of the current day in gmt timezone (e.g. friday)


inc.miscFunctions.mqh:
======================

bool doAlert(string symbol,string message,bool popup,bool playsound,bool sendemail)
  e.g. doAlert(Symbol(),"BUY ORDER OPENED",true,false,false)

bool NewsExist(int minutesUntilNextEvent, int minutesSincePrevEvent)
  --> BENÖTIGT DEN ECONOMIC NEWS INDICATOR. Download siehe hier:
      Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen
  checks if there are or have been news, e.g. if (NewsExist(30,30) DO SOMETHING

int makeRandomMagicNumber(string key)
  e.g. magic = makeRandomMagicNumber(WindowExpertName() + Symbol() + Period());
 
int getPairsPassed(string &Pairs,string &FX[])
  if useIndividualPairs = true, extract individual pairs from the string

inc.tradeFunctions.mqh:
=======================

bool checkIfEnoughFreeMargin()
  checks if there is enough free account margin for trading

bool doesPairExist(string symbol)
  checks if a pair is available for trading
 
int getOrdersPerPairAndMagic
  returns amount of open orders per pair and magicnumber

int getOrdersPerMagic(int magicNumber)
  returns amount of open orders by magicnumber

bool pairTradeExist(string symbol, int magicNumber)
  checks if a pair has already an open trade
  e.g. if !pairTradeExist(symbol,MAGIC) TRADEOK

void checkIfStopLossAlreadyHit(string symbol, int magicNumber)
  checks if stopLoss already hit (e.g. because of gaps) and closes all matching orders
  checkIfStopLossAlreadyHit(symbol,MAGIC);

double calcTPSL(string symbol, int type, int stoplossPips, int takeprofitPips, int atrMultiplier, int atrTF, int atrPeriod, bool useATR, int mode)
  mode = 0 : calculate stoploss
  mode = 1 : calculate takeprofit
  e.g. do not use ATR, calculate stoploss:
   calcTPSL(symbol,OP_BUY,STOPLOSSPIPS,TAKEPROFITPIPS,0,0,0,false,0)
  e.g. use ATR 14 (tf 1Hour, multiplier: 2), calculate takeprofit:
   calcTPSL(symbol,OP_SELL,0,0,2,60,14,true,1)

double calcLotSize(string symbol, int tf, int atrPeriod, double atrMultiplier, int riskPerTrade, double lots, int calcMode)
  default e.g.: calcLotSize(symbol,15,14,3,5,double lots,0)
  calcMode = 0 : use fixed lots amount
  calcMode = 1 : use ATR to calculate lotsize
  calcMode = 2 : use account balance to calculate lotsize
  calcMode = 3 : use account free margin to calculate lotsize

bool sendSingleTrade(string symbol, int type, double lotsize, int maxSlippagePips, int maxSpreadPips, double stop, double take, string comment, int magic, int tradeExpiryMinutes, bool brokerIsECN)
  e.g.: sendSingleTrade(symbol,OP_BUY,LOTS,SLIPPAGE,SPREAD,STOPLOSS,TAKEPROFIT,"",MAGIC,0,false)

void checkTrailingStop(string symbol, int magicNumber, int trailingStopPips, int startToTrailAfterPips, int mode)
  checkTrailingStop(symbol,MAGIC,20,15,0)
  trail after breakeven only: mode = 0
  trail after order is in profit (> 1 in account currency) only: mode = 1

int CloseAllTrades(int option, int magicNumber, string commentText)
  close all by magic number: CloseAllTrades(3,magicNumber,"");

int closeOrderFunction(string symbol, int type, int magicNumber)
  e.g. closeOrderFunction(symbol,OP_SELL,Magic);
 
int checkForCloseOrdersAtMinProfit(string symbol,int MagicNumber,double minProfit)
  e.g. checkForCloseOrdersAtMinProfit(symbol,Magic,minProfit);


inc.determineTrendFunctions.mqh:
================================

string checkTrendSMA
  e.g. checkTrendSMA(symbol,H4,200) = "U"
  example.: BUY: trend on 4H and 1D is UP / RSI 15M and 1H OverSold
            SELL: trend on 4H and 1D is DOWN / RSI 15M and 1H OverBought

string SignalEmaCrossing(string symbol, int tf, int fastEMA, int slowEMA)
 checks if 2 emas crossed
  SignalEmaCrossing(symbol,timeframe,fastEma,SlowEma) = "U"
  SignalEmaCrossing(symbol,timeframe,5,8) = "U"/"D"/"F"

string threeEmaTrend(string symbol, int tf, int fastEmaPeriod, int middleEmaPeriod, int slowEmaPeriod)
 checks 3 emas, fast over middle, middle over slow = up / fast under middle, middle under slow = down 
  threeEmaTrend(symbol,timeframe,fastEmaPeriod,middleEmaPeriod,slowEmaPeriod) == "U"
  threeEmaTrend(symbol,60,20,34,100) == "U"/"D"/"F"

string fastSlowEmaTrend(string symbol, int tf, int fastEmaPeriod, int slowEmaPeriod)
 checks if fast ema over or under slow ema
  fastSlowEmaTrend(symbol,timeframe,fastEmaPeriod,slowEmaPeriod) == "U"
  fastSlowEmaTrend(symbol,timeframe,20,200) == "U"/"D"/"F"

string ichimokuTrend(string symbol, int tf, int TenkanPeriod, int KijunPeriod, int SenkouPeriod)
 checks if tenkan sen is over/under kijun sen
  ichimokuTrend(symbol,timeframe,TenkanPeriod,KijunPeriod,SenkouPeriod) == "U"
  ichimokuTrend(symbol,timeframe,7,22,44) == "U"/"D"/"F"

double ADX(string symbol, int tf, int adxPeriod, int mode)
  ADX(symbol,timeframe,adxPeriod,0) > 20
  mode : 0 = MODE_MAIN
         1 = MODE_PLUSDI
         2 = MODE_MINUSDI     

double RSI(string symbol, int tf, int rsiPeriod)
 returns the rsi
  RSI(symbol,timeframe,rsiPeriod) >/< XYZ

string cciTrend(string symbol, int tf, int cciPeriod)
 checks if cci rising or falling
  cciTrend(symbol,timeframe,cciPeriod) = "U"/"D"/"F"

string macdTrend(string symbol, int MACDtimeframe, int MACDfastEmaPeriod, int MACDslowEmaPeriod, int MACDsignalPeriod)
 checks if macd signalline is over/under 0 and macd rising/falling
  macdTrend(string symbol,timeframe,MACDfastEmaPeriod,MACDslowEmaPeriod,MACDsignalPeriod) = "U"/"D"/"F"
  macdTrend(string symbol,60,14,21,9) = "U"/"D"/"F"

string stochCross(string symbol, int tf, int KPeriod, int DPeriod, int Slowing)
  stochCross(symbol,tf,8,5,3) = "F"/"U"/"D"


  • FORENTROLL
  • Sponsor
  • Extremschreiber
  • *
    • Beiträge: 625
    • Karma: +249/-5
    • Mitglied seit:
      05 Jan 2011
    • just trading
  • Broker: diverse

  • Stop
Antw:mql4 Codeschnipsel für Indicatoren und EA's
« Antwort #1 am: Mai 08, 2011, 07:46:48 am »
Hier ein Blanko-EA Gerüst.

Hier müssten noch die externen Variablen ggf. ergänzt werden (z.b. um Eingabe für Perioden für Indikatoren) sowie die Bedingen für OPEN/CLOSE Orders gesetzt werden.
Ausserdem würde dieser EA den Economic News Indicator benötigen, download hier im Forum unter Es ist Dir nicht erlaubt Links zu betrachten. Registrieren oder Einloggen

Einfach im Quelltext nach EDIT suchen, dann seht Ihr wo man die Ergänzungen unterbringen muß ...

Anregungen/Verbesserungen - Immer her damit  :)
« Letzte Änderung: Mai 08, 2011, 07:50:31 am von fxdaytrader »



 

Ähnliche Themen

  Betreff / Begonnen von Antworten Letzter Beitrag
0 Antworten
588 Aufrufe
Letzter Beitrag November 15, 2008, 22:47:16 pm
von Gregor
15 Antworten
4224 Aufrufe
Letzter Beitrag Juni 19, 2011, 00:43:25 am
von Egetuerk
17 Antworten
3906 Aufrufe
Letzter Beitrag Juni 30, 2011, 14:07:38 pm
von Andreas
39 Antworten
7255 Aufrufe
Letzter Beitrag Oktober 10, 2011, 15:26:31 pm
von Covolt
2 Antworten
1810 Aufrufe
Letzter Beitrag Juli 25, 2010, 01:17:32 am
von Divecall
9 Antworten
1269 Aufrufe
Letzter Beitrag März 16, 2012, 17:21:47 pm
von flapbone
20 Antworten
2466 Aufrufe
Letzter Beitrag Dezember 06, 2010, 09:22:23 am
von nightyhawk
4 Antworten
179 Aufrufe
Letzter Beitrag Januar 15, 2012, 21:42:49 pm
von divebubble


ChartTec´s World Topsites