トップページ コミュニティ 質問 ナンピンとトレールについて

  • 作成者
    スレッド
  • #5390

    bovovossi
    Participant

    お世話になります。

    ナンピンした際に思い通りの方向にいった際にトレールで全決済する方法はございますでしょうか。

    ご教授いただければ幸いです。

    よろしくお願いいたします。

  • ナンピンとトレールについて

    bovovossi 更新済み 2 月, 3 週間 前 2 メンバー · 7 返信
  • FinTechSchool_Teacher

    管理者
    2022年12月17日 14:25

    通常のナンピンロジックにプラスしてトレーリングストップを設定すれば可能です。

    トレーリングストップには個別のポジションごとに計算を行う「個別トレーリングストップ」と保有ポジション全体に対して計算を行う「全体トレーリングストップ」があります。

    一般的なのは「個別トレーリングストップ」ですが、トレーリングストップの計算を行う際に一度保有ポジションの損益pipsを合計値を出し、その値に対して計算を行うことで「全体トレーリングストップ」を実装することが可能です。

  • bovovossi

    メンバー
    2022年12月25日 10:07

    ありがとうございます。

    ordermodifyの前に損益pipsの合計値を計算するコードを追加するということでしょうか?

    • FinTechSchool_Teacher

      管理者
      2022年12月25日 14:20

      ordermodifyは必ずしも行う必要はありませんが、決済処理を行う前に損益pipsの合計値を計算するコードを追加するというのはお間違いありません。

      その損益にpipsに対してトレーリングストップを行い、条件を満たせば全ポジションを一気に決済することで実装可能です。

  • bovovossi

    メンバー
    2022年12月25日 16:55

    ありがとうございます。

    なんとなくわかったような気がします。

    実践してみてわからないときはまた教えていただければと思います。

    よろしくお願いいたします。

  • bovovossi

    メンバー
    2022年12月29日 08:53

    お世話になります。

    試してみましたが、一部だけ決済され最初の方のナンピンがいくつか残ったりしてしまします・・・

    何か間違っているのでしょうか?

    ご教授いただければ幸いです。

    よろしくお願いいたします。

    void TrailingStop(int MAGIC)

    {

    double stopLoss = 0;

    double profit_buy = 0;

    double profit_sell = 0;

    for(int i = OrdersTotal() – 1; i >= 0; i–)

    {

    //このEAで、エントリーしたポジションなら継続。

    if(!(OrderSelect(i, SELECT_BY_POS) == true && OrderMagicNumber() == MAGIC && OrderSymbol() == Symbol()))

    continue;

    if(OrderType() == OP_BUY)

    {

    profit_buy = profit_buy + OrderProfit() + OrderSwap() + OrderCommission();

    }

    if(OrderType() == OP_SELL)

    {

    profit_sell = profit_sell + OrderProfit() + OrderSwap() + OrderCommission();

    }

    }

    for(int i = OrdersTotal() – 1; i >= 0; i–)

    {

    if(!(OrderSelect(i, SELECT_BY_POS) == true && OrderMagicNumber() == MAGIC && OrderSymbol() == Symbol()))

    continue;

    if(OrderType() == OP_BUY)

    {

    if(profit_buy > 0)

    {

    stopLoss = Bid – TrailWidth * dPoint;

    stopLoss = NormalizeDouble(stopLoss, Digits);

    if(stopLoss >= OrderOpenPrice() && (stopLoss > OrderStopLoss() || OrderStopLoss() == 0))

    {

    bool res = OrderModify(OrderTicket(), OrderOpenPrice(), stopLoss, OrderTakeProfit(), 0);

    }

    }

    }

    else

    if(OrderType() == OP_SELL)

    {

    if(profit_sell > 0)

    {

    stopLoss = Ask + TrailWidth * dPoint;

    stopLoss = NormalizeDouble(stopLoss, Digits);

    if(stopLoss <= OrderOpenPrice() && (stopLoss < OrderStopLoss() || OrderStopLoss() == 0))

    {

    bool res = OrderModify(OrderTicket(), OrderOpenPrice(), stopLoss, OrderTakeProfit(), 0);

    }

    }

    }

    }

    }

  • FinTechSchool_Teacher

    管理者
    2022年12月29日 19:22

    添付いただきありがとうございます!

    恐れ入りますが、mql4ファイルを添付いただくか、下記メールアドレスを送付していただくことは可能でしょうか?

    techtraders.contact@gmail.com

    よろしくお願いいたします。

    • bovovossi

      メンバー
      2023年1月3日 21:26

      お世話になっております。

      メールお送りさせていただきました。

      お手数ですが、よろしくお願いいたします。

返信にはログインが必要です。

最初の投稿
00 投稿 2018年6月
現在
無料カウンセリングはこちら
無料カウンセリングはこちら