[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 417

 
okvseok:


also zum Beispiel nicht das Mausrad (Taste) 3 Minuten lang nach links oder rechts drehen))), sondern einfach ein bestimmtes Taktdatum oder etwas anderes eingeben.

Vielen Dank für Ihre Antwort!


Drücken Sie die Leertaste und geben Sie das gewünschte Datum ein.

Die Antwort ist ebenso richtig wie nutzlos. Das ist für die Frage absolut relevant.

 
TarasBY:
In der linken unteren Ecke des Diagramms (wo sich das Datum befindet) doppelklicken Sie und geben in dem sich öffnenden Fenster das gewünschte Datum im Format TT.MM.JJJJ ein - ist das "nicht handschriftlich" genug?
Ja, vielen Dank. Okay.
 
Run:

oder mit anderen Worten
soll das Skript ungefähr n Zeilen schreiben, aber es schreibt nur eine

Zunächst sollten Sie das Öffnen und Schließen der Datei aus der Schleife herausnehmen.
 

Danke, es funktioniert.

  handle=FileOpen("AUDJPY.csv", FILE_READ|FILE_WRITE, '\t');
  for (int i=NumberOfCandels; i>0; i--) {
    arrowbuy = iCustom(NULL, 0, "xxx", 0, i);
    arrowsell = iCustom(NULL, 0, "xxx", 1, i);
    if(arrowbuy != EMPTY_VALUE && arrowsell == EMPTY_VALUE) {
      if(handle>0) {
        FileWrite(handle, TimeToStr(Time[i], TIME_DATE|TIME_MINUTES), " Buy");
        }
      }
    if(arrowsell != EMPTY_VALUE && arrowbuy == EMPTY_VALUE) {
      if(handle>0) {
        FileWrite(handle, TimeToStr(Time[i], TIME_DATE|TIME_MINUTES), " Sell");
        }
      }
  }
  FileClose(handle);
 
okvseok:


Also, zum Beispiel nicht das Mausrad (Taste) 3 Minuten nach links oder rechts drehen))), sondern einfach ein bestimmtes Taktdatum oder etwas anderes eingeben.

Vielen Dank für die Antwort!

Es gibt eine Funktion

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Suche nach einer Bar nach Zeit. Die Funktion gibt den Offset des Taktes zurück, zu dem die angegebene Zeit gehört. Gibt es für die angegebene Zeit keinen Balken ("Loch" in der Historie), gibt die Funktion, je nach genauem Parameter, -1 oder den Offset des nächstgelegenen Balkens zurück.
Parameter:
Symbol - Symbolname des Instruments. NULL bedeutet aktuelles Symbol.
Zeitrahmen - Zeitraum. Kann einer der Zeitrahmen eines Diagramms sein. 0 bedeutet die Periode des aktuellen Diagramms.
Zeit - Zeitwert für die Suche.
genau - Rückgabewert, wenn kein Balken gefunden wird. FALSE - iBarShift gibt den nächsten Wert zurück. TRUE - iBarShift liefert -1.
Beispiel:
 datetime some_time=D'2004.03.21 12:00'; int shift=iBarShift("EUROUSD",PERIOD_M1,some_time); Print("shift of bar with open time ",TimeToStr(some_time)," is ",shift);

 
Chiripaha:

: )))))))) (keine Notation... und kein Kommentar)

Von den beiden, dem Fragesteller und dem Antwortenden, ist es wahrscheinlicher, dass Sie, der Fragesteller, nicht ganz verstehen, was mit den schwebenden Aufträgen passiert, wenn sie ausgelöst werden. Ein schwebender Auftrag wird zu JEDEM Preis ausgeführt, der ihm am nächsten liegt. Die Faustregel für einen schwebenden Auftrag lautet: Wenn der Kurs diesen Wert erreicht hat, wird der Handel in den Markt aufgenommen. Und der Preis wird keine Rolle spielen. Dies gilt auch für Stop Losses, da es sich dabei ebenfalls um schwebende Aufträge handelt, die lediglich die entgegengesetzte Position zum eigentlichen Handel einnehmen. Dies unterscheidet sich etwas von den Geschäften an der Börse. Vielleicht ist das der Grund, warum Sie verwirrt sind.

