FORTS Bitte helfen Sie

 

Guten Tag!

Auch hier kann der Servodex den Fehler nicht reproduzieren!

Bitte kompilieren Sie diesen Code und "werfen" Sie den Indikator auf das MIX-6.15 Symbol

( nicht von MetaEditor )

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//
bool is_failed = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  
  SymbolSelect( "RTS-6.15", true );
  SymbolSelect( "Si-6.15", true );
//---  
  ResetLastError();
//---
  if ( SymbolSelect( "MIX-6.15", true ) )
  {
    long total_bars = long( SeriesInfoInteger( "MIX-6.15", PERIOD_M1, SERIES_BARS_COUNT ) );
    if ( total_bars > 0 )
    {
      if ( SymbolSelect( "RTS-6.15", true ) )
      {
        total_bars = long( SeriesInfoInteger( "RTS-6.15", PERIOD_M1, SERIES_BARS_COUNT ) );
        if ( total_bars > 0 )
        {
          if ( SymbolSelect( "Si-6.15", true ) )
          {
            total_bars = long( SeriesInfoInteger( "Si-6.15", PERIOD_M1, SERIES_BARS_COUNT ) );
            if ( total_bars > 0 )
            {
              Print( "Init OK." );
            }
            else
            {
              is_failed = true;
              Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
            }    
          }
          else
          {
            is_failed = true;
            Print( "Symbol Si-6.15 not selected" );
          }
        }
        else
        {
          is_failed = true;
          Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
        }
      } 
      else
      {
        is_failed = true;
        Print( "Symbol RTS-6.15 not selected" );
      }
    }
    else
    {
      is_failed = true;
      Print( "Get Bars failed MIX-6.15 Last error = ", string(GetLastError() ) );
    }
  } 
  else
  {
    is_failed = true;
    Print( "Symbol MIX-6.15 not selected" );
  } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if ( is_failed )
   {
     Print( "Sorry! Get Bars failed." );
   }
   else Print( "Bingo! We done.");
//--- return value of prev_calculated for next call
   return(rates_total);

Bitte veröffentlichen Sie die Ergebnisse (die auf der Registerkarte "Experten" angezeigt werden sollen) hier.

 
2015.03.26 11:44:13.934	test (MIX-6.15,H1)	Bingo! We done.
2015.03.26 11:44:13.934	test (MIX-6.15,H1)	Init OK.

alle verfügbaren Instrumente werden in die Marktübersicht aufgenommen.

Habe den Test überarbeitet. Habe genau auf MIX mit allen anderen Instrumenten geworfen.

Alles in Ordnung.

 

Das Konto ist real in Otkritie. Die Karten Ri und Si sind ebenfalls offen.

 
2015.03.26 13:56:05.487 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:05.020 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:02.566 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:02.566 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:02.560 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:01.232 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:01.232 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:01.144 Test (MIX-6.15,M1) Bingo! Das haben wir getan.
2015.03.26 13:56:01.024 Test (MIX-6.15,M1) Bingo! Das haben wir getan.

2015.03.26 13:56:01.024 Test (MIX-6.15,M1) Init OK.

Real Opening win7 x64 C:\Programme\Open Broker\terminal64.exe build 1085


 

Ich danke Ihnen!

Ich habe:

Win7/64 Ultimate MT5 build 1085

2015.03.26 15:30:37.229 Test (MIX-6.15,M1)      Sorry! Get Bars failed.
2015.03.26 15:30:37.229 Test (MIX-6.15,M1)      Get Bars failed RTS-6.15 Last error = 4401
 

Ich habe MIX-6.15 fallen, WIN 7-64 home premium MT5 build 1085:

2015.03.26 15:44:27.729 Test (MIX-6.15,H1)      Get Bars failed MIX-6.15 Last error = 4401
2015.03.26 15:44:27.729 Test (MIX-6.15,H1)      Sorry! Get Bars failed.
 

FORTS Benutzer!

Bitte nehmen Sie sich 3 Min. Zeit!

Um den "Floating"-Fehler zu beheben, benötigen Sie

MEHR Statistik!

 
Mikalas:

FORTS Benutzer!

