Frage zur Funktion OnTradeTransaction - Seite 3

 
Mikalas:

:)

1. BEISPIEL für FORTS

2. kann man keine Brackpoints setzen?

3. Ich habe den Eindruck, dass Sie die Nachrichten durch eine Leitung lesen :)

Nein, ich habe den Eindruck, dass Sie über das Ziel hinausschießen:

void OnTick()
{
  MqlTick a_tick; //Зачем этот зазор ниже?
                                           
  if ( SymbolInfoTick( _Symbol, a_tick ) )
  {
    PlaceOrder( _Symbol, a_tick.ask, 1, false );   //Устанавливаем ордер
  }     
}

:)) Ich habe Haltepunkte gesetzt, aber ich verstehe es immer noch nicht. Entschuldigung, aber Ihr Code ist hässlich. Der Auftrag wird zuerst gesendet, und dann werden einige sinnlose Prüfungen inOnTradeTransaction und CheckOrder() durchgeführt. Das Volumen wird ebenfalls im Checker berechnet.

Wir sollten uns nicht gegenseitig quälen: Sie geben zumindest eine kurze Erläuterung Ihres Codes (was der Autor sozusagen sagen wollte, welche Ziele er verfolgte), und ich werde versuchen, eine nicht zu oberflächliche Analyse vorzunehmen. Ich möchte es nicht noch einmal aufrufen, auch nicht unter Haltepunkten.

 
Mikalas:

:)

Gehen wir es so an.

Ich werde Ihnen Fragen stellen, und Sie werden sie beantworten, OK?

...

Na los!
Mikalas:

Frage 1: Woher wissen Sie, dass das Auftragsticket (durch Senden des Befehls OrderSendAsync) vorliegt, wenn das Ereignis TradeTransaction nicht eingetroffen ist (oder nicht verwendet wird)?

Ich erkenne das Auftragsticket durch die Funktion TrackingHistoryOrders, denn früher oder später wird der Auftrag ausgeführt und geht in die Auftragshistorie ein, die diese Funktion auswertet.

 
C-4:

Ich habe den Eindruck, dass Sie durch eine Linie schreiben:

Ich habe Haltepunkte gesetzt und verstehe es immer noch nicht. Entschuldigung, aber Ihr Code ist hässlich. Der Auftrag wird zuerst gesendet, und dann werden einige sinnlose Prüfungen in OnTradeTransaction und CheckOrder() durchgeführt. Das Volumen wird ebenfalls im Checker berechnet.

Wir sollten uns nicht gegenseitig quälen: Sie geben zumindest eine kurze Erläuterung Ihres Codes (was der Autor sozusagen sagen wollte, welche Ziele er verfolgte), und ich werde versuchen, eine nicht zu oberflächliche Analyse vorzunehmen. Ich möchte sie nicht in der Form, in der sie jetzt vorliegt, erneut aufrufen, auch nicht unter Haltepunkten.

:):):)

Ich bin kein junger Mann mehr (das Foto ist 9 Jahre alt), und ich fühle mich wohler, wenn ich zur besseren Wahrnehmung "Lücken" im Code mache.

Und viele Menschen finden es auch bequemer , Code zu lesen, wenn Zeilen und Spalten mit 100 Zeichen nicht zusammen geschrieben sind.

Sie finden es "hässlich", weil SIE sich die Zeit genommen haben, Ihre eigene Methode zu erfinden, um

OrderSendAsync-Befehl, so dass Sie denken, anderer Code = hässlich! :)

Das Prinzip ist ganz einfach, und Sie wissen es, weil Sie sich an der Diskussion zu diesem Thema beteiligt haben.

Die Lösung für dieses Problem wurde von Yurich vorgeschlagen, und zwar, dass für jeden Auftrag des Befehls OrderSendAsync

Befehl seine eigene Magie hat, dann ist dieser Auftrag, wenn das TradeTransaction-Ereignis noch nicht eingetroffen ist, sehr leicht zu finden (durch Magie).

Für jedes Symbol wird ein Bereich von Magic-Nummern zugewiesen, z. B. für AUDUSD von 1010000 bis 1019999,

für EURUSD von 1020000 bis 1029999

Diese eindeutigen Nummern können im Laufe der Zeit wiederholt werden.

if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;  //Переполнение, начинаем сначала

Um zu vermeiden, dass Sie in einen anderen Auftrag "geraten", gibt es eine Variable (datetime mem_time;)

die das Datum und die Uhrzeit der Bestellung speichert.

Sollen wir weitermachen?

 
C-4:
Na los!

Das Auftragsticket erhalte ich über die Funktion TrackingHistoryOrders, denn früher oder später wird der Auftrag ausgeführt und gelangt in die Auftragshistorie, die von dieser Funktion analysiert wird.

Das ist in Ordnung, aber ich brauche es eher früher als später (die Bestellung kann einen Tag lang "hängen" und wird nicht in der Historie erscheinen).

Ich möchte es ändern!

Ich möchte löschen!

 

Die ganze Aufregung und der viele Zusatzcode kommen von diesem Satz: Außerdemkönnen Transaktionen bei der Übertragung vom Server zum Terminal verloren gehen.

Kann jemand die Situation klären? Wer kann eine Transaktion persönlich verlieren (Börsenpannen, Schließung des Brokers, Ausfall des MQ MT5-Servers)?

Warum will MQ die Zustellung von Transaktionen nicht garantieren, wer profitiert davon?

 
Serj_Che:

Die ganze Aufregung und der viele Zusatzcode kommen von diesem Satz: Außerdemkönnen Transaktionen bei der Übertragung vom Server zum Terminal verloren gehen.

Kann jemand die Situation klären? Wer kann ein Geschäft speziell bei Personen verlieren (Börsenpannen, Schließung des Brokers)?

Warum will MQ die Zustellung von Transaktionen nicht garantieren, wer profitiert davon?

Niemand tut das, aber MQ kann es sich nicht leisten", alles auf einmal zu machen, und es gibt viele Projekte, und

talentierte Programmierer sind rar, deshalb dauert es zu lange...

Natürlich werden sie das. (Sie haben bereits alles dafür, abgesehen von dem Ortungsmechanismus selbst).

 
Basil, wie ändern (löschen) Sie eine OrderSendAsync-Ausgabe, wenn Sie kein Ticket haben?
 
Mikalas:

Niemand profitiert davon, MQ kann nur nicht alles auf einmal in die Hand nehmen, und es gibt viele Projekte, aber

talentierte Programmierer sind rar, deshalb dauert es zu lange...

Natürlich werden sie das. (sie haben bereits alles dafür, außer dem Ortungsmechanismus selbst).

Soweit ich das verstanden habe, gibt die Börse alles her. Auch für einen normalen Makler macht es keinen Sinn, etwas zu verlieren.

Bei MQ sieht es so aus. MQ hat MetaTrader5 und die Integration mit der Börse hat keine Priorität.

 
Serj_Che:

Was mich betrifft, so verrät der Austausch alles. Für einen normalen Makler macht es auch keinen Sinn, etwas zu verlieren.

Dies ist ähnlich wie bei MQ. MQ hat MetaTrader5 und die Integration mit der Börse hat keine Priorität.

Ja, denn es gibt keine Küche an der Börse (nur Provisionen), und es gibt Millionen von MMM-Anhängern auf FOREX,

Sie haben vielleicht 100 Dollar, aber das hat jeder! Riesiges Geld, da gibt es etwas zu zählen! :)

 

Wassili, wird es eine Antwort geben?

Das glaube ich nicht.

Habe ich gewonnen?

Grund der Beschwerde: