Bibliotheken: MT4Orders - Seite 28

 
Ilya Malev:

Warum lesen Sie den Thread, ich habe schon alles herausgefunden.

Ich habe alles funktioniert perfekt in mehreren EAs, keine Probleme mit der Bibliothek

 
fxsaber:

Es gibt viele Fälle, in denen dies nicht der Fall ist. Jede Grid-Order erzeugt Dutzende von Positionen, und jede Position, die mit demselben TP geschlossen wird, erzeugt Dutzende von geschlossenen Positionen.

1) Zu Ihrer Information, Teilpositionen in MT4 werden auch nicht einfach so erzeugt (zumindest bei normalen Brokern), sondern nur mit "from#" und "to#" Kommentaren. Gibt es noch andere Argumente?

2) In der Tat ist es Ihre Bibliothek, die in diesem speziellen Moment versagt hat, denn, wie ich bereits sagte, werden Bibliotheken nicht für eine ideale Welt geschrieben, sondern für unsere sündige, unvollkommene und elende Welt. Obwohl ich Ihren Standpunkt sehr gut verstehe und ich selbst wahrscheinlich nie einen solchen Code schreiben würde. Und wenn ich ihn geschrieben hätte, würde ich mich nicht mit Ihnen über dieses Thema streiten und ihn in aller Ruhe neu schreiben. Aber das Problem ist, dass ich diesen Code nicht geschrieben habe :) Okay, danke für den Dialog, ich gehe und denke nach

 
Ilya Malev:

1) Zu Ihrer Information: Teilpositionen werden im MT4 auch nicht einfach so generiert (zumindest bei normalen Brokern), sondern nur mit "from#"- und "to#"-Kommentaren. Haben Sie weitere Argumente?

Jedes System, das bei der Entscheidungsfindung die Handelshistorie des Kampfes berücksichtigt, ist krumm. Die Ausnahme ist die virtuelle Handelsgeschichte, denn dort ist die Ausführung perfekt. Aber das ist eine ganz andere Geschichte.

2) Tatsächlich ist es Ihre Bibliothek, die dem "Kampfeinsatz" in diesem speziellen Moment nicht standhalten könnte, denn wie ich bereits sagte, werden Bibliotheken nicht für die ideale Welt geschrieben, sondern für unsere sündige, unvollkommene und miserable Welt. Obwohl ich Ihren Standpunkt sehr gut verstehe und ich selbst wahrscheinlich nie einen solchen Code schreiben würde. Und wenn ich ihn geschrieben hätte, würde ich mich nicht mit Ihnen über dieses Thema streiten und ihn in aller Ruhe neu schreiben. Aber das Problem ist, dass ich diesen Code nicht geschrieben habe :) Okay, danke für den Dialog, ich werde mal nachdenken

MT4-Coder sollten nicht in die Nähe von MT5 kommen, insbesondere nicht in die der Bibliothek. Ich bin froh, dass Sie nicht einer von ihnen sind.

Es ist eine Tatsache, dass ein krummer MT4-Berater nicht von der Bibliothek verdaut werden kann. Ein korrekt geschriebener MT4-Berater - kein Problem.


ZY Sie müssen nur lernen, SELECT_BY_TICKET nicht hinzuzufügen, um es "einfacher" zu machen.

 

Ich bin auf das Problem gestoßen, ein Ticket zu ändern, ohne SelectByTicket zu verwenden. Ich habe das Problem folgendermaßen gelöst:

                #ifdef __MQL5__
                        long ticket = OrderTicketOpen();
                        ticket = HistoryDealGetInteger( ticket, DEAL_ORDER );
                #endif 
 
Andrey Khatimlianskii:

Ich bin auf das Problem gestoßen, ein Ticket zu ändern, ohne SelectByTicket zu verwenden. Ich habe das Problem folgendermaßen gelöst:

Bitte klären Sie das.

 
fxsaber:

Bitte klären Sie das.

Wir haben das damals im Entscheidungsprozess irgendwie diskutiert.

Es gibt einige Informationen, die an einen Auftrag gebunden sind. Und wenn man neue Aufträge einstellt, war es notwendig, diese Daten für alle Aufträge aus der Historie zu analysieren.

 
Andrey Khatimlianskii:

Wir haben das damals im Entscheidungsprozess diskutiert.

Es gibt einige Informationen, die an einen Auftrag gebunden sind. Und beim Anlegen neuer Aufträge war es notwendig, diese Daten für alle Aufträge aus der Historie zu analysieren.

Das war es. Wir mussten verstehen, wie die Position verschleudert wurde.

 

OrderSend gibt ERR_TRADE_SEND_FAILED anstelle von TRADE_RETCODE_INVALID_PRICE zurück:

2018.12.14 01:00:18.479 2016.02.11 15:40:40   failed buy stop 0.08 EURUSD.m at 1.13196 [Invalid price]
2018.12.14 01:00:18.479 2016.02.11 15:40:40   Alert: #4756,  Не удалось отправить торговый запрос: CommonExpert.mqh|2438 | OrderSend buy stop 0.08 @1.13196

Bei meinen Programmierfehlern bedeutet ERR_TRADE_SEND_FAILED normalerweise, dass ein ungültiges (bereits geschlossenes oder ungültiges) Ticket übergeben wird. Und auf diese Weise kann ich den Unterschied programmtechnisch nicht erkennen.

 
Edgar:

OrderSend gibt ERR_TRADE_SEND_FAILED anstelle von TRADE_RETCODE_INVALID_PRICE zurück:

Bei meinen Programmierfehlern bedeutet ERR_TRADE_SEND_FAILED normalerweise, dass ein ungültiges (bereits geschlossenes oder ungültiges) Ticket übergeben wird. Und auf diese Weise kann ich den Unterschied programmtechnisch nicht erkennen.

#include <MT4Orders.mqh>

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)

void OnStart()
{
  if (OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid - 100 * _Point, 0, 0, 0) < 0)
  {
    Print(GetLastError());                     // ERR_TRADE_SEND_FAILED
    Print(MT4ORDERS::LastTradeResult.retcode); // TRADE_RETCODE_INVALID_PRICE
  }
}


Vollständiges Protokoll der Skriptausführung

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.13473
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_SELL_LIMIT (3)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 10015
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Invalid price 0.082 ms
Result.request_id = 0
Result.retcode_external = 0

4756
10015
 
Dankeschön