Das Arbeitsbuch für die Programmierung automatischer Handelssysteme im MetaTrader 4 richtet sich an alle, die Programmierkenntnisse in der Programmiersprache MQL 4 erlangen wollen. Ziel des Buches ist es, dem Leser die Kenntnisse zu vermitteln individuelle Expert Advisor Programme zu programmieren. Durch die Erläuterung verschiedener Funktionen und Anwendungen können die Einsatzmöglichkeiten der Programmiersprache MQL4 vom Leser nachvollzogen und eigenständig umgesetzt werden. Schrittweise wird der Leser in die Programmiersprache eingeführt und anhand von Beispielprogrammen können Programmiertechniken gelernt werden.
Mehr Erfahren →Es gibt viele Möglichkeiten, einen Trend zu verifizieren. Einige Trader verwenden gleitende Durchschnitte, einige verwenden Trendlinien, andere verwenden eine Kombination dieser Werkzeuge oder andere Indikatoren.
Der Supertrend-Indikatorist ein weiterer einfacher Indikator, der helfen kann, den Trend zu erkennen. Er berücksichtigt jedoch zusätzlich die Volatilität des Basiswertes mit Hilfe des ATR-Indikators.
Der Supertrend-Indikator kann in den folgenden Situationen nützlich sein:
Supertrend kann ein Einstiegssignal, ein Ausstiegssignal und ein Stop-Loss-Follower sein.
Der Supertrend-Linienindikator ist wahrscheinlich einer der beliebtesten benutzerdefinierten Indikatoren. Der Indikator ist ideal für Trendfolgestrategien, um einen anhaltenden Trend zu erkennen.
Außerdem kann er verwendet werden, um zu kaufen, wenn der Preis von einem Abwärtstrend in einen Aufwärtstrend wechselt und im umgekehrten Fall zu verkaufen.
Der Supertrend-Indikator ist ein sehr einfach zu verwendender Indikator. Er wird jedoch stark von einem schwankenden Markt beeinflusst und kann falsche Signale liefern. Es kann helfen, den Supertrend in Kombination mit einigen anderen Indikatoren zu verwenden, um bessere Signale zu liefern.
Supertrend Obere Linie = (High + Low) / 2 + Multiplikator × ATR.
Supertrend Untere Linie = ( High + Low) / 2 - Multiplikator × ATR.
Das Ablesen des Supertrend-Indikators ist sehr einfach.
Zunächst einmal zeigt der Indikator nur eine einzige Linie auf dem Chart an. Diese Linie ist der Supertrend.
Wenn sich die Kerzen oberhalb der Linie befinden, bedeutet dies, dass sich das Währungspaar wahrscheinlich in einem Aufwärtstrend befindet.
Wenn sich die Kerzen unterhalb der Linie befinden, bedeutet dies, dass sich das Währungspaar wahrscheinlich in einem Abwärtstrend befindet.
Wenn die Linie von unten nach oben oder umgekehrt wechselt, bedeutet dies, dass der Trend beendet ist und sich wahrscheinlich umkehrt.
Der Supertrend-Indikator unterstützt eine Reihe von Eingabeparametern. Sie sind nützlich, um die Empfindlichkeit und Reaktion des Indikators zu konfigurieren.
#property version ""
#property strict
#property indicator_chart_window
#property indicator_color1 clrBlue
#property indicator_color2 clrMagenta
#property indicator_width1 4
#property indicator_width2 4
#property indicator_buffers 3
double TrendUp[], TrendDown[], TrendResult[];
int changeOfTrend;
input string IndicatorName="SUPERTREND"; //Objects Prefix (used to draw objects)
extern double ATRMultiplier=3.0; //ATR Multiplier
extern int ATRPeriod=20; //ATR Period
extern int ATRMaxBars=1000; //ATR Max Bars (Max 10.000)
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---- indicators
IndicatorSetString(INDICATOR_SHORTNAME,IndicatorName);
SetIndexBuffer(0, TrendUp);
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, indicator_width1);
SetIndexLabel(0, "Trend Up");
SetIndexBuffer(1, TrendDown);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, indicator_width2);
SetIndexLabel(1, "Trend Down");
SetIndexBuffer(2, TrendResult);
SetIndexStyle(2, DRAW_NONE);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[]){
int limit, i, flag, flagh, trend[10000];
double up[10000], dn[10000], medianPrice, atr;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit=Bars-counted_bars;
if(Bars < ATRMaxBars+2+ATRPeriod) ATRMaxBars=Bars-2-ATRPeriod;
if(ATRMaxBars < =0){
Print("Need more historical data to calculate the Supertrend");
return 0;
}
for (i = ATRMaxBars; i > = 0; i--) {
TrendUp[i] = EMPTY_VALUE;
TrendDown[i] = EMPTY_VALUE;
TrendResult[i] = EMPTY_VALUE;
atr = iATR(NULL, 0, ATRPeriod, i);
medianPrice = (High[i]+Low[i])/2;
up[i]=medianPrice+(ATRMultiplier*atr);
dn[i]=medianPrice-(ATRMultiplier*atr);
trend[i]=1;
if (Close[i] > up[i+1]) {
trend[i]=1;
if (trend[i+1] == -1) changeOfTrend = 1;
}
else if (Close[i] < dn[i+1]) {
trend[i]=-1;
if (trend[i+1] == 1) changeOfTrend = 1;
}
else if (trend[i+1]==1) {
trend[i]=1;
changeOfTrend = 0;
}
else if (trend[i+1]==-1) {
trend[i]=-1;
changeOfTrend = 0;
}
if (trend[i] < 0 && trend[i+1] > 0) {flag=1;}
else {flag=0;}
if (trend[i] > 0 && trend[i+1] < 0) {flagh=1;}
else {flagh=0;}
if (trend[i] > 0 && dn[i] < dn[i+1])
dn[i]=dn[i+1];
if (trend[i] < 0 && up[i] > up[i+1])
up[i]=up[i+1];
if (flag==1)
up[i]=medianPrice+(ATRMultiplier*atr);
if (flagh==1)
dn[i]=medianPrice-(ATRMultiplier*atr);
if (trend[i]==1) {
TrendUp[i]=dn[i];
if (changeOfTrend == 1) {
TrendUp[i+1] = TrendDown[i+1];
changeOfTrend = 0;
}
}
else if (trend[i]==-1) {
TrendDown[i]=up[i];
if (changeOfTrend == 1) {
TrendDown[i+1] = TrendUp[i+1];
changeOfTrend = 0;
}
}
TrendResult[i]=trend[i];
}
ChartRedraw();
WindowRedraw();
return(0);
}
//+------------------------------------------------------------------+
Die vom Betreiber zur Verfügung gestellten Inhalte auf der Internetseite tradissimo.de, in E-Mail Newslettern und Produkten geben entweder die individuellen Erfahrungen des Betreibers wieder oder beruhen auf sorgfältiger Recherche, denen Quellen Dritter zu Grunde liegen und vom Betreiber als vertrauenswürdig und zuverlässig erachtet werden. Der Betreiber übernimmt keinerlei Gewährleistung für die Aktualität, Richtigkeit oder Vollständigkeit der Inhalte. Alle vom Betreiber erhältlichen Informationen, Angaben und Produkte dienen lediglich zu Informationszwecken und sind nicht als Anlageberatung oder als Kauf- bzw. Verkaufsempfehlung bestimmter Anlageprodukte zu verstehen. Die angebotenen Produkte und Informationen können eine individuelle Beratung nicht ersetzen.
Der Nutzer der Informationen und/oder der Produkte, die vom Betreiber angeboten werden, wird ausdrücklich darauf hingewiesen, dass der Handel mit Derivaten, wie beispielsweise CFD- und FOREX, erhebliche Risiken beinhalten und als hochspekulative Geschäfte anzusehen sind, die Risiken bergen, welche über den Totalverlust des eingesetzten Kapitals hinausgehen können. Durch den Einsatz automatischer Handelssysteme entstehen zusätzliche Risiken wie beispielsweise der Ausfall der Internetverbindung, Fehler im Programmcode oder Hard- oder Softwareprobleme. Darüber hinaus sind positive Ergebnisse einer Handelsstrategie in der Vergangenheit, keine Garantie für künftige Gewinne.
Trifft der Nutzer, auf Grund der vom Betreiber angebotenen Informationen oder Produkte, eine Handelsentscheidung oder verwendet einen vom Betreiber angebotenen Handelsroboter (Expert Advisor), so handelt er stets eigenverantwortlich, auf eigene Gefahr und auf eigenes Risiko. Die Haftung für Schäden materieller oder ideeller Art, die durch die Nutzung oder Nichtnutzung der Informationen und/oder Produkte bzw. durch die Nutzung fehlerhafter und/oder unvollständiger Informationen und/oder Produkte verursacht wurden, sind grundsätzlich ausgeschlossen.
Dieses Buch richtet sich an MQL4 Programmierer, die bereits über Erfahrungen in der Programmierung mit MQL4 erlangt haben, jedoch bei der Erstellung von Expert Advisor Programmen oder Indikatoren immer wieder auf Probleme stoßen, die eine Lösung benötigen. Es soll für verschiedene Probleme, die bei der Programmierung mit MQL4 auftreten können, eine entsprechende Lösung bieten, ohne das der Programmierer endlos lange überlegen oder noch länger im Internet nach einer Lösung suchen muss. Dieses Buch ist keine Anleitung, um MQL4 zu erlernen und es ist auch kein Nachschlagewerk für bestimmte Begrifflichkeiten der Programmiersprache MQL4. Es ist vielmehr der tägliche Begleiter eines MQL4 Programmierers der bereits die Grundzüge der Sprache beherrscht, aber bei der Umsetzung verschiedener Ideen entsprechende Lösungsansätze benötigt.
Mehr Erfahren →