Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 03.02.16
Lena Lena ist offline
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 105
Lena befindet sich auf einem aufstrebenden Ast
Standard

So ist es besser. Bei meinem ersten Beitrag wusste ich noch nicht wie ich den Code einfüge.

Code:
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//#property strict

#property indicator_buffers 2
#property indicator_color1 Chartreuse
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2

extern bool AlertPopups=true;
extern bool AlertSounds=true;
bool AlertEmails=false;
bool AlertNotifications=false;
string SoundFile = "news.wav";

double THV_Coral;             //Variablen für Coral und Donchian Channel
bool DCTop;
bool DCBottom;

datetime OldTime;             //Für Alarm 1 Mal
int Auswahl=0;                //Auswahlvariable Alarm
int Risiko = 11;

double buf_0[];               //Array zum speichern der Tiefwerte
double buf_1[];               //Array zum speichern der Hochwerte
double buf_2[];               //Array zum speichern der Vergleichswerte

bool Abfrage_01 = false;      //Variable für Arrow_up
bool Abfrage_02 = false;      //Variable für Arrow_down

int i,j,k;                    //Variable für Schleifenzähler
int z1,z2,z3;                 //Variable für Auswahlentscheidung

double AbsWert;               //Absolutvariable der Summe von durchschnittlicher Differenz aus den letzten 10 Perioden
double VerglWert;             //Absolutvariable aus dem WPR
double HochWert;
double TiefWert;

int init()
{
   IndicatorBuffers(3);
   SetIndexStyle(0, DRAW_ARROW, STYLE_SOLID, 1);   //Arrow_up   
   SetIndexArrow(0, 233); 
   SetIndexBuffer(0, buf_0);
   SetIndexStyle(1, DRAW_ARROW, STYLE_SOLID, 1);   //Arrow_down
   SetIndexArrow(1, 234); 
   SetIndexBuffer(1, buf_1);
   SetIndexLabel(0,"Arrow_up");
   SetIndexLabel(1,"Arrow_down");
   SetIndexBuffer(2, buf_2);
   return (0);
}

int deinit()
{
   Comment("");
   return (0);
}

int start()
{
   int Balken = IndicatorCounted();
//----
   THV_Coral   = iCustom(Symbol(), 0, "Coral"   , 0, 55, 0, 1);       //Lage der Coral in der vorherigen Periode  
   DCTop       = iCustom(Symbol(), 0, "Donchian", 40, 0, 1);          //Top-Wert des Dochian Channels auf der vorherigen Kerze 
   DCBottom    = iCustom(Symbol(), 0, "Donchian", 40, 1, 1);          //Bottom-Wert des Dochian Channels auf der vorherigen Kerze
//-----

   for(j=0; j<=9; j++)                        
      AbsWert += MathAbs(High[j] - Low[j]);     //Summierung der Differenz von High und Low der letzten 10 Perioden. Davon wird der Betrag gewählt.
   AbsWert=AbsWert/10;                          //Durchsnittswert des vorher erwittelten Betrags
   j=0;                                         
//-----   
   while(j<=9 && z1<1) 
      {if(MathAbs(Open[j]-(Close[j+1]))>=2.0*AbsWert) z1++; j++;}    //Vergleicht 10 Perioden lang ob die Differrenz zwischen Open und Close >= 2 Mal dem durschnittlichem Absolutwert ist
   if(z1>=1) z2=j;
   else z2=-1;
   j=0; z1=0;
   while(j<=6 && z1<1)
      {if(MathAbs(Close[j+3]-Close[j])>=4.6*AbsWert) z1++; j++;}     //Vergleicht 7 Perioden lang ob die Differenz zwischen Close (Periode j+3) und Close (Periode j) >= 4,6 Mal dem durchschnittlichem Absolutwert ist.
   if(z1>=1) z3=j;
   else z3=-1;
//-----   
   if(z2>-1) Risiko=3;                             //Abschnitt wählt den Risikofaktor
   else Risiko=11;
   if(z3>-1) Risiko=4;
   else Risiko=11;
//-----         
   for(i=Bars-Balken; i>=0; i--)          
   {
      VerglWert=100-MathAbs(iWPR(NULL,0,Risiko,i));   //Es wird ein Vergleichswert auf Basis der WPR berechnet. 
      buf_2[i]=VerglWert;                             //Speichert Vergleichswert in Array (Position i)
      HochWert=0;
      TiefWert=0;
//-----      
      if(VerglWert<29)                                         //Abgleich des Vergleichswertes mit dem Grenzwert 29
      {
         for(k=1 ;buf_2[i+k]>29 && buf_2[i+k]<=71; k++);       //Durchlaufe das Array solange die darin gespeicherten Vergleichswerte zwischen 29 und 71 liegen. Erhöhe den Zähler bei jedem Durchlauf um den Faktor 1.
         if(buf_2[i+k]>71) HochWert=High[i]+AbsWert/2;         //Nachem die Schleife durchlaufen wurde, wird geprüft ob der Vergleichswert > 71 ist. Hochwert wird berechnet.
      }
      if(VerglWert>71)                                         //Abgleich des Vergleichswertes mit dem Grenzwert 71
      {
         for(k=1; buf_2[i+k]>=29 && buf_2[i+k]<71; k++);       //Durchlaufe das Array solange die darin gespeicherten Vergleichswerte zwischen 29 und 71 liegen. Erhöhe den Zähler bei jedem Durchlauf um den Faktor 1.
         if(buf_2[i+k]<29) TiefWert=Low[i]-AbsWert/2;          //Nachdem die Schleife durchlaufen wurde, wird geprüft ob der Vergleichswert < 29 ist. Tiefwert wird berechnet.
      }
//-----
      if(TiefWert!=0 && Abfrage_01==FALSE)                   
      {
         buf_0[i]=TiefWert-1*Point;          //Zeichnet Arrow_up
         Abfrage_01=TRUE;
         Abfrage_02=FALSE;
         Auswahl=1;                          //Variable für Auswahl des Alarm (siehe unten)
      }
      if(HochWert!=0 && Abfrage_02==FALSE)
      {
         buf_1[i]=HochWert+1*Point;          //Zeichnet Arrow_down
         Abfrage_01=FALSE;
         Abfrage_02=TRUE;
         Auswahl=2;                          //Variable für Auswahl des Alarm (siehe unten)
      }
   }
//-----   
   
   //RenkoAlarm
   if(OldTime != Time[0])
   {
   if(Close[2]-Open[2]<0 && Close[1]-Open[1]>0 && Auswahl==2)     //Positiver Bar nachdem ein negativer Pfeil gezeichnet wurde         
      doAlerts(Symbol()+" Buy Signal",SoundFile);          
   if(Close[2]-Open[2]>0 && Close[1]-Open[1]<0 && Auswahl==1)     //Negativer Bar nachdem ein positiver Pfeil gezeichnet wurde
      doAlerts(Symbol()+" Sell Signal",SoundFile);
   OldTime=Time[0];
   }
   return (0);
}

void doAlerts(string message,string soundfile){                   //Alarmfunktion
 if (AlertPopups) Alert(message);
 if (AlertSounds) PlaySound(soundfile);
 if (AlertEmails) SendMail(message,message);
 if (AlertNotifications) SendNotification(message);
}