Benutzerdefinierte Symbole. Fehler, Bugs, Fragen, Vorschläge. - Seite 33

 
RusPro #:

Ich habe Ihren Test ausprobiert, es ist genau dasselbe - Verzögerungen von ein paar Sekunden. nicht auf benutzerdefinierte, aber auf Silber Futures

Instrument Silv-12.21. MICEX, Makler BCS. Aber ich denke, das spielt keine Rolle.

Aber in Ihrem Fall ist es möglich, dass das Diagramm nicht auf Geboten aufgebaut ist, oder dass der Broker unterschiedliche Kurs- und Handelsströme hat (obwohl, an der Börse - unwahrscheinlich).

Hier geht es um maßgeschneiderte Instrumente.

 
Andrey Khatimlianskii #:

Wir haben nicht über gewöhnliche Werkzeuge gesprochen, sondern über Castum. Per Definition sind alle Informationen über sie im Terminal verfügbar, nichts sollte an den Server gehen.

Vielleicht gibt es dort irgendeinen Unsinn - wie eine Serverzeitabfrage oder so etwas. Im Allgemeinen ist es ein Fehler. Und was passiert, wenn Sie einen Test starten, ohne dass eine physische Verbindung besteht? Ich bin neugierig, aber ich habe nichts, um es zu testen.

 

Hallo zusammen!
Aus irgendeinem Grund wird die Geschichte nicht in das benutzerdefinierte Symbol kopiert. Der Code ist der einfachste. Ich erhalte keine Fehler, aber es gibt keine Anführungszeichen im benutzerdefinierten Symbol.

Ich möchte nur die echten Kurse mit 1 Stunde Versatz in das benutzerdefinierte Symbol übertragen.

Können Sie mir sagen, warum das Ergebnis leer ist?
Ich danke Ihnen.


int OnInit()
  {
   
   string Sym1 = "EURUSD"; /// источник
   string Sym2 = "EURUSD2";   /// приемник
   int HBack = 1;   /// количество часов сдвига
   datetime tc = StringToTime(TimeCurrent());   /// конец участка
   datetime sht = tc - HBack * 60 * 60;
   datetime sht2 = tc - 2 * HBack * 60 * 60;
   
   MqlRates mrates[];
   
   if( CopyRates(Sym1, PERIOD_M1, sht, tc, mrates) < 0 ){
        
        Alert("Ошибка копирования исторических данных - ошибка:", GetLastError() );
        return(INIT_FAILED);
        
        }
        
   if( CustomRatesReplace(Sym2, sht2, sht, mrates, WHOLE_ARRAY) < 0 ){
      
      Alert("Ошибка вставки исторических данных - ошибка:", GetLastError() );
        return(INIT_FAILED);
        
        }
      
   
   return(INIT_SUCCEEDED);
  }
 

SymbolInfoXXX hinkt im Vergleich zu iCloseunaufhaltsam hinterher:

benutzerdefinierten Symbolkurse (sowohl Ticks als auch Balken).

Ich habe festgestellt, dassSymbolInfoDouble und SymbolInfoTick, die in EA aufgerufen werden und auf diesem Chart arbeiten, in einem bestimmten Moment"hängen": in der Marktübersicht ändern sich die Kurse, der Chart wird aktualisiert, iClose und CopyTicksRange erhalten aktuelle Daten, aber SymbolInfoXXX gibt veraltete Informationen.

Im Zuge des Parsens kam es zum einfachsten Code, der diese "Hänger" aufspüren sollte, aber viel früher das Problem von der anderen Seite zeigte:SymbolInfoXXX hinkt im Vergleich zu iCloseeinfach unerbittlich hinterher! Sie können es mit bloßem Auge sehen:


Führen Sie einen solchen EA auf Ihrem Castum-Chart aus, bitte:

int OnInit(void)
{
        EventSetMillisecondTimer(10);
        return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
        EventKillTimer();
        Comment("");
}

void OnTimer(void)
{
        MqlTick tick;
        SymbolInfoTick( _Symbol, tick );

        Comment( "SymbolInfoInteger( _Symbol, SYMBOL_TIME ) = ", TimeToString( SymbolInfoInteger( _Symbol, SYMBOL_TIME ), TIME_SECONDS ),
                                        "\nSymbolInfoDouble( _Symbol, SYMBOL_BID ) = ", SymbolInfoDouble( _Symbol, SYMBOL_BID ),
                                        "\ntick.time = ", TimeToString( tick.time, TIME_SECONDS ),
                                        "\ntick.bid = ", tick.bid,
                                        "\niClose[0] = ", iClose( _Symbol, PERIOD_CURRENT, 0 ) );
}

(OnTimer kann in OnTick geändert werden, das ändert nichts an der Essenz)

Gibt es bei Ihnen ähnliche Verzögerungen?


 
Andrey Khatimlianskii #:

Lassen Sie bitte einen EA wie diesen auf Ihrem Castaway-Chart laufen:

Haben Sie ähnliche Bremsen?

Bei einem benutzerdefinierten Symbol, das nicht aktualisiert wird und keinen Tick in Market Watch hat, sind keine Bremsen zu spüren.

 
MOZART09 benutzerdefinierte Symbol kopiert. Der Code ist der einfachste.

Ein benutzerdefiniertes Symbol lässt sich nicht mit dem einfachsten Code erstellen. Es ist viel Bastelei im Spiel. Sehen Sie sich das an.

Пользовательские символы: основы применения на практике
Пользовательские символы: основы применения на практике
  • www.mql5.com
Статья посвящена программной генерации пользовательских символов, с помощью которых демонстрируется несколько популярных способов отображения котировок. Предложен вариант малоинвазивной адаптации советников для торговли реальным символом с графика производного пользовательского символа. Исходные коды MQL прилагаются.
 
fxsaber #:

Bei einem benutzerdefinierten Symbol, das nicht aktualisiert wird und keinen Tick in Market Watch hat, spüre ich die Bremsen nicht.

Wahrscheinlich, weil die Bremsen sind genau in der Aktualisierung (oder vielmehr in den Empfang von aktualisierten Informationen durch die EA läuft auf einem solchen Diagramm)?

 
Andrey Khatimlianskii #:

Wahrscheinlich, weil es die Aktualisierung ist (oder eher immer aktualisierte Informationen von einem EA läuft auf einem solchen Diagramm), die Dinge verlangsamt?

Ich verwende keine aktualisierbaren benutzerdefinierten Symbole, daher ist mir dies nicht bekannt.

 

Build 3091, gefangene hängende Zitate (Klick):


Der letzte von SymbolInfoDouble und SymbolInfoTick zurückgegebene Tick ist 04:52:07 (Gebot 61083.19)

Gleichzeitig sind neuere Ticks in der Instrumentenhistorie, Chart und Marketwatch werden aktualisiert, iClose gibt den korrekten Wert zurück.

Es gibt einen Code, mit dem er reproduziert werden kann. Was muss ich noch reparieren?

 

Ich habe eine Korrelation gefunden - nur die Instrumente, bei denen die Charts geöffnet waren (und der EA lief, um sie zu verfolgen), froren ein.

Wenn ich das Chart-Instrument auf ein anderes umstelle (auch Castrum, aber bisher nicht aktiv), ist dort alles in Ordnung. Wenn wir zu einem "eingefrorenen" Instrument zurückkehren oder ein neues Diagramm für dieses Instrument öffnen, befinden sich SymbolInfoDouble und SymbolInfoTick immer noch in demselben eingefrorenen Zustand.