FORTS SLとTP

 

こんにちは。

SLとTPは未使用

明確にしてください。

ストップロス、テイクプロフィットは既存のポジションに設定する

それとも、注文が設定されているとき、つまりまだポジションがオープンしていないときに、これらのパラメータを設定することができるのでしょうか?

注文でパラメータを指定できる場合、成行注文(ポジション価格が 確定していない)では、どのようにSLとTPを計算すればよいのでしょうか。

 
prostotrader:

こんにちは。

STとTPは未使用

明確にしてください。

ストップロス、テイクプロフィットは既存のポジションに設定する

それとも、注文が設定されているとき、つまりまだポジションがオープンしていないときに、これらのパラメータを設定することができるのでしょうか?

注文でパラメータを指定できる場合、成行注文(ポジション価格が 確定していない)では、どのようにSLとTPを計算すればよいのでしょうか。


任意のパラメータを指定することができ、レベルはサーバーに保存されます。 同じサーバーでストップの実行を 拒否されることもあります。
 
Sergey Chalyshev:

好きなように設定できる、レベルはサーバーに保存される。 同じサーバーでストップの実行が拒否される場合が あります。


だから、サーバーから拒否されるのは困るんです。

すなわち、(念のため)既存のポジションに設定する方が良いのでしょうか?

 
prostotrader:


だから、サーバー拒否をされるのは困るんです。

すなわち、既存のポジションにインストールした方が良いのか(念のため)。


ストップは一切設定せず、リミッターをかける。
 
prostotrader:


だから、サーバー拒否をされるのは困るんです。

すなわち、既存のポジションにインストールした方が良いのか(念のため)。

私は株式執行に不案内なのですが、それにしても。スリッページが発生した場合は、設定したサイズと全く同じ水準になります。個人的に確認したわけではありませんが、SLやTPがないと注文が早く執行されると書いてありました。 もし本当にそうなら、ポジションが 開くまで待ってから作業した方が良いのではないでしょうか。
 
Sergey Chalyshev:

ストップは全く設定しない方が良い、制限を設ける。


だから、今まで使ったことがないんです。

しかし、今私はCFORTSOrderクラスを書いていて、それはSLとTPを設定する関数を持っているはずです。

追加

POSITION_SL


POSITION_TP

これは最低レベルなのでしょうか?

 
Vitaly Muzichenko:
私は株式執行に不案内なのですが、それでも。スリッページがある場合は、設定したサイズと全く同じ水準になります。個人的に確認したわけではありませんが、SLやTPがないと注文が早く執行されると書いてありました。 もし本当にそうなら、ポジションのオープンを待ってから 作業した方が良さそうです。

感謝
 
prostotrader:

ありがとうございました。
もし差し支えなければ、プリセットオーダーの有無による約定 スピードを個人的に確認することで、「SLとTPがない方が約定が 速い」という事実を証明することもできます。人によっては役に立つと思います。
 
Vitaly Muzichenko:
私は交換実行の文盲ですが、それにもかかわらず。全体としての注文は、既存のポジションに置く方が、スリッページがあったとしても、レベルは設定したサイズにぴったりとなります。個人的に確認したわけではありませんが、SLやTPがないと注文が早く執行されると書いてありました。 もし本当にそうなら、ポジションが 開くまで待ってから作業した方が良いのではないでしょうか。


逆指値注文自体はサーバーに保存され、サーバー自身が条件に応じて注文を出すので、非常に早く発動します。これにより、マーケットでクローズする場合と比較して、サーバーへのPingを節約することができます。

しかし、リミッターの方が信頼性が高く、スピードも比較にならないほど速い(レイテンシー=0)。

物理的に速度を測定したわけではありませんが、目で見てわかるのは、価格がストップに到達せず、取引が成立して履歴に表示された後、チャートに価格と取引が表示され始めるということです。

 
prostotrader:


だから、今まで使ったことがないんです。

しかし、今私はCFORTSOrderクラスを書いていて、それはSLとTPを設定する関数を持っているはずです。

追加

POSITION_SL


POSITION_TP

これは最低レベルなのでしょうか?



サーバーに保存されている松葉杖を使わずに機能を書いてみてはいかがでしょうか。

限界と直接書き込む。せめてTRは制限付きで、SLは手に入れた時に。

 
Sergey Chalyshev:


サーバーに保存されている松葉杖を使わずに、機能を書いてみてはいかがでしょうか。

制限付きで一気に書く。せめてTRは制限付きで、SLはできる範囲で。


そして、おそらくクラスコードを公開すると思うからです。

私は必要ないが、初心者は必要かもしれない。

void CFORTSOrder::SetSlTp(const string a_symbol, const double a_sl=0, const double a_tp=0)
{
  if(PositionSelect(a_symbol))
  {
    ulong pos_ticket = ulong(PositionGetInteger(POSITION_TICKET));
    ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
    double sl_level = PositionGetDouble(POSITION_SL);
    double tp_level = PositionGetDouble(POSITION_TP);
    MqlTradeRequest request = {0};
    MqlTradeResult  result  = {0};
    mem_magic = magic_storage + 1;
    if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
    request.symbol = a_symbol;
    request.action = TRADE_ACTION_SLTP;
    request.comment = "Установка SL/TP";
    request.magic = mem_magic;
    request.position = pos_ticket;
    switch(pos_type)
    {
      case POSITION_TYPE_BUY:
        if (a_sl == 0)
        {
          request.sl = sl_level;
        }
        else
        if(a_sl <= sl_level)
        {
          request.sl = a_sl;
        }
        else request.sl = sl_level;
        if (a_tp == 0)
        {
          request.tp = tp_level;
        }
        else
        if(a_tp >= tp_level)
        {
          request.tp = a_tp;
        }
        else request.tp = tp_level;
      break;
      case POSITION_TYPE_SELL:
        if (a_sl == 0)
        {
          request.sl = sl_level;
        }
        else
        if(a_sl >= sl_level)
        {
          request.sl = a_sl;
        }
        else request.sl = sl_level;
        if (a_tp == 0)
        {
          request.tp = tp_level;
        }
        else
        if(a_tp <= tp_level)
        {
          request.tp = a_tp;
        }
        else request.tp = tp_level;
      break;
    }
    if(OrderSend(request, result))
    {
      if(result.retcode == TRADE_RETCODE_DONE)
      {
        magic_storage = mem_magic;
        Print(__FUNCTION__, ": SL и/или TP установлен.");
      }
    }
    else Print(__FUNCTION__, ": SL и/или TP не установлен.");
  }
}