Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Like Tree1Likes
  • 1 Post By Indikator-Trading
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.05.21
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
Max2018 befindet sich auf einem aufstrebenden Ast
Standard Eigenen Index erstellen

Hi,

ich habe einen kleinen Indikator in MQL5 geschrieben mit dem man einen eigenen Index erstellen kann. Die Aktien mit deren Gewichtung einfach eintragen (entsprechend der SymbolBestimmungen des Brokers . hier am Beispiel Admiral Markets). Ich habe auch ein Beispiel für einen Aktiensplit bei Google eingetragen.....
Ihr könnt die Aktien natürlich erweitern.
Der Indikator funktioniert. Wer noch eine elegantere Lösung hat, gerne her damit

Code:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_level1  14 
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrYellow
#property indicator_label1  "EIGENER-INDEX"

//--- input params 
//---- buffers
double DPCBuffer[];
double A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,CC,OA,OB,OC,OD,OE,OF,OG,OH,OI,OJ,OK,OL,OM,ON,OO,OP,OQ,OR,OS,OT,OU,OV,OW,OAa;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorSetString(INDICATOR_SHORTNAME,"EIGENER-INDEX");
//---- index buffer
   SetIndexBuffer(0,DPCBuffer,INDICATOR_DATA);
   ArraySetAsSeries(DPCBuffer,true);
//   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,100);
   return(INIT_SUCCEEDED);
//---- OnInit done
  }
//+------------------------------------------------------------------+
//| Calculation                                        |
//+------------------------------------------------------------------+
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[])
  {
datetime tm=StringToTime("2014.03.25 00:00:00");
Comment(tm);
//--- check for bars count
   if(rates_total<1440/Period())
      return(0); //exit with zero result

//--- prevent total recalculation
   int i=rates_total-1;
   if(prev_calculated>0)
      i=rates_total-prev_calculated -1;

//--- current value should be recalculated
   if(i<0)
      i=0;
//---
   while(i>=0)
     {
      datetime date=iTime(NULL,0,i);
      int Hour=TimeHourMQL4(date);
      int Minute=TimeMinuteMQL4(date);
      //     Print("i = ",i," Hour = ",Hour," Minute = ",Minute);
      OAa=iOpen("#ATVI",0,i) *4.37;
OA=iOpen("#ADS",0,i)*1.69;
OB=iOpen("#ADBE",0,i)*0.85;
if(date>=tm)OC=iOpen("#GOOG",0,i)*0.18;
if(date<tm)OC=iOpen("#GOOG",0,i)*0.18*0.5;
OD=iOpen("#AMZN",0,i)*0.13;
OE=iOpen("#AAPL",0,i)*3.32; 
         DPCBuffer[i]=OA+OB+OC+OAa+OD+OE; 
       i--;

     }

//----
   return(rates_total);
  }
//+------------------ Functions -----------------------------------------------+

int TimeHourMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.hour);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int TimeMinuteMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.min);
  }
//+------------------------------------------------------------------+
  #2 (permalink)  
Alt 22.05.21
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Ich sehe hier zwei potenzielle Probleme. Period() liefert im mt5 leider nicht mehr das was man im mt4 gewöhnt ist, daher passt die Verwendung hier im Indikator nicht. Zweitens glaube ich das die Definition von i hier Probleme machen könnte. Ich würde persönlich die while schleife gegen eine For austauschen. Gruß Timo
  #3 (permalink)  
Alt 22.05.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
Ich sehe hier zwei potenzielle Probleme. Period() liefert im mt5 leider nicht mehr das was man im mt4 gewöhnt ist, daher passt die Verwendung hier im Indikator nicht. Zweitens glaube ich das die Definition von i hier Probleme machen könnte. Ich würde persönlich die while schleife gegen eine For austauschen. Gruß Timo
Eigenartigerweise gibt Period() auch im MT5 denselben Integer-Wert zurück, aber nur von M1 bis M30?? Keine Ahnung, warum ab H1 keine exakten Werte mehr zurückgegeben werden.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 22.05.21
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Eigenartigerweise gibt Period() auch im MT5 denselben Integer-Wert zurück, aber nur von M1 bis M30?? Keine Ahnung, warum ab H1 keine exakten Werte mehr zurückgegeben werden.

traderdoc
Metaquotes hat die ENUM Definition geändert, als sie M2 M6 und so weiter eingeführt haben im MT5.

Eine Funktion, mit der du diese Vergleiche durchführen kannst, ist PeriodSeconds(Period())
Diese gibt dir die Sekunden des jeweiligen Timeframes zurück. Diese kannst du dann wie gewohnt direkt mit anderen Timeframes vergleichen, aber auch in Minuten oder Stunden zurück rechnen.

Ich hoffe das hilft dir jetzt etwas weiter, Gruß Timo
traderdoc likes this.
  #5 (permalink)  
Alt 23.05.21
Mitglied
 
Registriert seit: Sep 2018
Beiträge: 238
Max2018 befindet sich auf einem aufstrebenden Ast
Standard

Danke

und wie soll ich Period() und while ersetzen
  #6 (permalink)  
Alt 23.05.21
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Für den MT4 Period() Aufruf: (PeriodSeconds()/60.0)

Die While-schleife musst du nicht zwingend gegen eine For-Schleife austauschen, da sind eher andere Probleme dringender, nämlich die mögliche ungleiche Länge der historischen Daten in den aufgerufenen Symbolen.

Dies ist mit iBars abfragbar. Dann nur die kürzeste Länge für die Berechnung des Indikators nutzen.
Thema geschlossen

Lesezeichen

Stichworte
indikator eigener index

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 +1. Es ist jetzt 12:31 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.
-----------------------------------------------------------------------------------------------------------------------------