Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 01.02.15
Benutzerbild von markusrgb
markusrgb markusrgb ist offline
Mitglied
 
Registriert seit: Jan 2015
Beiträge: 34
markusrgb befindet sich auf einem aufstrebenden Ast
Standard

OK das vorhin war ein noch ein sehr fehler behafteter Code ... hab aus versehen denn falschen eingestellt:
im nachfolgend hab ich schon die kleineren Fehler ausgebügelt

3 fehler kann ich allerdings nicht lösen:

hier hab ich wohl ein double-int Kompatibilitätsproblem:
da [Periode-1] eine int ist?
Code:
double Du[Periode-1]; // erstellt Extern Eingestellte Anzahl an "Du" Variablen (z.B. Du 0-9)
Weis leider noch nicht wie ich das sinnvoll beheben kann
genau so auch beiden beiden anderen fehlern



hier nochmal der korrigierte code mit denn 3 Fehlern

Code:
//+------------------------------------------------------------------+
//|                                              Signal Idee Dax.mq4 |
//|                                                    Markus |
//|                                             https://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright "Markus "
#property link      "https://www.mql4.com"
#property version   "1.00"
#property strict
// GLOBALE VARIABLEN --- UM SIE IN ALLEN FUNKTIONEN ZU VERWENDEN!!!
//+------------------------------------------------------------------+
// --- Variablen vom Benutzer Festlegen: (Global)
//+------------------------------------------------------------------+
extern double HandelsLots = 0.1; // Größe der Handels Lots
extern double SL_Prozent = 0.5; // StopLoos in Prozent
extern double TP_Prozent = 1.5; // TakeProfit in Prozent
extern int MagicNummer = 12345;
extern int Periode = 10; // Perioden Länge Extern einstellen
//+------------------------------------------------------------------+
// --- Variablen fest Festlegen: (Global)
//+------------------------------------------------------------------+

datetime PeriondenStartZeit; // zum feststellen einer neuen Perionde
bool NeuePeriodeBegonnen;
bool LongSignal;
bool ShortSignal;
int LongOrder;
int ShortOrder;

//+------------------------------------------------------------------+
// --- Variablen für Durschnitts Berechnungen AnzahlMA20               
//+------------------------------------------------------------------+

double Du[Periode-1]; // erstellt Extern Eingestellte Anzahl an "Du" Variablen (z.B. Du 0-9) 
int PeriodenVergleich = Periode; // PeriodenVergleich wird nicht mehr geändert und dient als Reverenz
double Durchschnitt[5]; //insgesammt 6 Perioden Durchschnitte sollen erstellt werden
int PeriodenStueckzahl=5; //Anzahl der Letzten Perioden die für Berechnungen zwischen gespeichert werden sollen (6Stück)
bool BerechnungsFreigabe;




// --- Strings für Symbole des Dax30 festlegen
string syDax = "EUREX.FDX";