In diesem Sinne hängt viel von der Qualität des Maklers ab. Damit meinen wir sowohl die Vorschriften für die Ausführung von Geschäften als auch die Verfügbarkeit von Liquidität bei diesem Broker und vielleicht eine Reihe anderer Merkmale: vermutlich Ehrlichkeit usw... Wenn Sie den Vertrag mit fast jedem Forex-Broker (DC) lesen, stellt sich heraus, dass Ihr Geschäft (und das jedes anderen Händlers) zu jedem beliebigen Preis dieses "Brokers" abgeschlossen werden kann und dass es im Rahmen des Gesetzes und der Vorschriften liegt, weil Sie es unterzeichnet haben. - Aber das sind andere Themen. Das hat nichts mit Programmierung zu tun.


Wenn Sie einen Roboter auf der Demo haben, wird dort normalerweise alles richtig geöffnet, um Leute anzulocken. Und ich wiederhole noch einmal, die manuell geöffneten Aufträge wurden an dem Ort geöffnet, an dem sie eingestellt wurden!
 
Ekburg:

Was den Forex-Broker betrifft, so habe ich kein klares Bild, aber ich habe mit der Demo gehandelt. Und ich wiederhole noch einmal, dass die manuell eröffneten Aufträge genau dort geöffnet wurden, wo sie eingestellt waren!

Fazit: Natürlich könnte man Sie interessehalber bitten, die Bedingungen genauer zu beschreiben, da Sie nur eine allgemeine Beschreibung geliefert haben: Wann wurden die Roboteraufträge erteilt (im Voraus oder nicht; manuell etwa zur gleichen Zeit wie der Roboter oder nicht usw.). Aber auch in diesem Fall müssen Sie sich nur mit Ihrem Broker auseinandersetzen, denn er hat seinen eigenen Thread, der wahrscheinlich die Trades in die Warteschlange stellt. Angenommen, der manuelle schwebende Auftrag wurde zuerst platziert, dann wird der Zeitpunkt seiner Ausführung anders sein (einschließlich der Warteschlange anderer Kunden), so dass der Preis anders sein kann. Wenn der Roboter die Aufträge innerhalb des Zeitraums der gebildeten Signale platziert hat, ist die Ankunft der Aufträge in der Warteschlange nicht offensichtlich - daher die mögliche Verzerrung des Ausführungskurses. Außerdem kann es von der Größe der Positionen abhängen, über die Sie nichts schreiben... usw...

Aber... Trotzdem kann dies nur mit einem Makler (DC) geklärt werden. Und ich nehme an, er wird eine Reihe von Gründen finden, die ich nicht erwähnt habe. - Und der Rat war richtig: Loggen Sie sich in die Hände und zum Broker, wenn Sie natürlich immer noch glauben, dass sich Ihre schwebenden Aufträge bewegt haben. Verwechseln Sie aber nicht 2 verschiedene Konzepte: eine schwebende Order und ein Geschäft mit dieser schwebenden Order. Der Limit-Auftrag ist eine Anweisung zum Einstieg in den Markt zu einem beliebigen nächstgelegenen Kurs mit angegebenem Volumen. Und der Deal - ist der Preis, zu dem es möglich war, Ihren Auftrag für das angegebene Geldvolumen (Lot) auszuführen. - Und die Preise für diese Aufträge sind wahrscheinlich unterschiedlich (insbesondere auf dem Schnellmarkt, zu dem Sie den Link erhalten haben). Im Falle eines Limit-Auftrags sind der Preis des Auftrags und der Preis der Ausführung per Definition gleich.

Und die Tatsache, dass sich die Demo und die realen Aufträge des Brokers nicht unterscheiden, ist gut! - Dies zeigt, dass der Makler keine Geschäfte vortäuscht, um Kunden anzulocken (wie Sie sagen). - In diesem Fall ist keine Diskrepanz zu erkennen.

 
Zhunko:

1. Wie haben Sie angefangen? Sie müssen es zunächst ohne Aktualisierung ausführen. D.h. IsRefreshRates = false. Die Daten werden nicht aktualisiert.

2. Dann müssen Sie es mit IsRefreshRates = true ausführen. Die Daten werden aktualisiert.

Hier ist ein Bildschirmfoto 1: Bildschirmfoto 2:

Beachten Sie die Taktzeiten. Sie können auch sehen, dass MarketInfo() Daten aus der Marktübersicht übernimmt.

Hier ist der Expert Advisor. Ich habe es ein wenig korrigiert. Der Name des Instruments wurde abgehakt.


1. Ich habe ein Terminal benutzt, egal wie, mit oder ohne Update, der Bildschirm ist der gleiche! Ich habe das Terminal zusammen mit Skripten für den Test mit 99% der Zitate von Dookie heruntergeladen. Ich habe sie eingegossen, da sie aufgrund der Übergröße nicht befestigt werden können. Hier ist der Link:http://www.load.to/PqWVW2JQ75/Тиковые_котировки_для_тестера_MT4_от_DukasCopy.zip

2 ) In jedem anderen Terminal ist die Situation bereits anders. Hier auf Oanda zum Beispiel:

2.1 Ursprünglich im Fall:

IsRefreshRates = false

Also:

2.2 Weiter im Fall:

IsRefreshRates = true

wie diese.

Wie Sie im ersten Modus sehen können, sind die Preise weit von dem AUDNZD-Paar entfernt... und im zweiten Modus sind die Preise genau so, wie wir sie sehen wollen...

Es stellt sich heraus, dass RefreshRates() immer noch Anführungszeichen vom Server "abruft". Die Stütze ist eingeschlafen, so dass diese Variante näher ist als die ursprüngliche Variante.

 
Zhunko:
RefreshRates() aktualisiert nur das, womit der Experte gerade arbeitet. So findet sie es heraus. Vom Experten. Vor langer Zeit schrieb jemand von Metakvot darüber.


Vadim, ich bezweifle, dass RefreshRates() weiß, welche Tools der Expert Advisor benötigt. Nicht alle Expert Advisors haben einen in globalen Parametern definierten Werkzeugnamen, oder? Na ja... Wenn ja, stellt sich die Frage, auf welcher GrundlageRefreshRates() weiß, welche Marktdaten des Tools aktualisiert werden müssen und welche nicht?
 
Integer:

Junko, Seite 409, ganz unten im Beitrag - da steht, warum die Daten aktualisiert werden. Denn iOpen() und iClose() werden aufgerufen, und das lässt sich anhand von RefreshRates() nachweisen. Beim ersten Mal wurde das Skript ohne RefreshRates() ausgeführt, aber die Funktionen iOpen() und iClose() wurden aufgerufen, woraus das Terminal die Daten lädt. Beim zweiten Durchlauf waren die Daten bereits vorhanden, und wir wissen, dass der Null-Balken zuerst geladen wird, so dass der Eindruck entsteht, dass die Daten vollständig geladen sind, aber vielleicht sind sie nicht vollständig geladen, sondern in Bearbeitung.

...Und doch beweisen Sie, dass Sie das Laden der Daten durchschaut haben.... von welchen Streams und Synchronisationen kann hier die Rede sein...


Warum sollteiOpen() Daten vom Server abrufen? In der Dokumentation steht, dass es einen Wert zurückgibt... Es handelt sich also um eine Rückgabe, nicht um ein Herunterladen.
Grund der Beschwerde: