Wie programmiert man? - Seite 263

 

Ist es möglich, eine Linie nach oben und unten zu ziehen ...?

Hallo,

Ist es möglich, eine Level-Linie (oder eine "effektive" Level-Linie) in einem separaten Indikator-Fenster manuell zu verschieben (d.h. zu "ziehen") und den neuen Einstellungswert in einem EA zu aktualisieren, der diese zum Einleiten und Beenden eines Handels verwendet?

Ich habe gelesen, dass es Drag'n'Drop-Skripte gibt, mit denen man eine Linie verschieben kann, aber ich weiß nicht, ob es möglich ist, ein solches Skript in einen EA einzubauen bzw. einzubinden.

 
 
yourspace:
Hallo

vielleicht ist es richtig, können Sie es versuchen.

double upper_red = iCustom(NULL,0, "DDM",Nmbr_Bars,Order,Ecart,3,0);

Ändert zwar nichts, aber Tanks für Reaktion sowieso.

Vielleicht kennt jemand einen ähnlich aussehenden Indikator?

edit: Ich habe es gelöst, der Indikator " i-Regr H&L" ist fast das gleiche, dieser zeichnet normal.

 

Zitat-Sparer

Hallo!

ich möchte die aktuellen Tickdaten in eine csv-Datei speichern. Jede Woche oder jeden Monat möchte ich eine csv-Datei speichern.

Also öffne ich in meiner Init-Funktion eine neue Datei und führe bei jedem Tick ein

FileWrite(handle_tick,TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES|TIME_SECONDS),Bid,Ask);

Jetzt habe ich ein paar Probleme/Fragen:

1.

Wenn es ein Problem mit dem Schreiben in die Datei gibt, stoppt die Ea für das ganze (Woche/Monat) und kann sie nicht wieder öffnen.

-Muss ich FileOpen(...) jeden Tick schreiben? Oder sollte ich FileFlush(..) verwenden?

2.

Es gab auch ein Problem mit der gespeicherten Zeit. Wenn ich sie mit der Chart-Zeit oder der Zeit aus dem History Center verglich, gab es einen großen Unterschied (nicht statisch, manchmal z.B. 39Minuten oder 87Minuten).

Muss ich die CurTime speichern oder welche Zeit?

3.

Meine Internetverbindung wird immer wieder unterbrochen (z.B. 2-5 Minuten, etwa 3 Mal am Tag).

Wie kann ich meine gespeicherten Kurse automatisch überprüfen, so dass der Ea die fehlenden Minutendaten aus der Historie holt?

Und wie kann ich meine Tickdaten bekommen, wenn die Internetverbindung unterbrochen wurde? Gibt es auch ein History Center oder einen Puffer für die letzten Stunden?

4.

Kennt jemand eine einfache Möglichkeit, die einzelnen csv-Dateien automatisch zu kombinieren?

5.

Ich möchte auch Tick- und Minutendaten von cfd's wie Ger30 speichern! Wenn ich die .csv-Datei monatlich speichere, aber der neue Vertrag, der alle 3 Monate kommt, ändert sich während des Monats. Dann kann der EA die Daten nicht finden, weil das aktuelle Underlying (Kontrakt "Juli" ist nicht mehr gültig, sondern jetzt z.B. der September-Kontrakt) nicht mehr funktioniert.

Gibt es vielleicht schon einen zuverlässigen EA für dieses Problem?

 

Nach jedem FileWrite sollten Sie einen File Flush durchführen, um sicherzustellen, dass die Daten nach jedem Schreibvorgang auf die Festplatte geschrieben werden. Wenn der Flush nicht verwendet wird, speichert das Dateisystem die Schreibvorgänge in einem Speicherpuffer und schreibt dann alle Datensätze im Puffer auf die Festplatte, um die Effizienz zu erhöhen. Dies kann der Grund für den Verlust von Datensätzen sein; die EA hält an und Sie verlieren die Speicherdatensätze. Beim File Flush wird jeder Datensatz auf die Festplatte geschrieben, was zwar langsamer ist, aber sicherstellt, dass Sie alle Datensätze haben. Mit File Flush können Sie die Datei mit Excel öffnen, während der EA läuft, und sie im Nur-Lese-Modus untersuchen.

Prüfen Sie in der Deinit-Funktion, ob Ihr Dateihandle > 0 ist, und schließen Sie dann die Datei.

Dadurch wird der Speicherpuffer automatisch geleert.

Beim Öffnen haben Sie die Möglichkeit, entweder eine neue Datei auf der Festplatte zu erstellen oder an eine bestehende Datei anzuhängen. Es klingt, als ob Sie die Methode "Anhängen an eine bestehende Datei" verwenden sollten. Dadurch wird die Zusammenführung der Dateien automatisch gelöst. Sie können jede CSV-Datei in einer separaten Instanz von Excel öffnen und ausschneiden und einfügen, Sie können auch Notepad verwenden. In Excel können Sie die zusammengeführte Datei als CSV-Datei speichern oder Excel als Datenbank verwenden, um die zusammengeführten Informationen in einem XLSX-Format zu speichern. Oder Sie können sich VB Express von MS besorgen, das kostenlos ist, VB lernen und eine Dateizusammenführung in dieser Sprache schreiben.

Die beste Möglichkeit ist, nach anderen Beispielen für das Speichern von Zecken zu suchen.

Vielen Dank

 

Ich habe noch eine weitere Frage:

6.

Ist es sinnvoll, das Bid, Ask und das Volumen in meiner Tick-Datei zu speichern?

7.

Hat jemand eine Anleitung, wie man Tickdaten mit Metatrader 4 oder/und 5 backtesten kann?

Gibt es da draußen einen Experten, der mir helfen könnte?! Sie können auch per Privatnachricht antworten...

danke!

julia

 

Und was ist mit CFDs? Die ändern den Kontrakt alle drei Monate! Wie kann ich das in meiner tick-saver.mq4 so programmieren, dass der Wechsel des Basiswerts automatisch erfolgt und ich keine Ticks verliere?

 

Hallo zusammen, ich brauche Hilfe bei der Verwendung von 1 EA auf mehreren Charts!!!

Zusammenfassung meiner Frage:

Ich habe einen EA, der jeweils nur 1 Order platziert, indem er die Variable total = OrdersTotal() verwendet. Eine neue Order wird nur geöffnet, wenn diese 1 Order geschlossen wird.

Wie kann ich ihn so modifizieren, dass zwei verschiedene Währungspaare jeweils 1 offenen Auftrag haben können, ohne dass das gleiche Währungspaar 2 offene Aufträge hat?

Was ich brauche, sind Codezeilen, die mir dies ermöglichen:

1 Order platzieren (z.B. mit der magischen Nummer 12345), wenn nicht bereits eine Order mit dieser magischen Nummer offen ist.

oder 1 Order zu platzieren, wenn nicht bereits eine Order mit demselben Order-Symbol offen ist.

--------------------------

längere Version meines Problems:

Ich habe kürzlich einen einfachen EA modifiziert, der darauf basiert, Aufträge zu platzieren, wenn sich die 10 und 5 SMA-Linien kreuzen.

Es funktioniert gut mit meinem EURUSD-Chart und es platziert jeweils nur eine Order, entweder Kauf oder Verkauf, weil ich diese Codezeilen habe:

total = OrdersTotal();

if(gesamt < 1)

--dann wird eine Order platziert

Als ich ein EA-Duplikat erstellte und es auf den EURJPY-Chart anwandte, musste ich den Code jedoch ändern in

total = OrdersTotal();

if(gesamt < 2)

-, damit er eine Order platziert, wenn bereits eine Order im EURUSD-Chart eröffnet wurde.

Das Problem ist, dass, wenn die EURUSD-Order geschlossen wird, eine zweite EURJPY-Order geöffnet werden kann und der EURUSD-EA keine neue Order platziert, da bereits eine EURJPY-Order geöffnet ist.

Ich gebe den verschiedenen Paaren separate magische Zahlen. Ich hatte eine Order auf meinem EURUSD-Chart mit der magischen Nummer 22341 eröffnet und habe versucht, eine neue Variable für meinen EURJPY-Chart zu verwenden:

tott = OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber() == 22341) //22341 ist die magische Zahl für EURUSD-Aufträge

total = OrdersTotal();

if(gesamt < 2 && tott == true)

--dann wird eine Order für EURJPY platziert

aber es wird kompliziert, die EAs alleine laufen zu lassen... besonders wenn ich ein drittes Währungspaar USDJPY hinzufüge, auf dem mein EA laufen soll.

Ich bin für jede Hilfe dankbar!!

edit:

Ich habe beschlossen, mit magischen Zahlen zu arbeiten:

total= 0;

for(int i=0;i<OrdersTotal(); i++ )

{

if(OrderSelect(i, SELECT_BY_POS)==true)

{

if(BestellMagischeZahl()==12341)

gesamt++;

}

}

{

if(gesamt < 1)

--dann wird ein Handel getätigt

 

Backtesting von Tickdaten

Sunshineh,

"7. Hat jemand eine Anleitung, wie man Tickdaten mit Metatrader 4 oder/und 5 backtestet?"

Ein altes Build - ich glaube es war 208 - war das letzte, das Tickdaten verarbeiten konnte. Es wurde irgendwo gepostet, suchen Sie zuerst TSD.

Wenn du das alles gelöst bekommst, würde ich es auch gerne benutzen. Ich kenne auch einen Thread, in dem dieses Problem akzeptabel gelöst wurde, auch wenn er vielleicht nicht auf TSD zu finden ist.

Großes Be

 

Wie kann man den EA dazu bringen, zu erkennen, dass der vorherige Balken über dem BB geschlossen hat?

Hallo zusammen,

Ich versuche, den EA zu erhalten, um aufzuzeichnen, wenn eine Bar außerhalb der bollingerbands schließt, dann initiieren Sie einen Handel, wenn dies in der vorherigen Bar passiert

und die ema's Kreuz oder etwas. Mein Code sieht bisher wie folgt aus:

int bar, sll;

if( Close[0] > bollingerband ){

bar = Bars;}

if( bar+1 == Bars){

if(ema1>ema2){

sll = 1}

wenn ( bar+2 == Bars ){

bar = 0;}

Leider scheint das nicht zu funktionieren, und ich habe auch versucht, es zu einer statischen und einer globalen Variablen zu machen. Ich wäre also sehr dankbar, wenn mir jemand die richtige Richtung weisen könnte.

Vielen Dank!

Sapere

Grund der Beschwerde: