Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   VIX Indikator (http://www.expert-advisor.com/forum/showthread.php?t=6728)

Anja 28.07.20 01:00

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);
  }


Indikator-Trading 28.07.20 11:07

VIX für MT4
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

Indikator-Trading 28.07.20 11:35

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.

Anja 29.07.20 18:01

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.

Anja 30.07.20 09:54

Liste der Anhänge anzeigen (Anzahl: 1)
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

AVT 30.07.20 12:02

Zitat:

Zitat von Anja (Beitrag 44129)
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

Indikator-Trading 30.07.20 12:34

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Anja (Beitrag 44132)
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

Anja 30.07.20 18:52

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.

Indikator-Trading 30.07.20 19:31

Liste der Anhänge anzeigen (Anzahl: 1)
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!


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:29 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum