#include <Trade\Trade.mqh>
CTrade Trade;
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---int total=PositionsTotal();
int Ordertotal=OrdersTotal();
while(!IsStopped() && (total <= 1)) // Закончим, когда появится более одной позиции.if(total == 1)
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.elseif(Ordertotal!=0)
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
}
//+------------------------------------------------------------------+
Ich denke, die beiden Positionen sind offen und eng. Es kann nicht schaden, zu versuchen, die Typen dieser beiden Positionen zu bekommen. Wenn sie anders ausgerichtet sind, wird das meinen Verdacht bestätigen...
Wenn das Ticket bekannt ist, können Sie den Status der Bestellung abfragen.
Der Handel ist fehlgeschlagen, der Ausführungskurs ist 0.
Struktur des Ergebnisses einer Handelsanfrage (MqlTradeResult)
Als Antwort auf eine Handelsanfrage gibt der Handelsserver Daten zurück, die das Ergebnis der Verarbeitung der Handelsanfrage in Form einer speziellen vordefinierten Struktur MqlTradeResult enthalten.
structMqlTradeResult
{
uint retcode; // Код результата операцииulong deal; // Тикет сделки, если она совершенаulong order; // Тикет ордера, если он выставленdouble volume; // Объем сделки, подтверждённый брокеромdouble price; // Цена в сделке, подтверждённая брокеромdouble bid; // Текущая рыночная цена предложения (цены реквота)double ask; // Текущая рыночная цена спроса (цены реквота)string comment; // Комментарий брокера к операции (по умолчанию заполняется расшифровкой кода возврата торгового сервера)uint request_id; // Идентификатор запроса, устанавливается терминалом при отправке uint retcode_external; // Код ответа внешней торговой системы
};
So erhalten Sie den Status dieser Bestellung. Wenn das Ticket bekannt ist.
Der Handel ist fehlgeschlagen, der Ausführungskurs ist 0.
Das ist die Sache: Es ist vorbei. Wenn die Ausführung des Skripts beendet ist, bleiben ein oder zwei Positionen hängen (je nachdem, wie viele Ausdrucke Sie in den Code einfügen).
Code:
#define PRINT(A) Print(#A + " = " + (string)(A))
#include <Trade\Trade.mqh>
voidOnStart()
{
CTrade Trade;
while (!IsStopped() && (PositionsTotal() <= 1)) // Закончим, когда появится более одной позиции.if (PositionsTotal() == 1)
{
Trade.PositionClose(PositionGetTicket(0)); // Если есть позиция - закрываем.Print("Закрытие, т. к. PositionsTotal() равно 1");
}
elseif (!OrdersTotal())
{
printf("Перед открытием. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
Trade.Buy(0.01); // Если нет позиции и ордера - открываем позицию.
PRINT(Trade.ResultRetcodeDescription());
PRINT(Trade.ResultDeal());
PRINT(Trade.ResultOrder());
PRINT(Trade.ResultComment());
if (OrderSelect(Trade.ResultOrder()))
PRINT(OrderGetInteger(ORDER_STATE));
printf("После открытия. PositionsTotal: %d, OrdersTotal: %d", PositionsTotal(), OrdersTotal());
}
Print("Выход. PostionsTotal: ", PositionsTotal());
}
Ergebnis:
2021.05.0514:25:14.738 Test (EURUSD,M1) Перед открытием. PositionsTotal: 0, OrdersTotal: 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultRetcodeDescription() = done at 0.000002021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultDeal() = 02021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultOrder() = 22498886812021.05.0514:25:14.821 Test (EURUSD,M1) Trade.ResultComment() = Request executed
2021.05.0514:25:14.821 Test (EURUSD,M1) EnumToString(ENUM_ORDER_STATE(OrderGetInteger(ORDER_STATE))) = ORDER_STATE_PLACED2021.05.0514:25:14.821 Test (EURUSD,M1) После открытия. PositionsTotal: 1, OrdersTotal: 12021.05.0514:25:14.899 Test (EURUSD,M1) Закрытие, т. к. PositionsTotal() равно 12021.05.0514:25:14.899 Test (EURUSD,M1) Выход. PostionsTotal: 2
Ich denke, dass die beiden Positionen offen und eng sind. Es kann nicht schaden, zu versuchen, die Typen dieser beiden Positionen zu bekommen. Wenn sie anders ausgerichtet sind, würde das meinen Verdacht bestätigen...
So etwas wie eine Abschlussposition gibt es nicht.
das funktioniert gut - (je nach Zweck!?)
das funktioniert gut - (je nach Zweck!?)
Mischen Sie sich nicht ein. Sie haben dort einen speziellen DC, der alle möglichen Intrigen entwickelt, um die MT-Wanzen zu fangen.
Ein besonderer DC, der alle möglichen Intrigen spinnt, um die MT-Wanzen zu fangen.
Die meisten Makler arbeiten nach demselben Schema: Ergebnis.deal == 0.
Zum Beispiel ist Signals der beliebteste Broker für Scalping.
Unter den seriösen Brokern ist es ziemlich schwierig, einen MT5 zu finden, der nach einem anderen Schema arbeitet.
das funktioniert gut - (je nach Zweck!?)
Die meisten Makler arbeiten nach demselben Schema: Ergebnis.deal == 0.
Signals ist zum Beispiel der beliebteste Broker für Scalping.
Unter den bekannten Brokern ist es ziemlich schwierig, einen MT5 zu finden, der nach einem anderen Schema arbeitet.
Ich weiß nicht, welche Art von Scalping so sehr funktioniert, dass man keine Zeit hat, eine Position zu schließen...
Wenn es Ihnen nichts ausmacht, versuchen Sie trotzdem, die Anzahl der Positionen zu überprüfen
Ich denke, die beiden Positionen sind offen und eng. Es kann nicht schaden, zu versuchen, die Typen dieser beiden Positionen zu bekommen. Wenn sie anders ausgerichtet sind, wird das meinen Verdacht bestätigen...
Erledigt:
Ergebnis:
Wenn das Ticket bekannt ist, können Sie den Status der Bestellung abfragen.
Der Handel ist fehlgeschlagen, der Ausführungskurs ist 0.
Struktur des Ergebnisses einer Handelsanfrage (MqlTradeResult)
Als Antwort auf eine Handelsanfrage gibt der Handelsserver Daten zurück, die das Ergebnis der Verarbeitung der Handelsanfrage in Form einer speziellen vordefinierten Struktur MqlTradeResult enthalten.
So erhalten Sie den Status dieser Bestellung. Wenn das Ticket bekannt ist.
Der Handel ist fehlgeschlagen, der Ausführungskurs ist 0.
Das ist die Sache: Es ist vorbei. Wenn die Ausführung des Skripts beendet ist, bleiben ein oder zwei Positionen hängen (je nachdem, wie viele Ausdrucke Sie in den Code einfügen).
Code:
Ergebnis:
Ich weiß nicht, welche Art von Scalping so hart arbeitet, dass man eine Position nicht rechtzeitig schließen kann...
Dort ist alles im Takt. Das ist ein architektonisches Merkmal von MT5.
Wenn es Ihnen nichts ausmacht, versuchen Sie bitte, die Anzahl der Positionen zu überprüfen
Diese Prüfung ist im Quellcode enthalten.
Ich denke, dass die beiden Positionen offen und eng sind. Es kann nicht schaden, zu versuchen, die Typen dieser beiden Positionen zu bekommen. Wenn sie anders ausgerichtet sind, würde das meinen Verdacht bestätigen...
So etwas wie eine Abschlussposition gibt es nicht.
Ich bin noch nicht dazu gekommen, ihn zu veröffentlichen. Ich werde sie innerhalb von 24 Stunden veröffentlichen.
Es hat nicht funktioniert, ich habe Probleme gefunden.
Hat nicht geklappt, habe Probleme gefunden.
Ich freue mich darauf. Wenn Sie Hilfe benötigen, schreiben Sie uns bitte.