Wie eröffne ich einen Marktauftrag richtig? - Seite 8

 
Dmitry Fedoseev:
Sie sind nicht derjenige, der eine Pause braucht.
Das war's schon.
 
Wie dem auch sei, unterm Strich bleibt folgendes festzuhalten.

Weltweit gibt es 2 Möglichkeiten:

1) Analyse des Umfelds (Einsicht in die Historie der Transaktionen, Überprüfung der offenen Position oder des Positionsvolumens);

2) Analyse der Transaktionen.

Die erste funktioniert langsamer. Aber sie ist zuverlässiger. Wir brauchen einen Kompromiss. Vielleicht müssen wir uns die Strategie ansehen und uns auf sie verlassen.

Ja, FORTS hat einen vollwertigen Ticker, also sollte man nicht mit Ticks, sondern mit dem BookEvent-Ereignis arbeiten.

Es ist merkwürdig, dass Wassili Sokolow sich nicht zu diesem Thema geäußert hat. Seine Sichtweise ist interessant...
 
Dennis Kirichenko:
Wie dem auch sei, unterm Strich bleibt folgendes festzuhalten.

Global gesehen gibt es zwei Möglichkeiten:

1) Analyse des Umfelds (Einsicht in die Historie der Transaktionen, Überprüfung der offenen Position oder des Positionsvolumens);

2) Analyse der Transaktionen.

Die erste funktioniert langsamer. Aber sie ist zuverlässiger. Wir brauchen einen Kompromiss. Vielleicht müssen wir uns die Strategie ansehen und uns auf sie verlassen.

Ja, FORTS hat einen vollwertigen Ticker, also sollte man nicht mit Ticks, sondern mit dem BookEvent-Ereignis arbeiten.

Es ist merkwürdig, dass Wassili Sokolow sich nicht zu diesem Thema geäußert hat. Seine Sichtweise ist interessant...
Vielleicht werde ich bald auf Glas umsteigen, aber im Moment .... auf die alte Weise.
 
Dennis Kirichenko:
Wie dem auch sei, unterm Strich bleibt folgendes festzuhalten.

Global gesehen gibt es zwei Möglichkeiten:

1) Analyse des Umfelds (Einsicht in die Historie der Transaktionen, Überprüfung der offenen Position oder des Positionsvolumens);

2) Analyse der Transaktionen.

Die erste funktioniert langsamer. Aber sie ist zuverlässiger. Wir brauchen einen Kompromiss. Vielleicht müssen wir uns die Strategie ansehen und uns auf sie verlassen.

Ja, FORTS hat einen vollwertigen Ticker, also sollte man nicht mit Ticks, sondern mit dem BookEvent-Ereignis arbeiten.

Es ist merkwürdig, dass Wassili Sokolow sich nicht zu diesem Thema geäußert hat. Seine Sichtweise ist interessant...
Übrigens, ich habe eine Frage: können wir dasBookEvent-Ereignis auf die gleiche Weise verwenden, wie wir Tick oder Timer verwenden?
D.h. kann ich meine Strategie vollständig dorthin übertragen?
 
Da fällt mir gerade ein...

Ich habe einmal an diesem Auftrag gearbeitet und die Klasse CiOnTrade geschrieben:
class CiOnTrade : public CTrade
Es war eine interessante Aufgabe. Mein Kunde und ich sind uns gegenseitig auf die Nerven gegangen und haben uns das Herz gebrochen. Soweit ich mich erinnere, bestand die Hauptaufgabe darin, das garantierte Volumen zu kaufen/verkaufen. Und wenn ein Teil des Volumens nicht erfüllt wurde, mussten wir diese Aufträge löschen und den Rest zu einem anderen Preis verkaufen...

Die optimale Lösung, die ich gefunden habe, liegt also in der Verarbeitung der Zustände. Und es gab so viele von ihnen:
enum ENUM_TRADE_STATE
  {
   TRADE_STATE_NONE=0,      // "ничего"
   TRADE_STATE_ORDERS=1,    // "только ордера"
   TRADE_STATE_POSITION=2,  // "только позиция"
   TRADE_STATE_ALL=3,       // "все"
  };
1) "Nichts" - dies ist der Ausgangszustand, in dem nichts getan wurde.

2) "Nur Bestellungen" - dies ist der Zustand, wenn die Bestellungen aufgegeben werden.

3) "Nur Position" ist der Zustand, in dem Aufträge vollständig ausgeführt werden.

4) "Alle" ist der Zustand, wenn die Aufträge noch nicht vollständig ausgeführt wurden und bereits eine Position auf dem Markt vorhanden ist.

Jeder Staat musste also bearbeitet werden. Ja, übrigens, ich gebe zu, dass es auch Zwischenstufen gibt. Mein Unterricht könnte also verbessert werden.
 
Gennady Mazur:
Übrigens ist eine Frage aufgetaucht: Kann dasBookEvent-Ereignis genauso verwendet werden wie der Tick oder der Timer?
d.h. kann ich meine Strategie komplett dorthin übertragen?
Ja, aber beachten Sie, dass BookEvent häufiger Ereignisse erzeugt. Deshalb brauchen wir einen Filter, um die unnötigen herauszufiltern. Zum Beispiel haben sich die Preise nicht geändert, sondern nur das Volumen einiger Gebote...
 
Dennis Kirichenko:
Ja, aber bedenken Sie, dass das Glas eher zu Ereignissen führen kann. Daher brauchen Sie einen Filter, um unnötige Ereignisse herauszufiltern. Beispielsweise haben sich die Preise nicht geändert, sondern nur die Mengen einiger Gebote...
Ich verstehe, danke... und in manchen Fällen ist die Veränderung des Volumens wichtiger als die des Preises, besonders in der Nähe starker Niveaus.
 
Dennis Kirichenko:
Die Quintessenz ist imho die folgende.

Insgesamt gibt es zwei Möglichkeiten:

1) Umfeldanalyse (Aufsaugen der Historie von Geschäften, Überprüfung von offenen Positionen oder Positionsvolumen);

2) Transaktionsanalyse.

Die erste funktioniert langsamer. Aber sie ist zuverlässiger. Es muss ein Kompromiss gefunden werden. Vielleicht müssen wir uns die Strategie ansehen und uns auf sie verlassen.
Die Variante OrderSend+Sleep(0) arbeitet nicht langsamer als OrderSend+OnTradeTransaction. Ich habe es gemessen. Daher verwende ich die zweite Variante nicht für asynchrone Transaktionen.
 
Dennis Kirichenko:
Ich gehe davon aus, dass die Information über das Geschäft noch nicht eingetroffen ist. Hier ( rot markiert) ist man auf Glück angewiesen. Und sie ist eine kapriziöse Dame :-))

bool OpenSellPosition(string symbol, double volume, string comment="", ulong deviation=10, ENUM_ORDER_TYPE_FILLING filling=ORDER_FILLING_FOK)
{
  MqlTradeRequest Request;
  MqlTradeResult Results;
  ZeroMemory(Request);
  ZeroMemory(Results);
  Request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
  Request.action=TRADE_ACTION_DEAL;
  Request.type=ORDER_TYPE_SELL;
  Request.symbol=symbol;
  Request.volume=volume;      
  Request.deviation=deviation;
  Request.comment=comment;  
  Request.type_filling=filling;
  bool res=false;
  res=OrderSend(Request,Results);
  if(res)
  {
    if(Results.deal>0) return(true);
    else return(false);

  }
  return(false);
}

Auch beiORDER_STATE_FILLED kann es bei Results.order ein Problem geben - Results.deal ist Null. Eine 100%ige Reproduktion dieser Situation wird auf dem FXOpen-MT5 Server erreicht.

Ich empfehle, viele Demos auf verschiedenen Servern zu öffnen und die volle Funktionalität des Codes zu erreichen. Ich habe dies für MT4 biblisch getan. Deshalb gibt es auch kein Problem mit dem Teilspiel.

 
fxsaber:
OrderSend+Sleep(0) ist nicht langsamer als OrderSend+OnTradeTransaction. Ich habe es gemessen. Daher verwende ich die zweite Variante nicht für asynchrone Transaktionen.

Die OrderSend+Sleep(0)-Variante ist nur vorübergehend, da es sich um eine Unzulänglichkeit der Entwickler handelt (verwenden Sie sie nicht als Beispiel :) ).

Wenn sie korrigiert ist, bleibt nur OrderSend

Grund der Beschwerde: