Ein Futures-Geschäft wird zum letzten Kurs eröffnet, nicht zum Geld- oder Briefkurs. Ist das normal? - Seite 2

 

Roman und Alexey Viktorov, vielen Dank für Ihre Hilfe.

Nachdem ich einen Handel eröffnet hatte, beschloss ich, einfach zu überprüfen, ob die realen und berechneten TP- und SL-Abstände übereinstimmen. Wenn sie nicht übereinstimmen, versuche ich, sie in der Funktion OnTrade() zurückzusetzen. Infolgedessen werden die Abstände zwischen dem realen Eröffnungskurs und TP und SL korrekt. Erstaunlich ist, dass ein solcher Ausrutscher bei diesem Symbol die Regel ist. Der Code wird fast bei jeder Handelseröffnung ausgelöst.

//+------------------------------------------------------------------+
//|                          OnTrade()                               |
//+------------------------------------------------------------------+
void OnTrade()
  {
   if(HistoryDealSelect(last_trade_ticket))
     {
      // сделка выделилась успешно
      ulong pos_id = HistoryDealGetInteger(last_trade_ticket, DEAL_POSITION_ID);
      // идентификатор позиции сохранён
      if(HistorySelectByPosition(pos_id) && HistoryDealsTotal() == 1)
        {
         // история позиции сформирована
         // позиция состоит из одной сделки
         if(PositionSelectByTicket(pos_id))
           {
            // позиция выделена
            string symbol = PositionGetString(POSITION_SYMBOL);
            double pos_op = PositionGetDouble(POSITION_PRICE_OPEN);
            double pos_tp = NormalizeDouble(PositionGetDouble(POSITION_TP), _Digits);
            double pos_sl = NormalizeDouble(PositionGetDouble(POSITION_SL), _Digits);
            long pos_type = PositionGetInteger(POSITION_TYPE);
            long pos_mag = PositionGetInteger(POSITION_MAGIC);
            // параметры позиции получены
            int tp = int(GlobalVariableGet(global_tp));
            int sl = int(GlobalVariableGet(global_sl));
            double calc_tp_price = 0;
            double calc_sl_price = 0;
            if(pos_type == POSITION_TYPE_BUY)
              {
               // покупка
               // расчёт корректных тп и сл
               if(tp > 0)
                  calc_tp_price = NormalizeDouble(pos_op + tp * _Point, _Digits);
               if(sl > 0)
                  calc_sl_price = NormalizeDouble(pos_op - sl * _Point, _Digits);
              }
            if(pos_type == POSITION_TYPE_SELL)
              {
               // продажа
               // расчёт корректных тп и сл
               if(tp > 0)
                  calc_tp_price = NormalizeDouble(pos_op - tp * _Point, _Digits);
               if(sl > 0)
                  calc_sl_price = NormalizeDouble(pos_op + sl * _Point, _Digits);
              }
            if(pos_tp != calc_tp_price || pos_sl != calc_sl_price)
              {
               // обнаружен факт проскальзывания
               // исправить тейк и стоп
               MqlTradeRequest request;
               MqlTradeResult result;
               ZeroMemory(request);
               ZeroMemory(result);
               request.action = TRADE_ACTION_SLTP;
               request.position = pos_id;
               request.symbol = symbol;
               request.magic = pos_mag;
               request.tp = calc_tp_price;
               request.sl = calc_sl_price;
               if(!OrderSend(request, result) || result.retcode != TRADE_RETCODE_DONE)
                  Print("Ticket:", pos_id, " Error: ", ResultRetcode(result));
              }
           }
        }
     }
   last_trade_ticket = 0;
  }
//+------------------------------------------------------------------+
 
Gutes Thema. Vielen Dank und löschen Sie es nicht. Als ich Arbitrage ausprobierte, tauchten viele Fragen auf, die hier beantwortet werden
 
Oleg Remizov:

Roman und Alexey Viktorov, vielen Dank für Ihre Hilfe.

Nachdem ich einen Handel eröffnet hatte, beschloss ich, einfach zu prüfen, ob die realen und die berechneten TP- und SL-Abstände gleich sind. Wenn sie nicht übereinstimmen, versuche ich, sie in der Funktion OnTrade() zurückzusetzen. Infolgedessen werden die Abstände zwischen dem realen Eröffnungskurs und TP und SL korrekt. Erstaunlich ist, dass ein solcher Ausrutscher bei diesem Symbol die Regel ist. Der Code wird fast bei jeder Handelseröffnung ausgelöst.

Versuchen Sie, ein Geschäft mit einem Limit-Auftrag anstelle des Marktpreises auszuführen, aber geben Sie beim Kauf den besten Ask-Kurs und beim Verkauf den besten Bid-Kurs an. Der Auftrag sollte sofort zum angegebenen Preis ausgeführt werden, es sei denn, der Geld- oder Briefkurs ändert sich in dieser Zeit.

 
Vitalii Ananev:

Versuchen Sie, die Transaktion nicht nach dem Markt, sondern durch eine Limit-Order auszuführen, wobei der Preis in der Order den besten Ask-Preis beim Kauf oder den besten Bid-Preis beim Verkauf angibt. Der Auftrag sollte sofort zum angegebenen Preis ausgeführt werden, es sei denn, der Brief- oder Geldkurs ändert sich in dieser Zeit.

Limitaufträge werden gut ausgeführt. Manchmal sogar zu einem besseren Preis als dem des Angebots.

 
Oleg Remizov:

.... Manchmal sogar zu einem günstigeren Preis als im Antragsformular angegeben.

Die Preise haben sich also geändert.

Hier ist ein Tipp:) Mit einem Limit-Auftrag können Sie eine Position eröffnen, als ob Sie einen Marktauftrag eröffnen würden, aber Sie passen auch die Slippage an. Devisenhändler sind es gewohnt, Limit-Orders unterhalb des Geldkurses zu platzieren. Und Limit-Verkaufsaufträge sollten oberhalb des Ask-Kurses platziert werden. Sie können eine Limit-Order aufgeben, um zum Ask-Kurs oder höher zu kaufen. Er wird zum nächstbesten Preis ausgeführt. Zum Beispiel ist der Ask-Preis auf dem Markt 5,8,10,20,35. Die Übermittlung eines Limit-Auftrags zum Kauf bei 10 wird einen Handel bei 5 einleiten. Wenn der Wertpapierauftrag eine Preisänderung enthält und der beste Preis bei 20 liegt, wird Ihr Auftrag nicht ausgeführt, sondern erscheint in den Pickets bei 10. Auf diese Weise haben wir den Umfang möglicher Ausrutscher begrenzt.

 
Vitalii Ananev:

Die Preise haben sich also geändert.

Ich verrate Ihnen einen Tipp:) Mit einem Limit-Auftrag können Sie eine Position eröffnen, als ob Sie einen Marktauftrag eröffnen würden, aber Sie passen auch die Slippage an. Devisenhändler sind es gewohnt, Limit-Orders unterhalb des Geldkurses zu platzieren. Und Limit-Verkaufsaufträge sollten oberhalb des Ask-Kurses platziert werden. Sie können eine Limit-Order aufgeben, um zum Ask-Kurs oder höher zu kaufen. Er wird zum nächstbesten Preis ausgeführt. Zum Beispiel ist der Ask-Preis auf dem Markt 5,8,10,20,35. Die Übermittlung eines Limit-Auftrags zum Kauf bei 10 wird einen Handel bei 5 einleiten. Wenn der Wertpapierauftrag eine Preisänderung enthält und der beste Preis bei 20 liegt, wird Ihr Auftrag nicht ausgeführt, sondern erscheint in den Pickets bei 10. Auf diese Weise haben wir den möglichen Ausrutscher begrenzt.

Dies ist keine Anleitung, sondern das Prinzip der Durchführung des Austauschs. ))
Das ist der Grund, warum ich Aleh vorhin gesagt habe, dass er verstehen soll, wie die Austauschaufträge funktionieren.
Wenn Sie verstehen, wie sie funktionieren, können Sie die Qualität Ihrer Geschäfte verbessern.

Und hier noch ein Tipp für alle, die mit Quik arbeiten.
In Quik können Sie im Laufe des Tages für dasselbe Instrument unterschiedlich ausgerichtete Positionen eröffnen.
Das ist ein guter Witz))
 
Roman:

Das ist kein schlauer Trick, sondern das Prinzip der Tauschausführung. ))
Das ist der Grund, warum ich Oleg vorhin gesagt habe, dass er verstehen soll, wie Börsenaufträge funktionieren.
Wenn Sie wissen, wie sie funktionieren, können Sie die Qualität Ihrer Geschäfte verbessern.

Hier ist ein cleverer Trick für alle, die in Quik arbeiten.
In Quik können Sie tagsüber verschiedene Positionen für ein Instrument eröffnen.
Das ist ein gutes Know-how.)

Ich habe es als Witz über diesen Geldtrick geschrieben, mit einem Smiley am Ende.

Aber ich wusste nichts von den multidirektionalen Positionen im Quick. Erlaubt Ihnen die Börse dies zu tun?

 
Vitalii Ananev:

Ich habe das als Witz über den Trick mit einem Smiley am Ende geschrieben.

Aber ich wusste nichts von den multidirektionalen Positionen in QuickBooks. Erlaubt Ihnen die Börse dies zu tun?

Ich weiß nicht, wer das erlaubt)) Die Börse oder die Quick Exchange Server.
Gewöhnliche Positionen können bis zum Hauptclearing gehalten werden, beim Clearing werden sie in gleichem Umfang geschlossen.
Das heißt, wenn 2 long sind und 1 short, dann bleibt 1 nach dem Clearing long.
Im Laufe des Tages können Sie den Verlust festsetzen, aber nicht realisieren, und wenn Sie eine Gegenbewegung erwarten, können Sie den Verlust reduzieren.
Und wenn die Gegenbewegung eintritt, können Sie den Gewinn aus dem Handel erhalten. Im Allgemeinen ist es in guten Händen ein gutes Werkzeug.

 
Roman:

Ich weiß nicht, wer Ihnen das erlaubt )) Der Austausch oder die Quickie-Server.
Abweichende Positionen können bis zum Hauptclearing gehalten werden, bei dem sie in gleichem Umfang geschlossen werden.
Das heißt, wenn 2 long sind und 1 short, dann bleibt 1 nach dem Clearing long.
Im Laufe des Tages können Sie den Verlust festsetzen, aber nicht realisieren, und wenn Sie eine Gegenbewegung erwarten, können Sie den Verlust reduzieren.
Und wenn die Gegenbewegung eintritt, können Sie den Gewinn aus dem Handel erhalten. Im Allgemeinen ist es ein gutes Werkzeug in geschickten Händen.

Ich verstehe. Ich handle nicht intraday, nur long und long.

 
Oleg Remizov:

Spezifikation des Handelsinstruments:

Auf welchem Marktplatz wird dies gehandelt?

Grund der Beschwerde: