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)
-   -   Eigener Indikator zeigt immer 0 an (http://www.expert-advisor.com/forum/showthread.php?t=6836)

MA-EA 23.11.20 12:13

Eigener Indikator zeigt immer 0 an
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

im Anhang ein zum größten Teil selbst geschriebener Indi für MT4. Zeigt im Datenfenster immer 0.0 an, im Chart ist nix von ihm zu sehn. Hab keine Ahnung, was schief läuft, hab zur Zeit auch nicht viel Zeit. :rolleyes:


Die Idee dahinter ist, verschiedene Moving Averages unterschiedlich zu Gewichten, um z.B. zu sehn, wie sich der Close gegenüber High/Low verhält oder um z.B. Close/Open mit Median/Typical zu vergleichen. Die Möglichkeiten dürften auf jeden Fall Einige sein. Voraus gesetzt, dass Gerät funktioniert irgendwann wie es soll... :confused:
Code:

//=============================================================================
#property version    "EightMAmMAdV"
#property description "( MA * MA ) / Value"
#property link        "daniel-rudloff@web.de"

//#property strict
//=============================================================================
#property indicator_chart_window        // in Hauptfenster testen
#property indicator_buffers 1            // ein Buffer zum Malen
#property indicator_color1 clrDodgerBlue // Farbe der Linie
#property indicator_width1  1            // Dicke der Linie
//=============================================================================

//=============================================================================================================
// B E S C H R E I B U N G / I N F O S
//=============================================================================================================

extern string esBeschrCW1="? -chart window-";
extern string esBeschrCW2="Scheint im Haupt-";
extern string esBeschrCW3="und im Unterfenster";
extern string esBeschrCW4="zu funktionieren.";
extern string esBeschrCW5="Ist im Unterfenster";
extern string esBeschrCW6="aber etwas";
extern string esBeschrCW7="unübersichtlich. ?";

//=============================================================================================================
// G L O B A L E  E I N S T E L L U N G E N
//=============================================================================================================
//-------------------------------------------------------------------------------------------------------------
extern string MTO="? MA/OpZ Multi/Div";
extern double MAtoOpZ = 100000.0; // ?
//-------------------------------------------------------------------------------------------------------------
extern string LZ_DIMD=
"----------------------------------";

extern string esMXMD ="MAs x MAs / div";

extern double MAs_div = 2.0;

extern string LZ_MD=
"----------------------------------";

extern double Multi = 1.0;

extern bool AutoMulti = false;


extern string LZ_D=
"----------------------------------";

extern string LZ_test=
"----------------------------------";

extern string esIP1 ="if Period = 0";
extern string esIP2 ="MA ist not used";

extern string LZIPMAo=
"----------------------------------";

extern int              MA_A_Period = 2;
input ENUM_MA_METHOD    MA_A_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_A_Price  = PRICE_CLOSE;

extern string LZ_MAA=
"----------------------------------";

extern int              MA_B_Period = 2;
input ENUM_MA_METHOD    MA_B_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_B_Price  = PRICE_CLOSE;

extern string LZ_MAB=
"----------------------------------";

extern int              MA_C_Period = 2;
input ENUM_MA_METHOD    MA_C_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_C_Price  = PRICE_CLOSE;

extern string LZ_MAC=
"----------------------------------";

extern int              MA_D_Period = 0;
input ENUM_MA_METHOD    MA_D_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_D_Price  = PRICE_CLOSE;

extern string LZ_MAD=
"----------------------------------";

extern int              MA_E_Period = 0;
input ENUM_MA_METHOD    MA_E_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_E_Price  = PRICE_CLOSE;

extern string LZ_MAE=
"----------------------------------";

extern int              MA_F_Period = 0;
input ENUM_MA_METHOD    MA_F_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_F_Price  = PRICE_CLOSE;

extern string LZ_MAF=
"----------------------------------";

extern int              MA_G_Period = 0;
input ENUM_MA_METHOD    MA_G_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_G_Price  = PRICE_CLOSE;

extern string LZ_MAG=
"----------------------------------";

extern int              MA_H_Period = 0;
input ENUM_MA_METHOD    MA_H_Method = MODE_SMA;
input ENUM_APPLIED_PRICE MA_H_Price  = PRICE_CLOSE;

//=============================================================================================================
// G L O B A L E S
//=============================================================================================================string IndisName = "PrPlusMAd2";  // Indikatorname
string IndisName="EightMAmMAdV"; // Indikatorname
//-------------------------------------------------------------------------------------------------------------
double BUF_EightMAmMAdV[];  // Name des Mal-Buffers
//-------------------------------------------------------------------------------------------------------------

double

Pr_Hi,Pr_Op,Pr_Cl,Pr_Lo,Pr_HL,Pr_HCL,Pr_HOCL,Pr_ME,Pr_TY,Pr_WE,

MA_A,MA_B,MA_C,MA_D,MA_E,MA_F,MA_G,MA_H,

MA_A_PR,MA_B_PR,MA_C_PR,MA_D_PR,MA_E_PR,MA_F_PR,MA_G_PR,MA_H_PR,

A,B,C,D,E,F,G,H,

MAmMA,MmMd,MmM_Mul,MAmMA_div


;


//-------------------------------------------------------------------------------------------------------------
int
i,MAcount;
//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int OnInit(void){

  IndicatorShortName(IndisName // === Anzeige des Indikatornamens und der Werte
   
                     
                    );
 
  IndicatorDigits(_Digits); // Anzahl der anzuzeigenden Nachkommastellen
  IndicatorBuffers(1);      // Gesamtanzahl aller Buffer
  SetIndexBuffer(0,BUF_EightMAmMAdV); // 1. Buffer mit Buffername
  SetIndexLabel(0,"EightMAmMAdV");    // Beschreibung im Datenfenster
  SetIndexStyle(0,DRAW_LINE); // Art der Darstellung
 
  return(INIT_SUCCEEDED);}
