'>' - illegal operation use, '<=' - illegal operation use

 

Hallo, ich habe folgenden Code:

//+------------------------------------------------------------------+
//| Includes                                                         |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>               CTrade _trade;                    // wird verwendet für die Positionsöffnungen
#include <Expert\Money\MoneyFixedRisk.mqh>   CMoneyFixedRisk _money;       // wird verwendet für die Lot-Größen-Berechnung
#include <Trade\AccountInfo.mqh>         CAccountInfo _account;            // wird verwendet für die Account Information Funktionen
#include <Trade\OrderInfo.mqh>           COrderInfo _order;                // wird verwendet für die Order Information Funktionen
#include <Trade\PositionInfo.mqh>        CPositionInfo _position;          // wird verwendet für die Position Information Funktionen 
#include <Trade\SymbolInfo.mqh>          CSymbolInfo _symbol;              // wird verwendet für die Symbol Information Funktionen
//+------------------------------------------------------------------+
//| Input Variablen                                                  |
//+------------------------------------------------------------------+
input group                "GENERAL"
input ENUM_APPLIED_PRICE   inpAppliedPrice            =      PRICE_CLOSE;    // type of price

input group                "Risiko";
input double               inpRisiko                  =                2;     // Risiko in Prozent vom Kapital
input double               inpKapital                 =                0;     // Kapital, 0 = full account Balance

input group                "EMA"
input ENUM_MA_METHOD       inpEMAMode                 =         MODE_EMA;    // Methode der MAs
input int                  inpFastEMAPeriod           =                8;    // Periode des schnellen EMA
input int                  inpSlowEMAPeriod           =               21;    // Periode des langsamen EMA

input ENUM_TIMEFRAMES      inpLongtermTimeframe       =        PERIOD_H1;    // Timeframe für Longterm
input ENUM_TIMEFRAMES      inpShorttermTimeframe      =        PERIOD_M5;    // Timeframe für Shortterm
//+------------------------------------------------------------------+
//| Variablen                                                        |
//+------------------------------------------------------------------+
//-- Array für Preis-Daten
MqlRates rates[], rates1[];
//-- EMAs
int slowEMAShorttermHandle, fastEMAShorttermHandle;
double buSlowEMAShortterm[], buFastEMAShortterm[];
int slowEMALongtermHandle, fastEMALongtermHandle;
double buSlowEMALongterm[], buFastEMALongterm[];
//--
int toCopyRates = 7;
int toCopyEMA = 10;
//-- Variablen, um neue Kerze zu erkennen
static datetime ZeitstempelLetzterCheck;
datetime ZeitstempelAktuelleKerze;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   _symbol.Name(Symbol());
   _symbol.Refresh();
   if(!RefreshRates())
     {
      Print("Error RefreshRates. Bid=",DoubleToString(_symbol.Bid(),Digits()),
            ", Ask=",DoubleToString(_symbol.Ask(),Digits()));
      return(INIT_FAILED);
     }
//-- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(_symbol.Digits()==3 || _symbol.Digits()==5)
      digits_adjust=10;
//---
   if(!_money.Init(GetPointer(_symbol),Period(),_symbol.Point()*digits_adjust))
      return(INIT_FAILED);
   _money.Percent(inpRisiko); 
//--- Array sortieren
   ArraySetAsSeries(rates,true);
   ArraySetAsSeries(rates1,true);
   ArraySetAsSeries(buFastEMAShortterm,true);
   ArraySetAsSeries(buSlowEMAShortterm,true);
   ArraySetAsSeries(buFastEMALongterm,true);
   ArraySetAsSeries(buSlowEMALongterm,true);
   
   fastEMALongtermHandle  = iMA(_Symbol,inpLongtermTimeframe,inpFastEMAPeriod,0,inpEMAMode,inpAppliedPrice);
   slowEMALongtermHandle  = iMA(_Symbol,inpLongtermTimeframe,inpSlowEMAPeriod,0,inpEMAMode,inpAppliedPrice);
   fastEMAShorttermHandle = iMA(_Symbol,inpShorttermTimeframe,inpFastEMAPeriod,0,inpEMAMode,inpAppliedPrice);
   slowEMAShorttermHandle = iMA(_Symbol,inpShorttermTimeframe,inpSlowEMAPeriod,0,inpEMAMode,inpAppliedPrice);
   
   if(fastEMALongtermHandle == INVALID_HANDLE || slowEMALongtermHandle == INVALID_HANDLE ||
      fastEMAShorttermHandle == INVALID_HANDLE || slowEMAShorttermHandle ==INVALID_HANDLE){
         Alert("*ERROR* creating EMA handle");
         return(INIT_FAILED);
   }

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!RefreshRates())
      return;
