Öffnen einer Order mit 3 EMAs

 

Hallo,

ich habe ein Problem mit dem öffnen einer Order mit 3 EMAs.

Ich möchte gerne, dass meine Order eröffnet wird, wenn der 10 EMA über dem 20 EMA liegt und der 20 EMA über dem 50 EMA.

Leider öffnet die Order schon immer, wenn nur eine Bedingung erfüllt ist(10 EMA über 20 EMA) und nicht alle zusammen!

 if(MAkurz>MAmittel>MAlang)

Frage, wo ist hier der Fehler?


Unten der bisherige Code (noch nicht ganz fertig)



//Globale Externe Variablen

extern int    MA_lang            = 50;
extern int    malangShift       = 0;
extern int    malangMode      = MODE_EMA;
extern int    malangPrice      = PRICE_CLOSE;


extern int    MA_mittel         = 20;
extern int    mamittelShift     = 0;
extern int    mamittelMode      = MODE_EMA;
extern int    mamittelPrice     = PRICE_CLOSE;


extern int    MA_kurz           = 10;
extern int    makurzShift       = 0;
extern int    makurzMode        = MODE_EMA;
extern int    makurzPrice       = PRICE_CLOSE;
 

extern double pipDistance       = 5;

extern double HandelsLots = 0.1;
extern int MagicNummer = 12345;
int LongOrder,ShortOrder;


double pipMultiplier = 1;
int    digit;
string s_symbol;





//Globale Variablen
bool LongSignal,ShortSignal;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
digit  = MarketInfo(s_symbol,MODE_DIGITS);
   if (digit==2 || digit==4) pipMultiplier = 1;
   if (digit==3 || digit==5) pipMultiplier = 10;
   if (digit==6)             pipMultiplier = 100;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----

           
      //Marktdaten
     double MAlang = iMA(s_symbol,0,MA_lang,malangShift,malangMode,malangPrice,0);     
     double MAmittel = iMA(s_symbol,0,MA_mittel,mamittelShift,mamittelMode,mamittelPrice,0);
     double MAkurz = iMA(s_symbol,0,MA_kurz,makurzShift,makurzMode,makurzPrice,0);
      
            
            //Buy Signal
           
             //Buy Signal
            if(MAkurz>MAmittel>MAlang)
               {
                  LongSignal = true;
               }
            else LongSignal =false;
            //Sell Signal
            if(MAkurz<MAmittel<MAlang)
               {
                  ShortSignal = true;
               }
            else ShortSignal = false;
         
              
   
           //Buy Signal schließen
            if(MAkurz<MAmittel)
               {
                  LongSignal = false;
               }
            else LongSignal =true;
           
            //Sell Signal schließen
            if(MAkurz>MAmittel)
               {
                  ShortSignal = false;
               }
            else ShortSignal = true;
     
    
     
            //Long Order eröffnen
            if(LongSignal == true)
            {
            while(LongOrder<=0)
               {
                  LongOrder = OrderSend(Symbol(),OP_BUY,HandelsLots,Ask,10,0,0,"Jani Long",MagicNummer,0,Green);
               }
            }
       
            //Long Order schließen
           if(LongSignal == false)
           {
           while(LongOrder>0)
               {
                  if(OrderSelect(LongOrder,SELECT_BY_TICKET)==true)
                     {
                        bool LongOrderGeclosed = OrderClose(LongOrder,OrderLots(),Bid,10,Blue);
                        if (LongOrderGeclosed==true) LongOrder=0;
                     }
               }
         
           }
         
            //Short Order eröffnen 
             if(ShortSignal == true)
           {         
            
            while(ShortOrder<=0)
               {
                  ShortOrder = OrderSend(Symbol(),OP_SELL,HandelsLots,Bid,10,0,0,"Jani Short",MagicNummer,0,Red);
               }
           }
   
            //Short Order schließen
            if(ShortSignal == false) 
            {
            while(ShortOrder>0)
               {
                  if(OrderSelect(ShortOrder,SELECT_BY_TICKET)==true)
                     {
                        bool ShortOrderGeclosed = OrderClose(ShortOrder,OrderLots(),Ask,10,Blue);
                        if (ShortOrderGeclosed==true) ShortOrder=0;
                     }
               }
             }
     
   return(0);
  }
//+------------------------------------------------------------------+
 
  1. MT4 - Code gehört in den Thread ganz unten!! Ich Werde ihn später verschieben!
  2. Wenn Du Code postest benutze Alt+S - das kannst Du selber machen (bearbeiten..)
  3. Das: if(MAkurz>MAmittel>MAlang) gibt's nicht - bzw. führt in der Abarbeitung zu if(true>MAlang) da true==1 ist also zu if(1>MAlang)
  4. Du meintest wahrscheinlich:
    if(MAkurz>MAmittel && MAmittel>MAlang) ...
  5. Es gibt  a) einen Debugger (F5), um herauszufinden was da vorgeht und b) es gibt zB. Comment():
    Comment("check: ",(string),(MAkurz>MAmittel>MAlang)," ",MAkurz," ",MAmittel," ",MAlang);

So kann man selber (schneller) herausfinden wo es hackt!

 
Carl Schreiber:
  1. MT4 - Code gehört in den Thread ganz unten!! Ich Werde ihn später verschieben!
  2. Wenn Du Code postest benutze Alt+S - das kannst Du selber machen (bearbeiten..)
  3. Das: if(MAkurz>MAmittel>MAlang) gibt's nicht - bzw. führt in der Abarbeitung zu if(true>MAlang) da true==1 ist also zu if(1>MAlang)
  4. Du meintest wahrscheinlich:
  5. Es gibt  a) einen Debugger (F5), um herauszufinden was da vorgeht und b) es gibt zB. Comment():

So kann man selber (schneller) herausfinden wo es hackt!

Danke für den Hinweis, ich gelobe Besserung!

Bin noch blutiger Anfänger!

Den Code habe ich auch schon probiert, funktioniert aber leider auch nicht!


if(MAkurz>MAmittel && MAmittel>MAlang) ...
 

Schon wieder einer der mit mql4 anfängt und nicht mit mql5 

Ich versteh es einfach nicht.