Skript über Expert Advisor ausführen - Seite 3

 
Dadas:


Gibt es eine Möglichkeit, ein Skript in einer Schleife auszulösen, die von einem Ticker gesteuert wird, z.B. alle 50ms oder so?

Nicht durch MT4-Ticks?


Ich werde versuchen, dies selbst zu beantworten:

Das ist nicht möglich, denn die start()-Funktion wird von den neuen Kursen, d.h. den Ticks des Brokers, ausgeführt.

Selbst wenn Sie also eine Schleife innerhalb der start()-Funktion haben, wird diese nur ausgeführt, wenn ein neuer Tick eintrifft.

Deshalb können Sie nicht gegen den Broker gewinnen!

Als ich jedoch meinen EA als Skript wie dieses laufen ließ:

int start() {

while(1==1) {

MyEA();

}
}

mein Computer fing an zu hinken, wegen dieser Schleife.

Ich habe das am Sonntag versucht, also war der Markt geschlossen.

 
Dadas:


Ein EA könnte also als Skript laufen? In einer Schleife?

Nur, wenn in einer Endlosschleife, wird der Computer schließlich abstürzen.

Gibt es eine Möglichkeit, ein Skript in einer Schleife auszulösen, die von einem Ticker gesteuert wird, z.B. alle 50ms oder so?

Nicht durch MT4-Ticks?


Ein Skript wird einmal ausgeführt, es sei denn, Sie fügen eine endliche/unendliche Schleife in seine start() -Funktion ein. Wenn Sie das Skript mit Ihrem eigenen generierten Tick auslösen möchten, machen Sie einen EA daraus und setzen Sie ihn auf einen Offline-Chart.
 
Dadas:


Obwohl, wenn ich meinen EA als Skript wie dieses laufen ließ:

mein Computer begann wegen dieser Schleife zu verzögern.


Ihr Computer muss aufgerüstet ... oder ersetzt werden.
 
RaptorUK:

Ihr Computer muss aufgerüstet ... oder ersetzt werden.

Das ist ganz richtig! Es ist ein alter Computer.
 
RaptorUK:

Ein Skript wird einmal ausgeführt, es sei denn, Sie fügen eine endliche/unendliche Schleife in seine start()-Funktion ein. Wenn Sie das Skript mit Ihrem eigenen generierten Tick auslösen wollen, machen Sie einen EA daraus und setzen Sie ihn auf einen Offline-Chart.

Ich kann nicht auf einem Offline-Chart handeln.
 
Dadas:

Ich kann nicht mit einem Offline-Chart handeln.
Warum nicht?
 

Dadas 2012.08.12 16:34
Dadas:


Gibt es eine Möglichkeit, ein Skript in einer Schleife auszulösen, die von einem Ticker gesteuert wird, z.B. alle 50ms oder so etwas?

Nicht durch MT4 Ticks?


Ich werde versuchen, dies selbst zu beantworten:

Das ist nicht möglich, denn die start()-Funktion wird von den neuen Kursen ausgeführt, d.h. den Ticks des Brokers.

Selbst wenn Sie also eine Schleife innerhalb der start()-Funktion haben, wird diese nur ausgeführt, wenn ein neuer Tick eintrifft.

Deshalb können Sie nicht gegen den Broker gewinnen!

Als ich jedoch meinen EA als Skript wie dieses laufen ließ:

int start() {

while(1==1) {

MyEA();

}
}

mein Computer fing an zu hinken, wegen dieser Schleife.

Ich habe das am Sonntag ausprobiert, also war der Markt geschlossen.

Hallo Dadas,

das Skript wird ohne Tick ausgeführt, der EA wird mit einem Tick ausgeführt.

Wenn Sie eine Endlosschleife verwenden, fügen Sie ein Sleep () hinzu(https://docs.mql4.com/common/Sleep)

Probieren Sie diesen Code unten als Skript aus, schalten Sie die Internetverbindung aus, öffnen Sie den Taskmanager und hängen Sie das Skript an den Chart an. Das Skript wird in einer Endlosschleife laufen, ohne dass ein Tick erforderlich ist und ohne dass der Prozessor zu stark beansprucht wird.

  int n;
  while (IsStopped() == false) // or while (true)
    {
    n++;
    Alert (n);
    
    Sleep (500); // add this !
    }

 
.
 
RaptorUK:
Warum nicht?


Klären Sie mich bitte auf!

Wie kann ich Echtzeit-Live-Handel auf einem Offline-Chart betreiben?

 
onewithzachy:

Hallo Dadas,

das Skript wird ohne Tick ausgeführt, der EA wird mit einem Tick ausgeführt.

Wenn Sie eine Endlosschleife verwenden, fügen Sie ein Sleep () hinzu(https://docs.mql4.com/common/Sleep)

Probieren Sie diesen Code unten als Skript aus, schalten Sie die Internetverbindung aus, öffnen Sie den Taskmanager und hängen Sie das Skript an den Chart an. Das Skript wird in einer Endlosschleife laufen, ohne dass ein Tick benötigt wird und ohne dass der Prozessor zu stark belastet wird.


Herzlichen Dank!

Es ist so einfach, ich hätte selbst darauf kommen müssen...

Ich bin müde, quess....... Wie mein alter Computer - LOL!

Obwohl, wissen Sie, ich habe an etwas ganz anderes gedacht.

Ich denke darüber nach, wie man das Ticken im MT4-Live-Trading außer Kraft setzen kann!

Der Punkt ist, dass beim Live-Trading die Ticks den EA kontrollieren und somit auch den Broker.

Mit anderen Worten, wenn ich möchte, dass mein EA die Order unter einer bestimmten Bedingung schließt, möchte ich, dass mein EA genau das tut, definitiv, nicht vielleicht.

Abgesehen von den Requotes (gegen die ich nichts weiter tun kann, als den Broker zu wechseln), passiert es zu oft, dass ich auf meinem Chart sehe

dass mein Auftrag eigentlich geschlossen werden sollte, aber er bleibt bis zum nächsten Tick hängen, und dann verliert er.

Wenn ich in meinem EA schreibe:

if(AccountProfit()>0) { CloseAllOrders(); }

dann möchte ich, dass er mit 1 Pip Gewinn oder mehr schließt. Ich erwarte nicht, dass er auf dem 1 Pip hängen bleibt und nichts tut!

BTW, ich bin mit festen Spread von 1 Pip auf EURUSD Handel.

Ich brauche also nicht das Offensichtliche, und Sleep() ist auch keine Lösung, außer für Offline-Rückwärtstests.

Übrigens ist jedes Backward-Testing für nichts gut - es ist kein Echtzeit-Testing.

Nun, es ist gut für einige Beobachtungen und das Studieren von Charts, um eine Menge zu lernen!

Aber im Echtzeithandel kennen Sie die Zukunft nicht und werden Fehler machen - es sei denn, Sie vertrauen Ihrem EA wirklich!

Vertrauen Sie ihm mehr als dem, was Sie in den Charts sehen! - Das ist der schwierigste Teil!

Also, Leute, bitte lest meine Beiträge mit Verständnis!