//--- Arrays befüllen 
   if(CopyRates(_Symbol,inpShorttermTimeframe,0,toCopyRates,rates) != toCopyRates) return;
   if(CopyRates(_Symbol,inpLongtermTimeframe,0,toCopyRates,rates1) != toCopyRates) return;
   if(CopyBuffer(fastEMALongtermHandle,0,0,toCopyEMA,buFastEMALongterm) != toCopyEMA) return;
   if(CopyBuffer(slowEMALongtermHandle,0,0,toCopyEMA,buSlowEMALongterm) != toCopyEMA) return;
   if(CopyBuffer(fastEMAShorttermHandle,0,0,toCopyEMA,buFastEMAShortterm) != toCopyEMA) return;
   if(CopyBuffer(slowEMAShorttermHandle,0,0,toCopyEMA,buSlowEMAShortterm) != toCopyEMA) return;
   
   ZeitstempelAktuelleKerze = rates[0].time;
   
   //if(ZeitstempelLetzterCheck != ZeitstempelAktuelleKerze) 
   //{
      //ZeitstempelLetzterCheck = ZeitstempelAktuelleKerze;
      
//--- Signale berechnen
//--- Long
      if(buFastEMALongterm[1] > buSlowEMALongterm[1] &&
         rates1[1] > buSlowEMALongterm[1]) 
        {
         if(rates[0] <= buFastEMAShortterm[0] &&
            rates[0] > buSlowEMAShortterm[0])
           {
            
           }
        }
//--- Short
      
   //}
  }

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if(!_symbol.RefreshRates())
      return(false);
//--- protection against the return value of "zero"
   if(_symbol.Ask()==0 || _symbol.Bid()==0)
      return(false);
//---
   return(true);
  }

Für diesen Teil:

if(buFastEMALongterm[1] > buSlowEMALongterm[1] &&
         rates1[1] > buSlowEMALongterm[1]) 
        {
         if(rates[0] <= buFastEMAShortterm[0] &&
            rates[0] > buSlowEMAShortterm[0])
           {
            
           }
        }

bekomme ich diese fehlermeldung:

'>' - illegal operation use
'<=' - illegal operation use

Woran liegt das und wie kann ich es umgehen?

 
Wie lautet der richtige Aufruf eines Wertes von rates?
 
Carl Schreiber:
Wie lautet der richtige Aufruf eines Wertes von rates?

Das ist der multi rates aufruf 😂😂😂

 
amando:

Das ist der multi rates aufruf 😂😂😂

ähm und was ist da jetzt falsch?

 

Kennst Du jetzt schon die MQL-Referenz?

Wenn Du in die Suche MqlRates eingibst und das erste Ergebnis CopyRates aufrufst, dann siehst Du dort ein Beispiel inkl. der Sortierung der Ergebnisse.

Aber das hättest Du eigentlich selber finden können, getreu dem Spruch hilf Dir selbst, dann hilft Dir Gott.

Außerdem, den Fehler hast Du gestern um 17:19 gepostet, statt gleich da zu suchen, sind Dir jetzt 14 Stunden verloren gegangen :(

 
Ich bin doch so ein Idiot... Das hatte ich schon so oft gemacht und stand jetzt wohl stundenlang aufm Schlauch....
Grund der Beschwerde: