English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Handelsideen basierend auf der Kursrichtung und der Bewegungsgeschwindigkeit

Handelsideen basierend auf der Kursrichtung und der Bewegungsgeschwindigkeit

MetaTrader 4Beispiele | 29 April 2016, 15:17
3 621 0
Alexander Fedosov
Alexander Fedosov

Einleitung

Es ist seit langem bekannt, dass wenn ein Kurs sich bewegt, alle liquiden Märkte eine Art von zyklischer Welle zeigen, die sich zuerst nach oben und dann nach unten bewegt. Man kann dies ganz klar auf Charts mit längeren Zeitrahmen sehen. Das sinusförmige Wesen spiegelt die Tatsache wider, dass der Kurs eine gewisse Beharrlichkeit hat. Sonst wäre ein Zick-Zack am Chart zu sehen: abrupte Auf- und Abwärtsbewegungen innerhalb kurzer Zeiträume. Lassen Sie uns versuchen, Gründe für dieses Phänomen zu finden sowie überlegen, wie wir es für den Handel verwenden können.



Beginn und Beharrlichkeit der Bewegung

Jede Bewegung in unserer Welt kann durch ihre Richtung, Beschleunigung und Geschwindigkeit charakterisiert werden. Dies funktioniert auch in liquiden Märkten. Dies impliziert eine wichtige Regel, die besagt, dass eine Bewegung, die sich stark in eine Richtung bewegt, niemals unsanft enden kann. Es kann mit einem Zug verglichen werden: wenn ein Zug mit voller Geschwindigkeit bremst, kann sein Bremsweg bis zu einen Kilometer lang sein.

Wann beginnt also ein Trend? Wenn aus irgendwelchen Gründen die Mehrheit der Marktteilnehmer ihre Meinung ändert, egal ob globale Veränderungen, wichtige Faktoren, die den Markt beeinflussen oder Nachrichten der Auslöser dafür sind. Dadurch bildet sich eine kollektive Meinung und der Trend entsteht. Die Marktteilnehmer sind zunehmend davon überzeugt, dass die Bewegung noch stärker und auch weiter gehen wird. Sie hat eine Richtung, eine Beschleunigung sowie eine bestimmte Geschwindigkeit, denn die großen Spieler am Markt steigen mit großen Positionen in den Markt ein. Dies ist der Punkt, wo diejenigen, die am Anfang der Bewegung eingestiegen sind und ihr einen Impuls sowie Geschwindigkeit gegeben haben, zu profitieren beginnen. Andere Händler steigen erst später und zu weniger attraktiven Kursen in den Markt ein. Aber im Gegensatz zu den ersten Händlern, versuchen sie die Richtung der Kursbewegung auszunutzen.

Der Trend endet, wenn Änderungen auftreten. Warum aber bewegt sich der Kurs immer noch in die gleiche Richtung? Wieso ändert er nicht abrupt die Richtung? Der Grund für ein solches Verhalten ist, dass diejenigen, die den Kurs zu Beginn in die gewünschte Richtung beschleunigt und bewegt haben, mit dem Schließen ihrer Positionen beginnen und somit den Trend unterdrücken. Und diejenigen, die gerade erst "auf die Welle aufgesprungen" sind, glauben immer noch, dass sich nichts geändert hat und versuchen sogar, den Preis weiter zu bewegen. Aber dieser "Zug" stoppt nicht nur. Der Kurs beginnt sich in die entgegengesetzte Richtung zu bewegen und hier endet die Geschichte.



Handelsidee und wie man nicht vom "Zug" überrollt wird

Die Idee, die Bewegung zu nutzen und Gewinn zu erzielen basiert auf der Analyse zur aktuellen Trendtiefe, d.h. die Größe und Dauer des Trends.

Um ein anschauliches Beispiel zu bieten, verwenden wir Standard-Indikatoren: RSI (Relative Stärke Index) und AC (Beschleunigung/Verzögerung).

1. Bedingungen für den Martkeintritt

Wir werden den ersten Indikator verwenden, um zu zeigen, wie weit und tief sich der Kurs bewegt hat.

Wir werden Levels platzieren, um einen Abstand und eine Tiefe zu bestimmen:

Fig. 1 RSI oscillator levels

Abb. 1. RSI Oszillator Levels

Die Bewertungskriterien für die Tiefe der Kursbewegung:

  • Ein Bereich zwischen 40-60 wird als flache Zone (Seitwärtszone) betrachtet. Es gibt keinen Trend, wenn sich der Kurs in dieser Zone befindet. Lassen Sie uns einen Index 0 für das Fehlen einer Bewegung mit Richtung zuordnen.

Kaufzonen bei einer Preisbewegung:

  • Zone 60-70 - dies ist der mögliche Beginn einer Aufwärtsbewegung. Lassen Sie uns dieser Bewegung den Index 1 zuordnen.
  • Zone 70-80 - die Aufwärtsbewegung ist deutlicher. Die Bewegung nimmt Fahrt auf. Wir ordnen ihr den Index 2 zu.
  • Zone 80-90 - die Bewegung hat eine stabile Richtung. Die Geschwindigkeit hat zugenommen. Wir vergeben den Index 3.
  • Zone 90-100. In der Regel ist dies eine starke Einbahnbewegung, die keine Rückschläge beinhaltet. Sehr selten. Der Index hierfür ist 4.

Lassen Sie uns nun den Index für Verkaufkurse auf gleiche Weise zuordnen:

  • Zone 30-40. Die Abwärtsbewegung beginnt. Index -1.
  • Zone 20-30. Die Bewegung nimmt an Fahrt auf. Index -2.
  • Zone 10-20. Stabile Richtung nach unten. Index -3.
  • Zone 0-10. Starke Einbahnbewegung nach unten. Index -4.

Wir können diese Bedingungen wie folgt in der MQL4 Sprache schreiben:

//--- determining buy index
   double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0);
   index_rsi = 0;
   if(rsi>90.0) index_rsi=4;
   else if( rsi > 80.0 ) 
   index_rsi = 3;
   else if( rsi > 70.0 ) 
   index_rsi = 2;
   else if( rsi > 60.0 ) 
   index_rsi = 1;
   else if( rsi < 10.0 ) 
   index_rsi = -4;
   else if( rsi < 20.0 ) 
   index_rsi = -3;
   else if( rsi < 30.0 ) 
   index_rsi = -2;
   else if( rsi < 40.0 ) 
   index_rsi = -1;

Wir werden den AC-Indikator von Bill Williams für den vorgesehenen Zweck verwenden, und zwar werden wir die Geschwindigkeit und die Beschleunigung der aktuellen Bewegung messen.

Fig. 2. AC indicator

Abb. 2. AC-Indikator

Bewertungskriterien für Geschwindigkeit:

Zunahme.

  • Das erste Kriterium ist die aktuellen Histogramme mit den vorhergehenden zu vergleichen. Wenn das aktuelle Histogramm das vorherige übersteigt, gibt es wahrscheinlich einen Kursanstieg. Lassen Sie uns dies als Geschwindigkeitsindex gleich 1 definieren.
  • Das zweite Kriterium ist der Vergleich von 3 benachbarten Balken (vom Null-Balken bis zum zweiten Balken). Wir können über eine zunehmende Beschleunigung sprechen, wenn der Wert eines jeden nachfolgenden Balkens den Wert des vorherigen Balkens überschreitet. Der Geschwindigkeitsindex ist 2.
  • Es gibt einen ähnlichen Vergleich von 4 Balken, um zu überprüfen, ob jeder vorherige Balken kleiner als der nächste ist. Der Geschwindigkeitsindex ist 3.
  • Der Vergleich der letzten 5 Balken unter Berücksichtigung des aktuellen, um die gleichen Bedingungen zu überprüfen. Geschwindigkeitsindex ist 4.

Abnahme.

  • Ebenso. Der Vergleich des aktuellen Balken mit den vorherigen. Wenn der aktuelle Balken kleiner als der vorherige ist, ist der Geschwindigkeitsindex gleich -1.
  • Der Vergleich von 3 Balken hinsichtlich der Abnahme von vorherigen zum nächsten. Index ist -2.
  • Der Vergleich von 4 Balken. Index ist -3.
  • Der Vergleich von 5 Balken. Index ist -4.

In MQL4 sieht dies wie folgt aus:

double ac[];
   ArrayResize(ac,5);
   for(int i=0; i<5; i++)
      ac[i]=iAC(Symbol(),tf,i);

   index_ac=0;
//--- buy signal
   if(ac[0]>ac[1])
      index_ac=1;
   else if(ac[0]>ac[1] && ac[1]>ac[2])
      index_ac=2;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3])
      index_ac=3;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4])
      index_ac=4;
//--- sell signal
   else if(ac[0]<ac[1])
      index_ac=-1;
   else if(ac[0]<ac[1] && ac[1]<ac[2])
      index_ac=-2;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3])
      index_ac=-3;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4])
      index_ac=-4;

Wenn wir Indizes zur Bewegungstiefe haben und die Bewegungsgeschwindigkeit kennen, können wir einige Einstiegsbedingungen festlegen und klassifizieren.

Es gibt Optionen für den Markteinstieg:

//--- buy signal
if(index_rsi==1 && index_ac>=1) //possible buy movement
if(index_rsi==2 && index_ac>=1) //weak buy movement
if(index_rsi==3 && index_ac==1) //weak buy movement
if(index_rsi==3 && index_ac>=2) //moderate buy movement
if(index_rsi==4 && index_ac>=1) //strong buy movement

//--- sell signal  
if(index_rsi==-1 && index_ac<=-1) //possible sell movement
if(index_rsi==-2 && index_ac<=-1) //weak sell movement
if(index_rsi==-3 && index_ac==-1) //weak sell movement
if(index_rsi==-3 && index_ac<=-2) //moderate sell movement
if(index_rsi==-4 && index_ac<=-1) //strong sell movement

//--- flat 
if(index_rsi==0) 

2. Bedingungen für den Marktaustritt

Wir haben Parameter für den Einstieg festgelegt und klassifiziert. Wir werden die folgende Analogie machen, um zu erklären, wie die Marktaustrittsbedingungen gebildet wurden.

Denken Sie zum Beispiel an einen Gummiball für Kinder. Und nun lassen Sie uns überlegen, was passiert, wenn jemand diesen Ball von einer hohen Stelle in Wasser wirft. Zunächst wird er aufgrund der Erdbeschleunigung fallen und Geschwindigkeit aufnehmen. Dann schlägt er am Wasser auf. Aber er hat genug Kraft, um bis zu einer gewissen Tiefe einzutauchen und einen negativen Wert zu erreichen, während er an Geschwindigkeitkeit verliert. Anschließend wirkt sich das Prinzip des Archimedes auf ihn aus, so dass er wieder an die Oberfläche gedrückt wird.

Wir werden nun einen Drill-down für dieses Beispiel durchführen:

  • Wie Sie wohl bereits verstanden haben, ist der Ball der Kurs.
  • Eine Person, die den Ball wirft, stellt Marktteilnehmer dar, die den Trend starten.
  • Die Schwerkraft, die die Erdbeschleunigung verursacht, repräsentiert die Händler, die auf die Kursrichtung aufgesprungen sind, nachdem der Trend begonnen hat.
  • Das Wasser stellt wichtige Faktoren dar, die eine Richtungsänderung beeinflussen.
  • Das Prinzip des Archimedes stellt die geschlossenen Positionen derjenigen dar, die den Trend gestartet haben.

Die zwei Hauptziele, um Gewinn zu erzielen, sind die folgenden:

  1. Rechtzeitig einen Moment zu bestimmen, wenn der Ball schon geworfen wurde und dann zu kaufen oder verkaufen.
  2. Eine Position zu schließen, wenn der Balls ins Wasser fällt und verlangsamt wird.

Es kann schwierig sein, die Dauer und die genaue Fallstrecke zu bestimmen, da wir weder eine Person sehen, die den Ball wirft, noch das Wasser in den Finanzmärkten. Wir können nur die Geschwindigkeit und Richtung des Balls sehen.

Wir haben die oben angeführten Bewertungskriterien für die Tiefe und die Geschwindigkeit der Kursbewegung betrachtet.

Jetzt werden wir die Austrittsbedingungen definieren:

//--- possible downward reversal
if(index_rsi>2 && index_ac<0) 

Wenn der Kurs sich lange genug nach oben bewegt hat, wird seine Beschleunigung negativ (nach unten gerichtet). Dies deutet darauf hin, dass eine Trendänderung durchaus möglich ist.

//--- possible upward reversal
if(index_rsi<-2 && index_ac>0) 

Ähnlich verhält es sich beim gegebenen Beispiel: der Ball fiel lange genug, aber er fiel ins Wasser und das Wasser drückt den Ball in die engegengesetzte Richtung. Es zeigt den Moment zum Schließen der Positionen.

3. Verbesserung der Effizienz hinsichtlich Ein- und Ausstieg

Es ist bekannt, dass einige Handelsindikatoren erst annehmbare Reaktionsgeschwindigkeit für eine Trendwende erreichen, wenn wir einen größeren Zeitraum verwenden. Jedoch erscheinen auch mehr falsche Signale.

Der alternative Weg ist nicht den Berechnungszeitraum nach unten zu ändern, sondern den Kurs auf mehreren Zeitrahmen zu verfolgen.

Fig. 3. Trend on different timeframes based on RSI and AC signals

Abb. 3. Trend auf verschiedenen Zeitrahmen, basierend auf RSI und AC Signalen

Der Trend der Kursbewegung kann klar aufgrund unserer Kriterien und der RSI und AC Indikatoren in dr Abbildung gesehen werden. Lassen Sie uns einen genaueren Blick darauf werfen.

Bewegung und Geschwindigkeit bei M1: starke Bewegung, AC Index ist 4, RSI Index-Tiefe ist 2. M5 hat die gleiche Tiefe, aber die Geschwindigkeit ist gleich 1. Die gleiche Bewegung wird bei M15 ermittelt, aber sie ist weniger sichtbar als auf den kürzeren Charts. Wenn wir über den 30-Minuten und 1-Stunden-Chart sprechen, ist es beeindruckend zu sehen, dass M30 bereits ein Signal hat und H1 bereits eine Verzögerung bzw. sogar ein mögliches Signal für eine mögliche Umkehr sieht.

Dieses Beispiel gibt uns eine gewichtige Schlussfolgerung:

Wenn wir nur H1 betrachtet hätten, hätten wir eine Verkaufsorder platziert und auf eine Umkehr gewartet. Es wäre aber ein falsches Signal gewesen, das wir aber mit Hilfe der Analyse der kürzeren Zeitrahmen herausgefiltert haben.

4. Implementierung der Handelsstrategie in Form eines Expert Advisor

Expert Advisor Code:

//+------------------------------------------------------------------+
//|                                                       tester.mq4 |
//|                                                Alexander Fedosov |
//+------------------------------------------------------------------+
#property copyright "Alexander Fedosov"
#property strict
#include <trading.mqh>      //Support library for trade operations
//+------------------------------------------------------------------+
//| Parameters                                                       |
//+------------------------------------------------------------------+
input int             SL = 40;               // Stop loss
input int             TP = 70;               // Take profit
input bool            Lot_perm=true;         // Lot of balance?
input double          lt=0.01;               // Lot
input double          risk = 2;              // Risk of deposit, %
input int             slippage= 5;           // Slippage
input int             magic=2356;            // Magic number
input int             period=8;              // RSI indicator period
input ENUM_TIMEFRAMES tf=PERIOD_CURRENT;     // Working timeframe
int dg,index_rsi,index_ac;
trading tr;
//+------------------------------------------------------------------+
//| Expert Advisor initialization function                           |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- determining variables for auxiliary class of trading functions
//--- language for displaying errors, Russian of by default.
   tr.ruErr=true;
   tr.Magic=magic;
   tr.slipag=slippage;
   tr.Lot_const=Lot_perm;
   tr.Lot=lt;
   tr.Risk=risk;
//--- number of attempts.
   tr.NumTry=5;
//--- determining decimal places on the current chart
   dg=tr.Dig();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Main calculation function                                        |
//+------------------------------------------------------------------+
void OnTick()
  {
   depth_trend();
   speed_ac();
//--- check for presence of open orders
   if(OrdersTotal()<1)
     {
      //--- check of buy conditions
      if(Buy())
         tr.OpnOrd(OP_BUY,tr.Lots(),Ask,SL*dg,TP*dg);
      //--- check of sell conditions
      if(Sell())
         tr.OpnOrd(OP_SELL,tr.Lots(),Bid,SL*dg,TP*dg);
     }
//--- are there open orders?
   if(OrdersTotal()>0)
     {
      //--- check and close sell orders which meet closing conditions.
      if(Sell_close())
         tr.ClosePosAll(OP_SELL);
      //--- check and close buy orders which meet closing conditions.
      if(Buy_close())
         tr.ClosePosAll(OP_BUY);
     }

  }
//+------------------------------------------------------------------+
//| Function for determining the trend depth                         |
//+------------------------------------------------------------------+
void depth_trend()
  {
//--- determining buy index
   double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0);
   index_rsi = 0;
   if(rsi>90.0) index_rsi=4;
   else if(rsi>80.0)
      index_rsi=3;
   else if(rsi>70.0)
      index_rsi=2;
   else if(rsi>60.0)
      index_rsi=1;
   else if(rsi<10.0)
      index_rsi=-4;
   else if(rsi<20.0)
      index_rsi=-3;
   else if(rsi<30.0)
      index_rsi=-2;
   else if(rsi<40.0)
      index_rsi=-1;
  }
//+------------------------------------------------------------------+
//| Function for determining the trend speed                         |
//+------------------------------------------------------------------+
void speed_ac()
  {
   double ac[];
   ArrayResize(ac,5);
   for(int i=0; i<5; i++)
      ac[i]=iAC(Symbol(),tf,i);

   index_ac=0;
//--- buy signal
   if(ac[0]>ac[1])
      index_ac=1;
   else if(ac[0]>ac[1] && ac[1]>ac[2])
      index_ac=2;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3])
      index_ac=3;
   else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4])
      index_ac=4;
//--- sell signal
   else if(ac[0]<ac[1])
      index_ac=-1;
   else if(ac[0]<ac[1] && ac[1]<ac[2])
      index_ac=-2;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3])
      index_ac=-3;
   else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4])
      index_ac=-4;
  }
