Einteilung der offenen Stellen in Gruppen - Seite 12

 
Sergey Voytsekhovsky:
Es scheint funktioniert zu haben: Ich habe ein Minuszeichen für jeden TakeProfit und ein Pluszeichen für jeden Markteintritt. Ich entschuldige mich für den umgangssprachlichen Slang, aber ich bin Autodidakt und habe niemanden, mit dem ich mich zu diesem Thema austauschen kann.


Und ich bin Autodidakt. Wie auch immer, ich habe den Code geschnitten und geschnitten und geschnitten... Wäre der Dialog mit Ihnen nicht gewesen, hätte ich diese Probleme etwas später entdeckt...

Ich sollte in den Code eine Auswahl an Geschäften vor dem Lesen von Eigenschaften aufnehmen.

    HistoryDealSelect(trans.deal);

Oder um den Erfolg der Wahl zu überprüfen.

    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
 
Alexey Viktorov:

Und ich bin Autodidakt. Wie auch immer, ich habe den Code geschnitten und geschnitten und geschnitten... Wenn ich nicht den Dialog mit Ihnen geführt hätte, wäre ich erst etwas später auf diese Probleme gestoßen...

Es ist immer gut, zu reden, und Sie werden später herausfinden, ob das Gespräch nützlich ist oder nicht. Die gesprächigsten Personen erhöhen also im Durchschnitt minPolus, verringern aber maxPolus. Das ist ein ziemlicher Zungenbrecher.

Надо добавить в код выбор сделки перед чтением свойств.

или с проверкой успешности выбора.

Denken Sie nur laut, oder ist es das, was Sie mir empfehlen, zu tun?

 

Mit der Funktion

bool  HistoryDealSelect( 
   ulong  ticket     // тикет сделки 
   );

Ich habe etwas darüber gelesen, aber ich weiß noch nicht, wie man es benutzt

Функция HistoryDealSelect() очищает в mql5-программе список сделок, доступных для обращений, и копирует в него одну единственную сделку, если выполнение HistoryDealSelect() завершилось успешно.
 

Nächste Aufgabe: Ich lade die Wissenden zur Diskussion ein.

Wie kann ein Transaktionsticket(eine Position auf TRgeschlossen ) ein Positionsticket zurückgeben, das durch diese Transaktion geschlossen wurde?

2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   take profit triggered #6571  buy 0.01 EURUSD 1.16343 tp: 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal #6572  sell 0.01 EURUSD at 1.16389 done (based on order #6572)
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   deal performed [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   order performed sell 0.01 at 1.16389 [#6572  sell 0.01 EURUSD at 1.16389]
2020.04.12 18:15:09.620 Core 1  2018.06.19 04:52:40   Закрыта позиция ---Тикет сделки--- 6572 ---Позицию в структуре ArrayDealOut пометить на удаление ------------

Die Sache ist die, dass ich eine Struktur habe, in der die Ist-Positionen gespeichert werden müssen. Wenn sie das Spiel verlassen, müssen sie aufgeräumt werden.

???

 
Sergey Voytsekhovsky:

Zumindest ist es immer nützlich, über etwas zu reden, und Sie werden später herausfinden, ob das Gespräch nützlich ist oder nicht. Die gesprächigsten Personen erhöhen also den minPolus durch Mittelwertbildung, verringern aber den maxPolus. Das ist ein ziemlicher Zungenbrecher.

Denken Sie nur laut, oder ist es das, was Sie mir empfehlen, zu tun?

Ich empfehle es nicht nur, sondern habe die kürzlich gelöschte Zeile in meinem Code wieder eingefügt.

 
Sergey Voytsekhovsky:

Mit der Funktion

Man muss vorsichtig sein, ich habe dort eine Funktion gelesen, aber ich weiß noch nicht, wie man sie benutzt.

Es kommt darauf an, wo Sie die Auswahl treffen. Diese Gefahr besteht bei OnTradeTransaction nicht. Im Allgemeinen sollten wir uns angewöhnen, sie auszuwählen, bevor wir auf die Eigenschaften eines Auftrags, eines Geschäfts oder einer Position zugreifen.

Und vergessen Sie nicht, dass, wenn nach der Auswahl die Ausführung zu einer anderen Funktion wechselt und dort eine weitere Auswahl getroffen wird, die Liste bei der Rückkehr die zuletzt ausgewählte Option enthält.

 
Sergey Voytsekhovsky:

Nächste Aufgabe: Ich lade die Wissenden zur Diskussion ein.

Wie kann ein Transaktionsticket(eine Position auf TRgeschlossen ) ein Positionsticket zurückgeben, das durch diese Transaktion geschlossen wurde?

Die Sache ist die, dass ich eine Struktur habe, in der die Ist-Positionen gespeichert werden müssen. Wenn sie das Spiel verlassen, müssen sie aufgeräumt werden.

???

Nun, es ist ganz einfach...

/*********************TradeTransaction function**********************/
void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
 {
  if(trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.symbol == _Symbol)
   {
    if(!HistoryDealSelect(trans.deal))
      Print(GetLastError());
    /******************** Если открылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN)
      Print("********** открытие сделка ", trans.deal, " позиция ", trans.position);
    /******************** Если закрылась позиция********************/
    if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_OUT)
     {
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_TP)
       {
        Print("********** закрытие по тейку сделка ", trans.deal, " позиция ", trans.position);
       }
      if(HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_SL)
       {
        Print("********** закрытие по стопу сделка ", trans.deal, " позиция ", trans.position);
       }
     }
   }
 }/*******************************************************************/
CN      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** закрытие по стопу сделка 27 позиция 26
CG      0       19:20:27.920    !00 (GBPUSD.m,H1)       2020.02.03 12:01:20   ********** открытие сделка 28 позиция 28
HJ      0       19:20:28.023    Trade   2020.02.03 12:01:40   stop loss triggered #28  buy 0.1 GBPUSD.m 1.30698 sl: 1.30598 tp: 1.30798 [#29  sell 0.1 GBPUSD.m at 1.30598]
GE      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #29  sell 0.1 GBPUSD.m at 1.30598 done (based on order #29)
 JF      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#29  sell 0.1 GBPUSD.m at 1.30598]
CD      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed sell 0.1 at 1.30598 [#29  sell 0.1 GBPUSD.m at 1.30598]
GI      0       19:20:28.023    Trade   2020.02.03 12:01:40   market buy 0.1 GBPUSD.m sl: 1.30512 tp: 1.30712 (1.30598 / 1.30612 / 1.30598)
FQ      0       19:20:28.023    Trades  2020.02.03 12:01:40   deal #30  buy 0.1 GBPUSD.m at 1.30612 done (based on order #30)
 QQ      0       19:20:28.023    Trade   2020.02.03 12:01:40   deal performed [#30  buy 0.1 GBPUSD.m at 1.30612]
ON      0       19:20:28.023    Trade   2020.02.03 12:01:40   order performed buy 0.1 at 1.30612 [#30  buy 0.1 GBPUSD.m at 1.30612]
KR      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30512 tp: 1.30712 [done at 1.30612]
RM      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** закрытие по стопу сделка 29 позиция 28
FP      0       19:20:28.025    !00 (GBPUSD.m,H1)       2020.02.03 12:01:40   ********** открытие сделка 30 позиция 30
NK      0       19:20:28.295    Trade   2020.02.03 12:02:39   take profit triggered #30  buy 0.1 GBPUSD.m 1.30612 sl: 1.30512 tp: 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IS      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #31  sell 0.1 GBPUSD.m at 1.30712 done (based on order #31)
 NE      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#31  sell 0.1 GBPUSD.m at 1.30712]
KI      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed sell 0.1 at 1.30712 [#31  sell 0.1 GBPUSD.m at 1.30712]
IH      0       19:20:28.295    Trade   2020.02.03 12:02:39   market buy 0.1 GBPUSD.m sl: 1.30626 tp: 1.30826 (1.30712 / 1.30726 / 1.30712)
EI      0       19:20:28.295    Trades  2020.02.03 12:02:39   deal #32  buy 0.1 GBPUSD.m at 1.30726 done (based on order #32)
 LR      0       19:20:28.295    Trade   2020.02.03 12:02:39   deal performed [#32  buy 0.1 GBPUSD.m at 1.30726]
RL      0       19:20:28.295    Trade   2020.02.03 12:02:39   order performed buy 0.1 at 1.30726 [#32  buy 0.1 GBPUSD.m at 1.30726]
HR      0       19:20:28.297    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   CTrade::OrderSend: market buy 0.10 GBPUSD.m sl: 1.30626 tp: 1.30826 [done at 1.30726]
HS      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** закрытие по тейку сделка 31 позиция 30
KP      0       19:20:32.663    !00 (GBPUSD.m,H1)       2020.02.03 12:02:39   ********** открытие сделка 32 позиция 32
 
Alexey Viktorov:

Es kommt darauf an, wo Sie die Auswahl treffen. Dieses Risiko besteht bei OnTradeTransaction nicht. Wir sollten uns sogar angewöhnen, sie auszuwählen, bevor wir auf die Eigenschaften eines Auftrags, eines Geschäfts oder einer Position zugreifen.

Und vergessen Sie nicht, dass, wenn nach der Auswahl die Ausführung zu irgendeiner Funktion geht und sie eine andere Wahl trifft, dann bei der Rückkehr in der Liste diejenige sein wird, die zuletzt ausgewählt wurde.

Mann, wie man das alles begreifen kann, ist für mich jenseits der Abstraktion.

Ich habe gerade das oben erwähnte Problem mit der Suche nach einem Ticket für eine Position, die durch einen bekannten Trade geschlossen wurde, gelöst - und ich habe es sofort aus dem Druck angefordert, so dass ich wieder an den Ausgangspunkt zurückgekehrt bin - nicht alle TakeProfits werden im Druck angezeigt.

 
Alexey Viktorov:

So einfach ist das...

Mein Gott, du hattest "meinen Schatz" die ganze Zeit und hast dich so bescheiden zurückgehalten???

Ich danke Ihnen vielmals.

Ich habe viel gelernt. Ich hätte es einfach nur neu posten können, das ist alles.

 
Sergey Voytsekhovsky:

Oh mein Gott, du hattest "meinen Schatz" die ganze Zeit und hast dich so bescheiden zurückgehalten???

Ich danke Ihnen vielmals.

Ich habe eine Menge gelernt, aber ich hätte es einfach wieder eingestellt und das war's.

Es ist nichts passiert. Ich habe es gerade geschrieben, um es zu überprüfen und es durch den Debugger auf historischen Daten laufen zu lassen. Lernen Sie, den Debugger zu benutzen. Das ist eine sehr nützliche Fähigkeit.

Ich begann mit der Programmierung in Excell, dem sogenannten VBA (Visual VBA for Applications), und lernte dort das Debugging. Danach fiel es mir schwer, mich an die Drucker zu gewöhnen, um die empfangenen Werte zu überprüfen... Und als sie das Debugging in mql5 einführten, war ich glücklich wie ein Kind, dass mein Leiden ein Ende hatte.