Bitte nehmen Sie sich 3 Min. Zeit!

Um den "Floating"-Fehler zu beheben, benötigen Sie

MEHR Statistik!

Ausgaben 3 min))

Michael, das geht nicht - mit einer einzigen Anfrage in der Inite. Es gibt keine Garantie, dass alle Daten fertig sind.

So macht man es - natürlich mit Verstand.

#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//
bool is_failed = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  SymbolSelect( "MIX-6.15", true );
  SymbolSelect( "RTS-6.15", true );
  SymbolSelect( "Si-6.15", true );
//---  
  ResetLastError();
//---  
  int total_bars = Bars( "MIX-6.15", PERIOD_M1 );
  if ( total_bars > 0 )
  {
    total_bars = Bars( "RTS-6.15", PERIOD_M1 );
    if ( total_bars > 0 )
    {
      total_bars = Bars( "Si-6.15", PERIOD_M1 );
      {
        if ( total_bars > 0 )
        {
          Print( "Init OK." );
        }
        else
        {
          is_failed = true;
          Print( "Get Bars failed Si-6.15 Last error = ", string(GetLastError() ) );
        }
      }
    }
    else
    {
      is_failed = true;
      Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
    }
  }
  else
  {
    is_failed = true;
    Print( "Get Bars failed MIX-6.15 Last error = ", string(GetLastError() ) );
  } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  ResetLastError();
//---  
  int total_bars = Bars( "MIX-6.15", PERIOD_M1 );
  if ( total_bars > 0 )
  {
    total_bars = Bars( "RTS-6.15", PERIOD_M1 );
    if ( total_bars > 0 )
    {
      total_bars = Bars( "Si-6.15", PERIOD_M1 );
      {
        if ( total_bars > 0 )
        {
          Print( "Init OK." );
        }
        else
        {
          is_failed = true;
          Print( "Get Bars failed Si-6.15 Last error = ", string(GetLastError() ) );
        }
      }
    }
    else
    {
      is_failed = true;
      Print( "Get Bars failed RTS-6.15 Last error = ", string(GetLastError() ) );
    }
  }
  else
  {
    is_failed = true;
    Print( "Get Bars failed MIX-6.15 Last error = ", string(GetLastError() ) );
  } 
//---
   if ( is_failed )
   {
     Print( "Sorry! Get Bars failed." );
   }
   else Print( "Bingo! We done.");
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 

Ein Mehrwährungsindikator ist nicht so einfach.

Prüfen Sie zunächst die Verfügbarkeit der Instrumente:

bool CorrectSymbol( string symbol )
{
        ResetLastError();
        if ( SymbolInfoDouble( symbol, SYMBOL_BID ) > DBL_EPSILON ) return(true);

        // символ не выбран в "Обзоре рынка" (нет в списке доступных)
        if ( GetLastError() == 4302 )
        {
                if ( SymbolSelect( symbol, true ) && SymbolInfoInteger( symbol, SYMBOL_SELECT ) ) return(true);
        }

        return(false);
}

Öffnen Sie dann die Charts aller verwendeten Instrumente (ein unsichtbares Chart-Objekt reicht aus), damit die Historie normal geladen wird.

Und erst dann versuchen, den Verlauf mit CheckLoadHistory zu laden.

Aber auch das reicht möglicherweise nicht aus.

 
Dima_S:

Ausgabe von 3 Minuten))

Michael, das ist nicht möglich - mit einer einmaligen Anfrage bei der Inite. Es gibt keine Garantie dafür, dass alle Daten bereits fertig sind.

So macht man es - natürlich mit Verstand.

Ich stimme zu, es ist ein bisschen falsch, ich habe den Code umgeschrieben (siehe den Quellcode), ABER das Ergebnis ist das gleiche!

2015.03.26 16:20:55.564 Test (MIX-6.15,M1)      Sorry! Get Bars failed.
2015.03.26 16:20:55.564 Test (MIX-6.15,M1)      Get Bars failed Si-6.15 Last error = 4401
 
Mikalas:

Einverstanden, ein bisschen falsch, schrieb den Code neu, ABER das Ergebnis ist das gleiche!

Haben Sie meine probiert?