//+------------------------------------------------------------------+
//| Function for checking buy conditions                             |
//+------------------------------------------------------------------+
bool Buy()
  {
   bool res=false;
   if((index_rsi==2 && index_ac>=1) || (index_rsi==3 && index_ac==1))
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking sell conditions                            |
//+------------------------------------------------------------------+
bool Sell()
  {
   bool res=false;
   if((index_rsi==-2 && index_ac<=-1) || (index_rsi==-3 && index_ac==-1))
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking buy position closing conditions            |
//+------------------------------------------------------------------+
bool Buy_close()
  {
   bool res=false;
   if(index_rsi>2 && index_ac<0)
      res=true;
   return (res);
  }
//+------------------------------------------------------------------+
//| Function for checking sell position closing conditions           |
//+------------------------------------------------------------------+
bool Sell_close()
  {
   bool res=false;
   if(index_rsi<-2 && index_ac>0)
      res=true;
   return (res);
  }

Wir haben eine kleine Optimierung mit nur zwei Parametern durchgeführt: tf (Arbeitszeitrahmen) und period (RSI-Indikator Periode).

Und wir haben folgende Ergebnisse bei M15 erhalten:


Abb. 4. Die Expert Advisor Backtesting-Ergebnisse

Achtung! Dies ist nur eine Demoversion. Wir empfehlen, diese nicht für Tests oder bei Echtgeldkonten zu verwenden.


Fazit

Das Bestimmen des Anfangs und des Endes eines Trends ist für Händler auf der ganzen Welt eine komplizierte Aufgabe, da es unmöglich ist, das Marktverhalten vorherzusagen.

Aber es ist durchaus möglich, die Ein- und Ausstiegsmomente bei einem aktuellen Trend zu bestimmen und so beträchtliche Gewinne zu lukrieren. Und die allgemeine Idee der Bestimmung und der dynamischen Verfolgung der Bewegungsgeschwindigeit kann in dieser Angelegenheit sehr hilfreich sein.

Wir wünschen Ihnen einen erfolgreichen Handel.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1747

Beigefügte Dateien |
trading.mqh (48.16 KB)
tester.mq4 (11.59 KB)
Die "Price Action": Die Automatisierung der "Inside Bar"-Handelsstrategie Die "Price Action": Die Automatisierung der "Inside Bar"-Handelsstrategie
Dieser Artikel beschreibt die Entwicklung eines Expert Advisors für die Handelsplattform MetaTrader 4, und zwar basierend auf der „Inside Bar“-Handelsstrategie, inklusive der Erkennungsprinzipien für die „Inside Bars“ (im Folgenden als „innenliegende Balken“ bezeichnet). Darüber hinaus befassen wir uns mit den Regeln für die Platzierung von Anstehenden Orders und Stopporders. Wir werden ebenfalls einen Test des fertigen Expert Advisors zeigen und Optimierungen desselben demonstrieren.
Identifizieren von Handelsstrategien durch Unterstützungs-/Widerstandspunkte und Kursentwicklungen Identifizieren von Handelsstrategien durch Unterstützungs-/Widerstandspunkte und Kursentwicklungen
Dieser Artikel zeigt, wie eine Kursentwicklung und das Überwachen von Unterstützungs- und Widerstandspunkten für gut getimte Markteintritte genutzt werden können. Er beschreibt ein Handelssystem, das diese zwei Dinge zur Bestimmung der Kursentwicklung kombiniert. Der entsprechende MQL4-Code, der basierend auf diesen Handelskonzepten in den EAs genutzt werden kann, wird erklärt.
Statistische Verifizierung des Labouchere-Geldverwaltungssystems Statistische Verifizierung des Labouchere-Geldverwaltungssystems
In diesem Artikel überprüfen wir die statistischen Eigenschaften des Labouchere-Geldverwaltungssystems. Es gilt als eine weniger aggressive Variante von Martingale, weil hierbei die Einsätze nicht verdoppelt, sondern stattdessen um einen bestimmten Betrag erhöht werden.
Research hinsichtlich der wiederkehrenden Richtungstendenzen von Candlesticks Research hinsichtlich der wiederkehrenden Richtungstendenzen von Candlesticks
Ist es möglich, das Marktverhalten für einen kurzen zukünftigen Zeitraum vorherzusagen, indem man wiederkehrende Richtungstendenzen von Candlesticks berücksichtigt, die immer zu bestimmten Zeiten während des Tages auftreten? Es ist, wenn ein solches Ereignis wirklich gefunden werden kann. Diese Frage hat sich wohl ein jeder Händler bereits einmal gestellt. Der Zweck dieses Artikels ist es, zu versuchen, das Marktverhalten vorherzusagen, indem man statistisch wiederkehrende Richtungstendenzen von Candlesticks berücksichtigt, die in bestimmten Zeitintervallen auftreten.