Wie kann ich aus der Ferne auf den Truthahn zugreifen? - Seite 5

 
sergeev >>:

и не должно наблюдаться.

дело в том, что эксперт вообще не сможет ходить чаще чем в 1 секунду за информацией. Так уж работают связки МT4 <-> wininet.dll<-> сервер.

Ну будет клиент долбить сервак запросами через каждую секунду. Ну и что? на то он и сервак, чтоб любой груз выдерживать. Представте как гуглы долбятся или вконтакте.

Я тестировал для проверки на 20 машинах + на каждой запущено по 3 терминала в этих связках запрос-ответ причем запросы при прогоне из тестера!

И вполне здорово себя чувствовали все участники эксперимента (и провайдер тоже :). Единственное, что медленно тест происходит. Тик обрабатывается раз в секунду. Но и это не такая большая проблема.

Поэтому такие системы (в которых некий блок кода вынесен в интернет) вполне рабочие.


Und damit der Test in einer solchen Kombination richtig funktioniert, speichere ich die Daten einfach in eine separate Datei mit einem Zeitstempel im Dateinamen. Nach dem ersten Durchlauf stapelt der Prüfer daher alle Daten im Verzeichnis. Der zweite Lauf geht sogar noch schneller, als wenn die Daten in der Datenbank auf dem lokalen Rechner wären. Allerdings kann es sich dabei um recht viele Dateien handeln.

 
sol >>:

А чтобы тест нормально отрабатывался в такой связке, я данные просто сбрасываю в отдельный файл с timestamp в названии файла. В итоге после первого прогона тестер складывает все данные в директории. Второй прогон уже летит даже быстрее чем если бы эти данные были в базе данных на локальной машине. Правда файлов может оказаться довольно много.

im Prinzip als Option... Es ist nur ein Zwischending zwischen dem Aufnehmen aller Daten auf einmal oder ein bisschen auf einmal, aber oft.

Dabei gilt: Je genauer die Aufgabenstellung, desto größer die Chance, sie im Hinblick auf die Geschwindigkeit zu optimieren.

 
sergeev писал(а) >>
z.B. für eine Indikatorzeile 250000 Balken*8 Bytes (Balkenzeit) + 8 Bytes (Zeilenwert) ~ 4 mb an Informationen.

1. Zeit ist nicht für alle Indikatoren erforderlich.
2. Zitate können komprimiert werden. Zeit kann auch komprimiert werden)))
3. Es ist nicht notwendig, jedes Mal alle Angebote zu übermitteln. Es gibt eine wirtschaftlichere Variante. Während der Initialisierung meldet sich der Indikator beim Server an und überträgt eine große Menge an Daten. Der Server gibt ein Handle zurück, das mit dem empfangenen Datensatz und dem Client, der diese Daten empfangen hat, verbunden ist. Während der Indikator in Betrieb ist, sendet er regelmäßig Informationen über den Null-Balken, um den aktuellen Messwert zu korrigieren. Wenn der Balken geschlossen wird, sollte der Indikator die letzten Informationen über den Balken an den Server senden, der den Wert für den geschlossenen Balken zurückgibt. Wenn die Verbindung deinitialisiert/unterbrochen wird, gibt der Server das zugewiesene Handle frei und zerstört den Datensatz (oder auch nicht, wie man will).
4. Darüber hinaus kann der Indikator die empfangenen Werte des Indikators auf der Client-Seite zwischenspeichern (sie können zusammen mit dem komprimierten Datenblock, nach dem sie berechnet werden, gespeichert werden).
UPD: Sie können den Indikator nicht auf allen Ticks neu berechnen, da die Ticks sehr oft im Fluss von +1 -1 -1 +1 -1 -1 sind - Sie müssen den Indikator wirklich nur 2 Mal berechnen.

 
lea >>:

1. Время нужно не для всех индикаторов.

Ja, aber jetzt geht es um einen allgemeinen Fall.

2. Zitate können komprimiert werden. Zeit kann auch komprimiert werden)))

Bringen Sie mich auf eine Idee.

3. Es ist nicht notwendig, jedes Mal alle Angebote zu übermitteln. Es gibt eine wirtschaftlichere Variante. Während der Initialisierung meldet sich der Indikator beim Server an und überträgt eine große Menge an Daten. Der Server gibt ein Handle zurück, das mit dem empfangenen Datensatz und dem Client, der diese Daten empfangen hat, verbunden ist. Während der Indikator in Betrieb ist, sendet er regelmäßig Informationen über den Null-Balken, um den aktuellen Messwert zu korrigieren. Wenn der Balken geschlossen wird, sollte der Indikator die letzten Informationen über den Balken an den Server senden, der den Wert für den geschlossenen Balken zurückgibt. Wenn die Verbindung deinitialisiert/unterbrochen wird, gibt der Server das zugewiesene Handle frei und zerstört den Datensatz (oder auch nicht, wie man will).

