Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43268
Benutzer: 7.225
Aktive Benutzer: 71
Links: 84
Wir begrüßen unseren neuesten Benutzer: Pawel
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Pawel
vor 3 Tagen
- MaynardCis
vor 4 Tagen
- Wakeman
vor 3 Wochen
- Sundaytrad...
vor 3 Wochen
- TS_6

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 229
Gesamt: 229
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

 
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.07.20
Neues Mitglied
 
Registriert seit: Jul 2020
Beiträge: 27
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);
  }
 

Lesezeichen


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:59 Uhr.





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