//+------------------------------------------------------------------+
//| Expert initialization function - Start von EA                    |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PeriondenStartZeit = Time[0];
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function - Ausführen beim Ende von EA    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function  (StartZeit                                 |
//+------------------------------------------------------------------+
void OnTick()
{
//---

//+------------------------------------------------------------------+
// --- Variablen für ST/TP Berechnungen                              |
//+------------------------------------------------------------------+

double StoppLossLO, StoppLossSO;
double TakeProfitLO, TakeProfitSO;
bool OrderAngepasst;
int TPLO, TPSO;
int SLLO, SLSO;
double NachkommaTPLO, NachkommaTPSO;
double NachkommaSLLO, NachkommaSLSO;


// Überprüfen ob ein neuer Periodenbeginn vorliegt
if (PeriondenStartZeit != Time[0])
{
NeuePeriodeBegonnen = true;
PeriondenStartZeit = Time[0];
}
else NeuePeriodeBegonnen = false;

   
// --- MA20 für Dax Abfragen - Symbole durch die Strings ersetzt
double maDAX = iMA(syDax,0,20,0,MODE_SMA,PRICE_CLOSE,0);

// ---Aktuellen BID für Dax Abfragen
double bidDax  = MarketInfo(syDax, MODE_BID);


//+------------------------------------------------------------------+
//| Berechnung AnzahlMA20                                            |
//+------------------------------------------------------------------+


double AnzahlMA20 = bidDax - maDAX;

// Anzeige auf Bildschirm 
Comment("DAX =",AnzahlMA20); 

//+------------------------------------------------------------------+
//| Durchschnitte für AnzahlMA20 Berechnen                           |
//+------------------------------------------------------------------+  

if (Periode<PeriodenVergleich+1 && Periode>0) //wenn Perioder 0-9 (10Stück)
   {
   Du[Periode-1] = AnzahlMA20; //Du[9]=AnzahlMA20 .... Du[8]=AnzahlMA20 ... ---> Du[0]=AnzahlMA20
   Periode --;    // 10-1=9 ... 9-1=8 ... 8-1=7 ---> 1-1=0
   }


if (Periode<=1) //Wenn alle Werte der Variablen von 9-0 vergeben sind
{
    double ZwSumm = 0;
    for(int i=0; i<PeriodenVergleich;i++) // so lange "i" kleiner als "PeriodenVergleich"(10) ist wird "Du" zusammengezählt
       {
       ZwSumm = ZwSumm + Du[i]; // Rechnet alle Du0-Du9 zusammen 
       }
    Durchschnitt[PeriodenStueckzahl] = NormalizeDouble (ZwSumm/PeriodenVergleich,2); //Errechnet denn Durchschnitt und kürzt auf 2 Kommastellen
    PeriodenStueckzahl--;
    if (PeriodenStueckzahl<0)
    {
    PeriodenStueckzahl=0 // Stellt "PeriodenStueckzahl" auf 0 wenn alle [0-5] Durchschnitte befüllt sind, um im nächsten Durchlauf denn Durchschnitt der aktuellen Periode berechnen zu können
    Periode = PeriodenVergleich;
    }
}

if (Durchschnitt[5]>0 && Durchschnitt[4]>0 && Durchschnitt[3]>0 && Durchschnitt[2]>0 && Durchschnitt[1]>0 && Durchschnitt[0]>0) //Wennn die 6 letzten Durchschnitte berechnet wurden
   {
   BerechnungsFreigabe = true;
   }
else BerechnungsFreigabe = false;

//+------------------------------------------------------------------+
//| HandelsSignale ermitteln    / Beispiel                           |
//+------------------------------------------------------------------+  

if (NeuePeriodeBegonnen == true)
{ 
   if (BerechnungsFreigabe == true)
     {
       //  --- Kauf Signal --- 

       if (Durchschnitt[0]>Durchschnitt[1])
        {
        LongSignal = true;
        }
       else LongSignal = false;

       // --- Verkauf Signal ---

       if (Durchschnitt[0]<Durchschnitt[1])
        {
        ShortSignal = true;
        }
       else ShortSignal = false;
     }
}
else
{
LongSignal = false;
ShortSignal = false;
}
//+----------------------------------------------------------------------------------------+
//| Speicher des Aktuellen "Durchschnitte[0]" auf 0 Stellen und denn Rest um 1 Verschieben |
//+----------------------------------------------------------------------------------------+ 
if (BerechnungsFreigabe == true)
{ 
Durchschnitt[5]=Durchschnitt[4];
Durchschnitt[4]=Durchschnitt[3];
Durchschnitt[3]=Durchschnitt[2];
Durchschnitt[2]=Durchschnitt[1];
Durchschnitt[1]=Durchschnitt[0];
Durchschnitt[0]=0;
}


//+------------------------------------------------------------------+
//| Kauf / Verkauf Signal umsetzen                                   |
//+------------------------------------------------------------------+