Dies ist ein wenig unklar, wie es die Übertragung von Daten über die induzierte Leitung beschleunigen kann.

4. Darüber hinaus kann der Indikator die empfangenen Indikatorwerte auf der Client-Seite zwischenspeichern (sie können zusammen mit dem komprimierten Datenblock, nach dem sie berechnet werden, gespeichert werden).
ähnlich wie es bereits in MT - IndicatorCounted() - implementiert ist. Ich würde meine eigene ähnliche Funktion für solche Zwecke vorschreiben.
UPD: Sie müssen den Indikator nicht für alle Ticks neu berechnen, da die Ticks sehr oft im Fluss von +1 -1 -1 -1 -1 -1 sind - tatsächlich müssen Sie den Indikator nur 2 Mal berechnen.

Mit anderen Worten: Wir haben jetzt begonnen, ein Problem für Induktoren zu lösen. Synchronisieren und Übertragen von Verlaufsbalken :)
Vielleicht sollten wir ihnen vorschlagen, einen solchen Dienst für uns einzurichten!
Das ist eine interessante Idee: Lassen Sie den Server ein Instrument mit gleichem Eröffnungs-/Schluss-/Hoch-/Lochkurs speichern. Und auch die Lautstärke. Sie wird, wie alle Währungen, nach den allgemeinen Regeln heruntergeladen und synchronisiert. Sie kann dann als eine Reihe von Induktoren verwendet werden.

Es kann sich lohnen, in der technischen Dokumentation der Taktsynchronisation in diese Richtung zu gehen.

 
gibt es auch eine ziemlich verdrehte Lösung:
1) Machen Sie einen Screenshot des Diagramms mit dem Indikator
2) Laden Sie die Screenshot-Datei auf Ihren HTTP-Server hoch
3) Die Benutzer melden sich mit ihrem Login/Passwort an und sehen sich das Bild an.
Dies ist jedoch nur dann sinnvoll, wenn Sie sich den Indikator nur ansehen wollen. :(
 
lea писал(а) >>
3. Es ist nicht notwendig, jedes Mal alle Angebote zu übermitteln. Es gibt eine wirtschaftlichere Variante. Während der Initialisierung meldet sich der Indikator beim Server an und überträgt eine große Menge an Daten. Der Server gibt ein Handle zurück, das mit dem empfangenen Datensatz und dem Client, der diese Daten gesendet hat, verbunden ist. Während der Indikator in Betrieb ist, sendet er regelmäßig Informationen über den Null-Balken, um den aktuellen Messwert zu korrigieren. Wenn der Balken geschlossen wird, sollte der Indikator die letzten Informationen über den Balken an den Server senden, der den Wert für den geschlossenen Balken zurückgibt. Bei Deinitialisierung/Beendigung der Verbindung gibt der Server den zugewiesenen Handle frei und zerstört den Datensatz (oder auch nicht, je nachdem, was Sie bevorzugen).

Ekelhafte Variante - beim Starten verlangsamt sich das ganze System mit dem Terminal oder man muss sehr lange warten, bis es geladen ist (einige Systeme verwenden immer noch langsame Kanäle, zum Beispiel Mottenkugeln). Es ist viel besser, die Informationen in kleinen Stücken herunterzuladen und den Verlauf auf dem Rechner des Nutzers zu speichern, so dass nur frische Informationen an den Verkehr gesendet werden, wie es in den neuesten Versionen der Fall ist: http: //xrust.land.ru/download/

 

Подкиньте идейку


Das erste Element der Reihe wird explizit gespeichert. Dann differenzieren wir die Reihe und verwenden die Entropiekodierung.


Ekelerregende Variante

Dies ist nur das Grundprinzip. Die Informationen können auf verschiedene Weise geladen und übertragen werden. Ich spreche nicht vom asynchronen Laden im Hintergrund bei der Implementierung einer DLL.
 

Selbst im Falle von DLL ist es wünschenswert, die Informationen in Stücken zu geben, so dass der Verbraucher nicht warten muss ("WARUM?"), und das ist letztendlich auch gut so :)

 
xrust писал(а) >>

Sogar im Fall von DLL ist es wünschenswert, die Informationen in Stücken zu geben, damit der Verbraucher nicht lange warten muss ("Warum?"), und es ist am Ende schön :)


Asynchrones Laden im Hintergrund, wie ich es verstehe, bedeutet.
 

Das ist genau mein Punkt...

Grund der Beschwerde: