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"
Es ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder EinloggenEs ist Dir nicht erlaubt Links zu betrachten.
Registrieren oder Einloggen