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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4499
Beiträge: 41279
Benutzer: 6.885
Aktive Benutzer: 242
Links: 80
Wir begrüßen unseren neuesten Benutzer: mann013
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- mann013
vor einem Tag
- schlafmuet...
vor 4 Tagen
- BodoM
vor 6 Tagen
- tisas
vor 6 Tagen
- slaw4ik

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 131
Gesamt: 133
Team: 0
Team:  
Benutzer:  Domke01, MA-EA
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 6 Tagen
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 21
Anja befindet sich auf einem aufstrebenden Ast
Standard VIX Indikator

Ich habe einen interessanten Indikator gefunden und versucht den auf MQL4 umzuschreiben: https://www.mql5.com/de/code/20906

Erstens würde mich interessieren, ob ich das richtig gemacht habe und zweitens, weshalb ich beim iCustom() Aufruf fast nur EMPTY_VALUE zurück bekomme.

Leider verstehe ich den Anfang der OnCalculate() bisher nicht: wie hängt die Berechnung mit dem was man sieht zusammen? Denn die Anzeige ist wunderbar in Ordnung und ich finde es nicht tragisch, statt einer Farbe eine zweite Linie zu haben, da ich ja sowieso die Richtung auswerten möchte.

Code:
double vix = iCustom(NULL,0,"VIX",20,0,1);
double vixDirection = iCustom(NULL,0,"VIX",20,1,1);
Code:
//+------------------------------------------------------------------
#property copyright   "mladen"
#property link        "mladenfx@gmail.com"
#property description "Synthetic VIX"
#property strict
//+------------------------------------------------------------------
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_label1  "Synthetic VIX"
#property indicator_type1   DRAW_LINE
#property indicator_color1 clrYellow 
#property indicator_width1  2
#property indicator_label2  "Color VIX"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrDarkGray
#property indicator_width2  1
//--- input parameters
input int inpVixPeriod = 20; // Synthetic VIX period
//--- buffers and global variables declarations
double val[],valc[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorBuffers(2);
//--- indicator buffers mapping
   SetIndexBuffer(0,val); 
   SetIndexBuffer(1,valc); 
//--- indicator short name assignement
   IndicatorSetString(INDICATOR_SHORTNAME,"Synthetic VIX ("+(string)inpVixPeriod+")");
   
   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator de-initialization 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[])
  {
   if(Bars(_Symbol,_Period)<rates_total) return(prev_calculated);
   int i=(int)MathMax(prev_calculated-1,0); for(; i<rates_total && !_StopFlag; i++)
     {
      int    _start   = MathMax(i-inpVixPeriod+1,0);
      double _highest = high[ArrayMaximum(high,_start,inpVixPeriod)];
      val[i]  = 100.0*(_highest-low[i])/_highest;
      valc[i] = (i>0) ?(val[i]>val[i-1]) ? 1 :(val[i]<val[i-1]) ? 2 : valc[i-1]: 0;
     }
   return (i);
  }
Mit Zitat antworten
  #2 (permalink)  
Alt vor 6 Tagen
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard VIX für MT4

Hier eine Version, welche dir die Werte vom VIX liefert. Die farbliche Veränderung abhängig von der Steigung habe ich jetzt nicht mit integriert. Man kann das im EA ja über den Shiftparameter auslesen und dann vergleichen von welcher Richtung der Vix kommt.

Als zusätzliche Inputvariable habe ich noch MaxBars mit dazu genommen und die While-Schleife gegen eine For-Schleife ersetzt + ein paar andere kleinere Verbesserungen.
Viel Spaß damit, Timo
Angehängte Dateien
Dateityp: mq4 VIX.mq4 (2,4 KB, 3x aufgerufen)
Mit Zitat antworten
  #3 (permalink)  
Alt vor 6 Tagen
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Ich sehe allerdings für den VIX noch keinen sinnvollen Anwendungsvorteil gegenüber anderen Indikatoren.
Er berechnet ja nichts anderes als die Abstand vom aktuellen Kurz zum höchsten Close in der gegebenen Periode. D.h. steigt der VIX, singt also der Kurz. Somit entfernt sich der Kurz vom letzten Hoch innerhalb der Periodenlänge. Vice versa, wenn der VIX singt. Dabei bleibt der Abstand zum höchsten Hoch in der Periodenlänge allerdings unberücksichtigt.
Mit Zitat antworten
  #4 (permalink)  
Alt vor 5 Tagen
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 21
Anja befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank.

Hintergrund ist ein Video von Mario Lüddemann, wo er den VDAX-NEW mit hohen bzw. steigenden Werten mit fallenden Märkte in Bezug setzt:
https://www.youtube.com/watch?v=CIKL7tEOuP0

Ob das für diesen Synthetic VIX auch gilt, weiß ich nicht, aber dieser Indikator macht derzeit Sprünge nach oben, was ich im ATR nicht so sehe.

Wie und ob ich den einsetze, weiß ich auch noch nicht, aber interessant.
Mit Zitat antworten
  #5 (permalink)  
Alt vor 4 Tagen
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 21
Anja befindet sich auf einem aufstrebenden Ast
Standard

Hallo Timo,

irgendwie ist das eine ganz andere Kurve.

Habe mal einen Screenshot gemacht, wo man auch den merkwürdigen Sprung im Synthetic VIX sieht. Der Rest der Kurve sieht ja relativ gespiegelt zum DAX aus.

Viele Grüße
Anja
Angehängte Grafiken
Dateityp: png VIX.PNG (40,4 KB, 5x aufgerufen)
Mit Zitat antworten
  #6 (permalink)  
Alt vor 4 Tagen
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 390
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Anja Beitrag anzeigen
Hintergrund ist ein Video von Mario Lüddemann, wo er den VDAX-NEW mit hohen bzw. steigenden Werten mit fallenden Märkte in Bezug setzt:
https://www.youtube.com/watch?v=CIKL7tEOuP0

Ob das für diesen Synthetic VIX auch gilt, weiß ich nicht, aber dieser Indikator macht derzeit Sprünge nach oben, was ich im ATR nicht so sehe.
Der VDAX-NEW wird mit echten Optionsdaten berechnet und dann gilt die Formel:
VDAXnew (in % p.a.) x Wurzel aus ( 30 Tage / 365 Tage) x DAX ( in Punkten)
Heraus kommt die Schwankungsbreite für die nächsten 30 Tage.
Das sind 2 unterschiedliche Paar Schuhe. AVT
Mit Zitat antworten
  #7 (permalink)  
Alt vor 4 Tagen
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Anja Beitrag anzeigen
Hallo Timo,

irgendwie ist das eine ganz andere Kurve.

Habe mal einen Screenshot gemacht, wo man auch den merkwürdigen Sprung im Synthetic VIX sieht. Der Rest der Kurve sieht ja relativ gespiegelt zum DAX aus.

Viele Grüße
Anja
Hallo Anja,
hier ein Screenshot mit 3 Varianten:
1) MQL4 von mir
2) MQL4 von dir mit Fehlern in der Berechnung
3) MQL5 Originalversion, welche du ja umprogrammiert haben wolltest.

1 und 3 sind vom Verlauf identisch, auch macht dieser große Sprung bei der zweiten Variante keinen Sinn, wenn man sich die Berechnungsgrundlage von diesem Indikator anschaut.

Ich sehe es aber auch wie AVT, das dieser Indikator nichts mit dem aus dem Video und auch nicht mit dem der etwas später gezeigt wird (welcher auch VIX heißt) zutun hat.

Gruß Timo
Angehängte Grafiken
Dateityp: png VIX-Vergleich.png (31,1 KB, 4x aufgerufen)
Mit Zitat antworten
  #8 (permalink)  
Alt vor 4 Tagen
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 21
Anja befindet sich auf einem aufstrebenden Ast
Standard

OK, ich denke Indikator-Programmierung habe ich definitiv noch nicht verstanden. Im Bereich der Berechnung hatte ich ja nichts geändert.

Und die Beschreibung zum Indikator ist Quatsch und unbrauchbar? Speziell der letzte Satz?

Zitat:
Wenn es darum geht zu beschreiben, was die Märkte tun, sagte am besten Bernard Baruch: "Die Märkte schwanken."

Diese Idee ist im Chicago Board Options Exchange (CBOE) Volatility Index (VIX) verankert, der seit seiner Einführung im Jahr 1993 ein sehr beliebtes Maß für das Marktrisiko geworden ist. Der VIX, der sich aus der impliziten Volatilität von Aktienindexoptionen ableitet, soll die Erwartungen der Händler an die Volatilität in den nächsten 30 Tagen darstellen.

Im Wesentlichen spiegelt der VIX die Angst der Anleger wider - hohe Werte sind mit Bedingungen hoher Volatilität (und Markttiefs) verbunden, während niedrige Werte mit Bedingungen niedriger Volatilität (und Markttiefs) verbunden sind.

Leider wird der VIX nur für den S&P 500 Index, den NASDAQ Composite Index und den Dow Jones Industrial Average berechnet. Was ist mit anderen Märkten?

Glücklicherweise ist es einfach, den VIX für jeden Markt - Schatzanleihen, Gold, Silber, Sojabohnen, sogar einzelne Aktien - mit einer einfachen Formel zu duplizieren.
Mit Zitat antworten
  #9 (permalink)  
Alt vor 4 Tagen
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 58
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Und die Beschreibung zum Indikator ist Quatsch und unbrauchbar? Speziell der letzte Satz?
Ja, sehr sehr vieles was du bei mql5.com runterladen kannst ist Quatsch.

Hier der Hauptcode zur Berechnung im aktuellen hier programmierten Indikator, der so funktioniert, wie ich es weiter oben schon beschrieben habe:
Code:
      
Max=Close[iHighest(NULL, 0, MODE_CLOSE, InpVixPeriod, i)];
val[i]=100*(Max-Low[i])/Max;
Mehr auch nicht, da kann man nicht viel erwarten!

Im Anhang ist die Berechnung des VIX, welche ich nach kurzer Googlesuche gefunden habe und sich explizit auf dem "CBOE Volatility Index" gezeiht.

Ist das genau das was du suchst?
-> Keine Ahnung.

Wird die Berechnung der Volatilität bestimmt komplexer aussehen als das was in dem Indikator passiert, welchen du hier geteilt hast?
-> Ganz bestimmt!
Angehängte Grafiken
Dateityp: png VIX_Berechnung.png (54,9 KB, 3x aufgerufen)
Mit Zitat antworten
Antwort

Lesezeichen

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 +2. Es ist jetzt 22:57 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2020 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------