Gemeinsam lernen und schreiben in MQL5 - Seite 41

 
Dimka-novitsek: Bedeutet dies, dass die Plattform dieses Paar nicht unterstützt? 2012.09.21 16:23:17 Failed to create an iMA indicator handle for pair CADJPY/PERIOD_D1, error code 4302
Sie müssen prüfen, warum ein Fehler aufgetreten ist. Der Fehlercode gibt nicht den genauen Grund an, warum das Symbol nicht ausgewählt wird - ob der Programmierer die Verbindung des benötigten Symbols nicht bereitgestellt hat oder das Symbol von dem spezifischen Kursanbieter nicht unterstützt wird.
 
Yedelkin:
Sie müssen prüfen, warum der Fehler aufgetreten ist. Schließlich sagt der Fehlercode nichts darüber aus, aus welchem Grund das Symbol nicht ausgewählt wird - ob der Programmierer keine Verbindung zum richtigen Symbol hergestellt hat oder das Symbol tatsächlich von einem bestimmten Kursanbieter nicht unterstützt wird.

Ich danke Ihnen!!! Genau! So etwas in der Art habe ich schon die ganze Zeit gedacht,

Oh, sie stören.

aber wie? Ja, ich tue so, als ob ich von der Hilfe...

 
Dimka-novitsek aber wie? Ja, ich handle wie von der Hilfe...
Es gibt keinen vorgefertigten Code, aber hier ist eine Idee: SymbolsTotal() gibt die Gesamtzahl aller Symbole aus. Es bleibt, diese Symbole zu durchsuchen und herauszufinden, ob das gesuchte Symbol unter ihnen zu finden ist. Wenn nicht, drucken Sie es aus, und wenn ja, prüfen Sie, ob das gewünschte Symbol in Market Watch ausgewählt ist. Wenn nicht, schließen Sie es an.
 
DANKESCHÖN!!!
 
Gibt es eine Möglichkeit, Tics für das Wochenende zu simulieren?
 
Toll!!! Ich danke Ihnen!!! Wow, daran habe ich selbst nicht gedacht, wirklich... Sagen Sie mir, ich verstehe nicht, wo die Ausdrucke im Prüfgerät geschrieben werden, oder ob sie geschrieben werden. Ich sehe sie nicht im Logbuch des Testers!
 
Dimka-novitsek: Sagen Sie es mir, ich weiß nicht, wo die Ausdrucke im Prüfgerät stehen, oder ob sie dort stehen. Ich sehe sie nicht im Logbuch des Testers!
Klicken Sie mit der rechten Maustaste auf die Registerkarte und Sie erhalten folgende Optionen
 
Ich danke Ihnen!!! Nun...
 

Guten Abend! Zu einem alten Thema

Ich verwende die Funktion SymbolsTotal(), um herauszufinden, dass es 101 Symbole gibt (wow!!!).

Und das Wichtigste - so etwas wie dieses Symbol ist dumm nicht zu erkennen. Hier.

Dies ist ERR_INDICATOR_UNKNOWN_SYMBOL.
4801
Unbekanntes Symbol

Aber wenn Sie brauchen, hier, schauen Lagen, wenn Sie können und brauchen

/////////////////////////////////////////////////////////////////////

double CalculateStrengthPairsTF(string a_symbol, ENUM_TIMEFRAMES a_timeframe) {

SymbolSelect(
  a_symbol,       // имя символа
  true      // включить или выключить
   );

    int DIGITS_ = SymbolInfoInteger(a_symbol,SYMBOL_DIGITS);
   //---
    MqlTick last_tick;
   if(SymbolInfoTick(a_symbol,last_tick));
   double BID_ = last_tick.bid;
   BID_ = NormalizeDouble( BID_, DIGITS_);
  // Print("a_symbol");Print(a_symbol); Print("a_timeframe");Print(a_timeframe); Print( "Period_");Print( Period_); ResetLastError();
    MA_handle=iMA(a_symbol,periodd(a_timeframe),Period_,0,method_ma,price_applied);
    //--- заполнение массива MA[] текущими значениями индикатора iMA
   //--- в массив будет записано 100 элементов
   
 //--- если не удалось создать хэндл
   if(MA_handle==INVALID_HANDLE)
     {
      //--- сообщим о неудаче и выведем номер ошибки
      PrintFormat("Не удалось создать хэндл индикатора iMA для пары %s/%s, код ошибки %d",
                  a_symbol,
                  EnumToString(a_timeframe),
                  GetLastError()); ResetLastError();} 
                  
                  
  int Total= SymbolsTotal(true);Print("Total");Print(Total);                 
  int Dotal= SymbolsTotal(false);Print("Dotal");Print(Dotal);        
   
   
   CopyBuffer(MA_handle,0,0,100,MA);
   //--- задаём порядок индексации массива MA[] как в MQL4
   ArraySetAsSeries(MA,true);  
   double iMA_ = NormalizeDouble(MA[0], DIGITS_);
           
   ATR_handle=iATR(a_symbol,periodd(a_timeframe),Period_   );
   CopyBuffer(ATR_handle,0,0,100,ATR);
   ArraySetAsSeries(ATR,true);
   double iATR_ = NormalizeDouble(ATR[0], 4);
   double for_ret = 0;
   if (iATR_ > 0.0) {
      for_ret = 100.0 * (MathAbs(BID_ - iMA_) / iATR_);
      if (BID_ < iMA_) for_ret = -1.0 * for_ret;
   }
   return (for_ret);
}



///////////////////////////////////////////////////////////////////////////////

 
Dimka-novitsek: Ich verwende SymbolsTotal(), um herauszufinden, dass es insgesamt 101 Zeichen gibt (wow!!!).

Noch wichtiger ist, dass es das Symbol nicht erkennt. Hier.

ERR_INDICATOR_UNBEKANNTES_SYMBOL
4801
Unbekanntes Symbol

Außerdem gibt es in meinem Terminal kein CADJPY-Symbol. So geht's: Strg+M, Rechtsklick, Option "Symbole...".