Fragen zu MQL4 - Seite 9

 
Ist es richtig anzunehmen, dass:
1. Die gegenseitige Schließung von Aufträgen erfolgt automatisch ohne Eingreifen des Market Makers?
2. Die Änderung von offenen Aufträgen (wenn die akzeptierten Abstände eingehalten werden) erfolgt automatisch, ohne dass der Market Maker eingreifen muss?
3. Die Löschung und Änderung von schwebenden Aufträgen (wenn die akzeptierten Abstände eingehalten werden) erfolgt automatisch ohne Eingreifen eines Market Makers?
 
Ist es richtig, davon auszugehen, dass:<br / translate="no"> 1. Gegenseitige Auftragsschließungen erfolgen automatisch ohne Eingreifen des Market Makers?
2. Die Änderung von offenen Aufträgen (wenn die akzeptierten Abstände eingehalten werden) erfolgt automatisch, ohne dass der Market Maker eingreifen muss?
3. Die Löschung und Änderung von ausstehenden Aufträgen (wenn die akzeptierten Abstände eingehalten werden) erfolgt automatisch, ohne dass der Market Maker eingreifen muss.

Das ist nicht korrekt. Sie müssen Ihren Broker fragen, wie die Aufträge verarbeitet werden. Die automatische Verarbeitung ist erlaubt, aber sogar auf unserem Demoserver ist die automatische Verarbeitung manchmal deaktiviert und manuelle Bestätigungen werden durchgeführt.
 
Slawa,
vielen Dank für die klare Antwort.

Ist davon auszugehen, dass dies auch für den automatischen TrailingStop-Pull-up gilt?
Gibt es überhaupt Unterschiede für den Market Maker in Bezug auf die Quelle der kontrollierenden Einflussnahme (EA oder MT)?
 
Ja, da der Broker nicht weiß, wer die Stopps verschiebt - der Händler manuell, Experten (oder Skripte) oder das Kundenterminal mit dem Trailing-Stop-Mechanismus.
 
1) Warum erhält der Indikator nach der Neukompilierung in init() Bars==0?

2) Der Zugriff auf die Array-Elemente ist relativ langsam. Kann er nur durch umständliche Konstrukte oder etwas anderes beschleunigt werden?
   static int know; static double caa,cbb,ccc,cdd,cee,cff, cgg; if(b-know!=0){ if(b-know==1){ caa=cbb; cbb=ccc; ccc=cdd; cdd=cee; cee=cff; cff=cgg; cgg=Close[b+6];/*vzad po istorii*/ }else if (b-know==-1){ cgg=cff; cff=cee; cee=cdd; cdd=ccc; ccc=cbb; cbb=caa; caa=Schließen[b]; /*vperjod*/ }else{ caa=Schließen[b]; cbb=Schließen[b+1]; ccc=Schließen[b+2]; cdd=Schließen[b+3]; cee=Schließen[b+4]; cff=Schließen[b+5];cgg=Schließen[b+6];}  know=b; }
 
Slawa,
Nochmals vielen Dank. Das ist mehr als deutlich.

Myxu,
versuchen Sie ArrayCopy() zu verwenden;
 
Slawa, du hilfst mir oft mit wichtigen Details, deshalb werde ich dich persönlich ansprechen.
Wenn in einem Fenster der Expert Advisor und das Skript gleichzeitig arbeiten, geben sie etwa zur gleichen Zeit Aufträge an den Server zur Änderung:
- EA ändert Buy zum Zeitpunkt t_o, Sovet=OrderModify(...)
- Script ändert BuyLimit zum Zeitpunkt t_o +1ms, Script=OrderModify(...)
Weitere Ereignisse:
-Server liefert TRUE bei erfolgreicher Ausführung des Änderungsauftrags (ich weiß nicht welcher),
(welche der Variablen erhält den Wert TRUE - Sovet oder Script ?)
und nach 1ms...
-Server liefert FALSE bei erfolgreicher Ausführung einer Änderung (ich weiß nicht welche) der Bestellung

Frage.
1. Ist es richtig anzunehmen, dass die Anfragen an den Server so konfiguriert sind, dass sie benannt werden und die Antworten des Servers nicht vermischt werden, sondern jede von ihnen an ihre eigene OrderModify() zurückgegeben wird?
2. Wenn nicht, gibt es eine Routinemethode, um zwischen den Serverantworten zu unterscheiden? (abgesehen von der Praxis, einen weiteren Auftrag zu erteilen, nachdem man eine Antwort auf den vorherigen Auftrag erhalten hat)?

(Ich habe einige weitere ähnliche Fragen; wenn nicht entscheidend, bitte beantworten Sie sie in MQL4 Forum, die Frage ist dort dupliziert, und wenn es möglich ist, kann die Diskussion dort gehalten werden, weil es bequemer ist, die Codes dort zu präsentieren).
 
Zitat aus dem neuen Wörterbuch
===
Es gibt nur einen Thread, der in einem Programm-Handelskontext gestartet wird, um Handelsoperationen von Experten und Skripten durchzuführen. Wenn dieser Kontext also durch eine Handelsoperation eines EA belegt ist, kann ein anderer EA oder ein Skript in diesem Moment aufgrund des Fehlers 146 (ERR_TRADE_CONTEXT_BUSY) keine Handelsfunktionen aufrufen. Die Funktion IsTradeAllowed() muss verwendet werden, um die Möglichkeit zur Durchführung von Handelsoperationen zu erkennen. Für die klare Trennung des Zugriffs auf den Handelskontext können Sie die Semaphore auf der Grundlage der globalen Variablen verwenden, deren Wert mit der Funktion GlobalVariableSetOnCondition() geändert werden muss.
===
Es können nicht mehrere EAs (oder ein EA und ein Skript) gleichzeitig gehandelt werden. In der Fehlerverzweigung #6 gibt es ein Beispiel, wie man die Situation mit Hilfe von Semaphore handhaben kann
 
Slawa,
danke für Ihre Antwort. Sehr wichtige Informationen. Einige Dinge sind geklärt.

Aber es gibt noch Fragen.
Ist die Tatsache, dass
Es gibt nur einen Thread für die Ausführung von Trades aus EAs und Skripten
...
um Orders in einem EA oder Skript nach den folgenden Schemata auszuführen:
a=OrderModify(..number1); c=OrderModify(..number2)
;


OrderModify(..number1); OrderModify(..number2);


Ist es richtig anzunehmen, dass:
- im ersten Beispiel wird OrderModify(..number2) erst dann ausgeführt, wenn der Zuweisungsoperator a= nach Erhalt der Serverantwort auf OrderModify(..number1)? ausgeführt wird
- Im zweiten Beispiel wird OrderModify(..number2) sofort ausgeführt, ohne auf die Antwort des Servers auf OrderModify(..number1) zu warten?

 
In beiden Fällen erfolgt der Start der Funktionen sequentiell. Im Gegensatz zu den Triplets sind jetzt alle Funktionen (d.h. vor allem die Handelsfunktionen) synchron.
Grund der Beschwerde: