"Floating PositionSelect()-Fehler - Seite 5

 

prostotrader:

Ergibt das mehr Sinn, "Professor"?

Heh-heh-heh. Bist du überhaupt schon erwachsen, oder was?

Was wollten Sie auf dem Bildschirmfoto zeigen?

Gehen wir die Punkte in Ihrem Protokoll durch.

Der erste:

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    History done. Ticket: 50942179

Was sehen Sie im zweiten Absatz?

Ich werde mir die Mühe machen und es aufschreiben:

2016.08.15 15:37:17.720    Test_deff_order (GAZR-9.16,M1)    Volume initial: 1.0. Volume current: 0.0 Deals done: 0.0 

 

Aber wieder einmal versuchen Sie, etwas zu analysieren (Aufträge), ohne zu berücksichtigen, dass der Auslöser, der die Analyse des Positionsvolumens ermöglicht, eine Transaktion vom Typ TRADE_TRANSACTION_DEAL_ADD ist - das Hinzufügen eines Geschäfts zur Historie.

Dennoch überprüfen Sie zum x-ten Mal mit TRADE_TRANSACTION_DEAL_ADD nicht das Positionsvolumen.

Hier ist Ihr Code aus der obigen Nachricht:

      case TRADE_TRANSACTION_DEAL_ADD:
        if((order_ticket!=0) && (trans.order==order_ticket))
        {
         Print("Deal done. Ticket: ",trans.order);
        }
      break; 
 
Изменение позиции в терминале происходит строго в результате получения сделочной транзакции, ....

Können Sie nicht erkennen, dass sich die Position (im zweiten Fall) geändert hat , bevor die Transaktion eingetroffen ist?

DAS SOLLTE NICHT SEIN, denn Alexndr schrieb:

Изменение позиции в терминале происходит СТРОГО в результате получения сделочной транзакции, ....
 

STRICTLY!

STRICTLY!

STRICTLY!

STRICTLY!

 
prostotrader:

Können Sie nicht erkennen, dass sich die Position (im zweiten Fall) geändert hat , bevor die Transaktion eingegangen ist?

DAS SOLLTE NICHT SEIN, denn Alexndr schrieb:

Ah, das war's... Genaueres kann nur der Autor sagen :-))

Aber ich denke, es lohnt sich nicht, auf diesen Worten herumzuhacken. Das Handelsgeschäft ist bereits eingetroffen, es wird nur nicht sofort in OnTradeTransaction() verarbeitet.

Seltsam ist, dass Sie auf die Handelstransaktion verweisen, während es in Ihrem Code den Fall TRADE_TRANSACTION_HISTORY_ADD gibt.

Imho ist es hier wichtig, es durch Prüfung der Transaktionen zu verarbeiten - Fall TRADE_TRANSACTION_DEAL_ADD.

 
Dennis Kirichenko:

Ah, das war's... Genauere Angaben kann nur der Autor machen :-))

Aber wir sollten nicht auf diesen Wörtern herumhacken. Die Transaktion ist bereits eingetroffen, sie wurde nur nicht sofort in OnTradeTransaction() verarbeitet.

Imho ist es wichtig, sie zu verarbeiten, indem man die Transaktionen prüft...

Danke Denis!

Ich bin ein Trottel, der nicht einmal weiß, wasOnTradeTransaction ist.

 
prostotrader:

Danke Deniska!

Ich bin ein Trottel, weil ich nicht einmal weiß, was OnTradeTransaction ist.

Mit Vergnügen! Aber Ihre Ironie ist unbegründet. Man hat Ihnen schon mehrmals hintereinander unter die Nase gerieben , was an dem Code falsch ist.

Du hättest dich wenigstens bei Vladimir bedanken sollen, er war der erste, der dir die richtige Richtung gezeigt hat ;-)

 
Dennis Kirichenko:

Mit Vergnügen! Aber Ihre Ironie ist nicht beabsichtigt. Man hat Ihnen mehrmals hintereinander gesagt, was an dem Code falsch ist.

Zumindest solltest du dich bei Vladimir bedanken, er war der erste, der dir die richtige Richtung gezeigt hat ;-)

Lesen Sie "in aller Ruhe":

https://www.mql5.com/ru/forum/93357#comment_2707875

 

Karputow Wladimir

Können die Zahlen unter meinen Avataren nicht mit 1000 multipliziert werden?

Eine Sache noch...

Falls Sie es noch nicht bemerkt haben, sollte ich darauf hinweisen, dass in allen Beispielen die Aufträge erteilt werden

Asynchron, deshalb ist es wichtig, sie zu kontrollieren!

 
prostotrader:

Karputow Wladimir

Können die Zahlen unter meinem Avatar nicht um 1000 reduziert werden?

Die Zahlen unter Ihrem Avatar gehören nicht Ihnen, Sie haben also keine Macht über sie (Sie können sie nicht nach Belieben ändern).

Hinzugefügt.

Vergessen Sie die Aufträge bis zur Transaktion mit dem Typ TRADE_TRANSACTION_DEAL_ADD. Warum "vergessen Sie es"? Weil es FALSCH ist.