//-------------------------------------------------------------------------------------------------------------
void OnDeinit(const int reason){}// nothing to do here
//=============================================================================================================
// O N C A L C U L A T E
//=============================================================================================================int OnCalculate(const int rates_total,
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[]){
//-------------------------------------------------------------------------------------------------------------
for(i=1;i<rates_total;i++){ // ?
//=============================================================================================================
// D E K L A R A T I O N  P R I C E
//=============================================================================================================

Pr_Hi=iHigh (NULL,NULL,i);
Pr_Op=iOpen (NULL,NULL,i);
Pr_Cl=iClose(NULL,NULL,i);
Pr_Lo=iLow  (NULL,NULL,i);

Pr_HL = Pr_Hi + Pr_Lo;
Pr_ME = Pr_HL / 2.0;

Pr_HCL = Pr_Hi + Pr_Cl + Pr_Lo;
Pr_TY = Pr_HCL / 3.0;   
   
Pr_HOCL = Pr_Hi + Pr_Cl + Pr_Op + Pr_Lo;
Pr_WE = Pr_HOCL / 4.0;

//=============================================================================================================
// M O V I N G  A V E R A G E S
//=============================================================================================================

MAcount = 0;

// Zuweisung MA_A
if(MA_A_Period<1)MA_A=1.0;
if(MA_A_Period>=1){
  if(MA_A_Price==PRICE_HIGH    )MA_A_PR=Pr_Hi;
  if(MA_A_Price==PRICE_CLOSE  )MA_A_PR=Pr_Cl;
  if(MA_A_Price==PRICE_OPEN    )MA_A_PR=Pr_Op;
  if(MA_A_Price==PRICE_LOW    )MA_A_PR=Pr_Lo;
  if(MA_A_Price==PRICE_MEDIAN  )MA_A_PR=Pr_ME;
  if(MA_A_Price==PRICE_TYPICAL )MA_A_PR=Pr_TY;
  if(MA_A_Price==PRICE_WEIGHTED)MA_A_PR=Pr_WE;
 
  MA_A=iMA(_Symbol,_Period,MA_A_Period,0,MA_A_Method,MA_A_PR,i);
 
  A = MA_A * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung MA_B
if(MA_B_Period<1)MA_B=1.0;
if(MA_B_Period>=1){
  if(MA_B_Price==PRICE_HIGH    )MA_B_PR=Pr_Hi;
  if(MA_B_Price==PRICE_OPEN    )MA_B_PR=Pr_Op;
  if(MA_B_Price==PRICE_CLOSE  )MA_B_PR=Pr_Cl;
  if(MA_B_Price==PRICE_LOW    )MA_B_PR=Pr_Lo;
  if(MA_B_Price==PRICE_MEDIAN  )MA_B_PR=Pr_ME;
  if(MA_B_Price==PRICE_TYPICAL )MA_B_PR=Pr_TY;
  if(MA_B_Price==PRICE_WEIGHTED)MA_B_PR=Pr_WE;
 
  MA_B=iMA(_Symbol,_Period,MA_B_Period,0,MA_B_Method,MA_B_PR,i);
 
  B = MA_B * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung Price MA_C
if(MA_C_Period<1)MA_C=1.0;
if(MA_C_Period>=1){
  if(MA_C_Price==PRICE_HIGH    )MA_C_PR=Pr_Hi;
  if(MA_C_Price==PRICE_OPEN    )MA_C_PR=Pr_Op;
  if(MA_C_Price==PRICE_CLOSE  )MA_C_PR=Pr_Cl;
  if(MA_C_Price==PRICE_LOW    )MA_C_PR=Pr_Lo;
  if(MA_C_Price==PRICE_MEDIAN  )MA_C_PR=Pr_ME;
  if(MA_C_Price==PRICE_TYPICAL )MA_C_PR=Pr_TY;
  if(MA_C_Price==PRICE_WEIGHTED)MA_C_PR=Pr_WE;
 
  MA_C=iMA(_Symbol,_Period,MA_C_Period,0,MA_C_Method,MA_C_PR,i);
 
  C = MA_C * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung MA_D
if(MA_D_Period<1)MA_D=1.0;
if(MA_D_Period>=1){
  if(MA_D_Price==PRICE_HIGH    )MA_D_PR=Pr_Hi;
  if(MA_D_Price==PRICE_OPEN    )MA_D_PR=Pr_Op;
  if(MA_D_Price==PRICE_CLOSE  )MA_D_PR=Pr_Cl;
  if(MA_D_Price==PRICE_LOW    )MA_D_PR=Pr_Lo;
  if(MA_D_Price==PRICE_MEDIAN  )MA_D_PR=Pr_ME;
  if(MA_D_Price==PRICE_TYPICAL )MA_D_PR=Pr_TY;
  if(MA_D_Price==PRICE_WEIGHTED)MA_D_PR=Pr_WE;
 
  MA_D=iMA(_Symbol,_Period,MA_D_Period,0,MA_D_Method,MA_D_PR,i);
 
  D = MA_D * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung MA_E
if(MA_E_Period<1)MA_E=1.0;
if(MA_E_Period>=1){
  if(MA_E_Price==PRICE_HIGH    )MA_E_PR=Pr_Hi;
  if(MA_E_Price==PRICE_OPEN    )MA_E_PR=Pr_Op;
  if(MA_E_Price==PRICE_CLOSE  )MA_E_PR=Pr_Cl;
  if(MA_E_Price==PRICE_LOW    )MA_E_PR=Pr_Lo;
  if(MA_E_Price==PRICE_MEDIAN  )MA_E_PR=Pr_ME;
  if(MA_E_Price==PRICE_TYPICAL )MA_E_PR=Pr_TY;
  if(MA_E_Price==PRICE_WEIGHTED)MA_E_PR=Pr_WE;
 
  MA_E=iMA(_Symbol,_Period,MA_E_Period,0,MA_E_Method,MA_E_PR,i);
 
  E = MA_E * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung Price MA_F
if(MA_F_Period<1)MA_F=1.0;
if(MA_F_Period>=1){
  if(MA_F_Price==PRICE_HIGH    )MA_F_PR=Pr_Hi;
  if(MA_F_Price==PRICE_OPEN    )MA_F_PR=Pr_Op;
  if(MA_F_Price==PRICE_CLOSE  )MA_F_PR=Pr_Cl;
  if(MA_F_Price==PRICE_LOW    )MA_F_PR=Pr_Lo;
  if(MA_F_Price==PRICE_MEDIAN  )MA_F_PR=Pr_ME;
  if(MA_F_Price==PRICE_TYPICAL )MA_F_PR=Pr_TY;
  if(MA_F_Price==PRICE_WEIGHTED)MA_F_PR=Pr_WE;
 
  MA_F=iMA(_Symbol,_Period,MA_F_Period,0,MA_F_Method,MA_F_PR,i);
 
  F = MA_F * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung Price G
if(MA_G_Period<1)MA_G=1.0;
if(MA_G_Period>=1){
  if(MA_G_Price==PRICE_HIGH    )MA_G_PR=Pr_Hi;
  if(MA_G_Price==PRICE_OPEN    )MA_G_PR=Pr_Op;
  if(MA_G_Price==PRICE_CLOSE  )MA_G_PR=Pr_Cl;
  if(MA_G_Price==PRICE_LOW    )MA_G_PR=Pr_Lo;
  if(MA_G_Price==PRICE_MEDIAN  )MA_G_PR=Pr_ME;
  if(MA_G_Price==PRICE_TYPICAL )MA_G_PR=Pr_TY;
  if(MA_G_Price==PRICE_WEIGHTED)MA_G_PR=Pr_WE;
 
  MA_G=iMA(_Symbol,_Period,MA_G_Period,0,MA_G_Method,MA_G_PR,i);
 
  G = MA_G * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


// Zuweisung Price H
if(MA_H_Period<1)MA_H=1.0;
if(MA_H_Period>=1){
  if(MA_H_Price==PRICE_HIGH    )MA_H_PR=Pr_Hi;
  if(MA_H_Price==PRICE_OPEN    )MA_H_PR=Pr_Op;
  if(MA_H_Price==PRICE_CLOSE  )MA_H_PR=Pr_Cl;
  if(MA_H_Price==PRICE_LOW    )MA_H_PR=Pr_Lo;
  if(MA_H_Price==PRICE_MEDIAN  )MA_H_PR=Pr_ME;
  if(MA_H_Price==PRICE_TYPICAL )MA_H_PR=Pr_TY;
  if(MA_H_Price==PRICE_WEIGHTED)MA_H_PR=Pr_WE;
 
  MA_H=iMA(_Symbol,_Period,MA_H_Period,0,MA_H_Method,MA_H_PR,i);
 
  H = MA_H * MAtoOpZ;
 
  if(AutoMulti==true)MAcount++;}


//=============================================================================================================
// M A s x M A s
//=============================================================================================================
MAmMA=A*B*C*D*E*F*G*H;
//=============================================================================================================
// ( M A s * M A s ) / D I V
//=============================================================================================================
MAmMA_div = MAmMA / MAs_div;
//=============================================================================================================
// A U T O  M U L T I ?
//=============================================================================================================
// ?
if(AutoMulti==true){

  Print("AutoMulti Zum Testen aus");
}


MmM_Mul = MAmMA_div * Multi;

//=============================================================================================================
// B U F F E R  Z U W E I S U N G
//=============================================================================================================


BUF_EightMAmMAdV[i] = MmM_Mul / MAtoOpZ;




//=============================================================================================================
// E N D E  F U N K T I O N E N
//=============================================================================================================
}
return(NULL);}



Alle Zeitangaben in WEZ +2. Es ist jetzt 20:05 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