FORTS Bitte helfen Sie - Seite 5

 

Jemand lügt, oder Michael akzeptiert die Einwände des technischen Supports nicht, oder der technische Support will das Problem nicht anerkennen.

Mikalas 2015.03.26 00:44  RU

Wieder kann servicedexk den Fehler nicht reproduzieren!


alexvd2015.03.26 15:16

Auch der Code im ersten Beitrag war falsch.

 
MigVRN:

Lass uns Freunde sein :)

Aber nicht sofort - sondern erst, wenn die Ladung erfolgreich ist.

Ihr Code zeigt, dass die OnInit-Funktion nutzlos ist, oder die Entwickler haben es vermasselt.

 
Mikalas:

Ja, aber was ist, wenn es wirklich keine Daten gibt?

Was dann? Ein Zyklus? Mit wie vielen Iterationen?

Hier gibt es keine spezifischen Rezepte...

Ich mag überhaupt keine Indikatoren... Das ist der einzige Grund:

Im gleichen Thread mit Indikatoren werden die anderen Operationen für dieses Symbol nacheinander ausgeführt - die Verarbeitung von Ticks und die Synchronisierung der Historie. Das bedeutet, dass, wenn eine Endlosaktion in einem Indikator ausgeführt wird, alle anderen Ereignisse für dieses Symbol nie ausgeführt werden.

Sie können den Chat und alles andere verlangsamen. Daher nutze ich sie ohne Anfragen von benachbarten Chats und als Anbieter von individuellen Veranstaltungen. Im Allgemeinen sollten Sie nur mit dem arbeiten, was in OnCalculate() kam.

Serj_Che:

In Ihrem Code sehen Sie, dass die OnInit-Funktion nutzlos ist, oder die Entwickler haben daran herumgeschraubt.

Es ist Ihr Code - ich habe nur eingefügt, wasalexvd gesagt hat. Ich habe nicht verstanden, warum es bedeutet, dassdie OnInit-Funktion nutzlos ist.

 
alexvd:
In Ihrem Code müssen Sie lediglich den Fehler in der globalen Variable is_failed direkt nach ResetLastError() löschen. Andernfalls erhalten Sie eine entsprechende Meldung, sobald Sie einen Fehler entdeckt haben.

Bingo! Du hast es fast geschafft.) Es gibt einen Grund dafür, dass man sagt: "Vertrauen, aber überprüfen". Der endgültige Text steht unten.

#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 )
        {
           is_failed = false;
           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." );
          is_failed = false;
        }
        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);
  }
 
MigVRN:

Hier gibt es keine spezifischen Rezepte...

Ich mag überhaupt keine Indikatoren... Das ist der einzige Grund:

Im gleichen Thread mit den Indikatoren werden nacheinander andere Aktionen bezüglich des Symbols durchgeführt - die Verarbeitung der Ticks und die Synchronisierung der Historie. Das bedeutet, dass, wenn eine unendliche Aktion im Indikator ausgeführt wird, alle anderen Ereignisse für dieses Symbol nie ausgeführt werden.

Sie können den Chat und alles andere verlangsamen. Daher nutze ich sie ohne Anfragen von benachbarten Chats und als Anbieter von individuellen Veranstaltungen. Im Allgemeinen sollten Sie nur mit dem arbeiten, was in OnCalculate() kommt.

Dies ist Ihr Code - ich habe nur das eingefügt, wasalexvd erwähnt hat. Ich verstehe nicht, warum daraus folgt, dassdie OnInit-Funktion nutzlos ist.

Welcher Code ist das? Ich habe hier keinen Code veröffentlicht.

Die Indikatoren werden nicht alles andere verlangsamen. Der Punkt ist, dass alles aus der Synchronisation in MT5 ist, Indikatoren arbeiten in ihren Threads und EAs in ihren. Das Glas steht für sich allein.

Ich mag auch keine Indikatoren, aber ich muss sie von Zeit zu Zeit verwenden.

 
Dima_S:

Bingo! Du hast es fast geschafft.) Es gibt einen Grund dafür, dass man sagt: "Vertrauen, aber überprüfen". Der endgültige Text steht unten.

Warum wiederholen Sie in OnCalculate, was in OnInit war? Ist es ein solcher Zauber?)
 
Serj_Che:

Wie lautet mein Code? Ich habe hier keine Codes gepostet.

OH... Entschuldigung, ich wurde mit Dima_S verwechselt .

Serj_Che:

Ich werde nicht alles andere wegen der Indikatoren verlangsamen. Die Sache ist, dass alles aus der Synchronisation in MT5, Indikatoren arbeiten in ihrem Thread und EAs in ihrem. Das Glas steht für sich allein.

Ich mag auch keine Indikatoren, aber ich muss sie von Zeit zu Zeit verwenden.

Die Indikatoren funktionieren in ihren Threads... Aber der Chat funktioniert in diesem Fluss. Wenn in einem Indikator etwas schief läuft (eine ewige Schleife inOnCalculate()) der Expert Advisor, der in seinem "eigenen" Fluss arbeitet - wird nichts vom Chat sehen...

 
MigVRN:

OOO... Entschuldigung. Verwechselt mit Dima_S.

Die Indikatoren laufen in ihrem Faden... Nur der Chat funktioniert in demselben Thread. Und wenn in einem Indikator etwas schief geht (eine ewige Schleife inOnCalculate()) der Expert Advisor, der in "seinem" Thread läuft, sieht nichts von diesem Chat...

Ich bezweifle, ich bin sogar noch mehr geneigt zu denken, dass es nicht so ist, der Expert Advisor sollte von selbst funktionieren. Ich habe keine derartigen Probleme gehabt, aber wenn Sie wollen, können Sie das hier überprüfen.

 
Serj_Che:

Ich bezweifle es, ich bin sogar eher der Meinung, dass es nicht so ist, der EA sollte von alleine funktionieren. Es gab keine derartigen Spielereien, aber Sie können solche Extreme überprüfen, wenn Sie wollen.

Ich werde den Prüfcode skizzieren. Ich werde es in 2-3 Stunden überprüfen. Aber die Tatsache, dass, wenn der 1-Indikator im Chat "langsamer" wird, andere mit ihm langsamer werden - das ist eine Tatsache, die ich wiederholt erlebt habe.
 
MigVRN:
Ich werde einen Testcode skizzieren. In etwa 2-3 Stunden. Aber wenn sich ein Indikator im Chat "verlangsamt", dann verlangsamen sich die anderen mit ihm - das ist eine Tatsache, mit der ich mehr als einmal konfrontiert wurde.

OK, interessant!

Indikatoren arbeiten in ihrem eigenen Thread, EAs in ihrem eigenen Thread. Es sei denn, es handelt sich um einen einzelnen Kernstein.