記事"独自のトレーリングストップ注文を作成する方法"についてのディスカッション

 

新しい記事 独自のトレーリングストップ注文を作成する方法 はパブリッシュされました:

トレーダーの基本原則 - 利得を増やし、損失を削る!この論説では基本技術の一つ、この原則に従うことを可能にする - 保護的停止レベル (ストップ・ロスレベル) をポジションの利得が増大した時点で動かす、すなわちトレーリングストップレベルを考察する。ここではSAR と NRTR インジケーターに基づいてトレーリングストップをするためのクラスを作成する手続きをステップを追って示す。誰でもこのトレーリングストップをそのエキスパートに挿入し、あるいは独立にそれをそのアカウントのポジションを制御するために使用することができる。

図 11. Sample_TrailingStop をスタートした後のチャート上のボタンとインジケーター

作者: Dmitry Fedoseev

 

とても役に立つ。ありがとう。


スティーブン

 

末尾の例はエラーで失敗する。

 
どちらか指定してください。
 

プログラマーの皆さん、mql5について教えてください!

mql4と同じように、何のクラスも使わずに普通のトレーリング関数を使用することは可能でしょうか?例えば、TradeSizeOptimised関数がMoving Averages.mq5で実装されているように。

例題、記事、フォーラムなど、あらゆるものを探しましたが、何も見つかりませんでした。もう完全に迷ってしまいました...。もしかしたら、どなたか準備のできたバリアントを持っているかもしれません。

 
Setslav:

プログラマーの皆さん、mql5について教えてください!

mql4と同じように、何のクラスも使わずに普通のトレーリング関数を使用することは可能でしょうか?例えば、TradeSizeOptimised関数がMoving Averages.mq5で実装されているように。

例題、記事、フォーラムなど、あらゆるものを探しましたが、何も見つかりませんでした。もう完全に迷ってしまいました...。もしかしたら、どなたか準備のできたバリアントをお持ちかもしれません。


どうぞ

int TrailingStop()
  {
   if(PositionSelect(Symbol())) // ポジションを選択
     {
      //MqlTradeRequest m_request;// サーバへのリクエストの構造を宣言する
      //MqlTradeResult m_result;// サーバーレスポンス構造体の宣言
      double Bid = SymbolInfoDouble(Symbol(), SYMBOL_BID);                         // 入札価格を変数に書き込む
      double Ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK);                         // アスク価格に書き込む
      double OpenPrice=PositionGetDouble(POSITION_PRICE_OPEN);                     // ポジションの始値を変数に書き込む
      double PositionSL=PositionGetDouble(POSITION_SL);                            // ストップ・ロス・レベルを変数に書き込む
      double PositionTP=PositionGetDouble(POSITION_TP);                            // 利益確定レベルを変数に書き込む

      if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) // ポジションタイプを定義する
        {
         if(TrailWhileMinus==true || Bid-OpenPrice>_Point*Trail) // 最初の移籍で損益分岐点に達するまで、トロールはしない。
           {
            if(Bid-PositionSL>Trail*_Point) //ストップ・ロスの移動が必要であることの基本条件。
              {
               //--- 構造体にデータを書き込む
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Bid-Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                              // リクエストをサーバーに送信する
              }
           }
        }
      else
        {
         if(TrailWhileMinus==true || OpenPrice-Ask>_Point*Trail) // 最初の移籍で損益分岐点に達するまで、トロールはしない。
           {
            if(PositionSL-Ask>Trail*_Point) //ストップ・ロスの移動が必要であることの基本条件。
              {
               //--- 構造体にデータを書き込む
               request.action = TRADE_ACTION_SLTP;
               request.symbol = Symbol();
               request.sl     = NormalizeDouble(Ask+Trail*_Point,_Digits);
               request.tp     = NormalizeDouble(PositionTP,_Digits);
               //---
               return(OrderSend(request,result));                            // リクエストをサーバーに送信する
              }
           }
        }
     }
   return(0);
  }
削除済み  
sergey1294:

どうぞ

私は(おそらく理由がないわけではないが)resultはパラメータとして渡した方がいいと考えている :)

そうでないと、分析しようがない。なんとなく良くないですね...。

追記

TrailingStopBuyとTrailingStopSellの2つの関数も作ります。

 
Interesting:

私は(おそらく理由がないわけではないが)、結果はパラメータとして渡したほうがいいと考えている :)

そうでなければ、分析する方法がない。なんとなく良くないですね...。

追記

私ならTrailingStopBuyとTrailingStopSellの2つの関数を作ります。

まあ、その人に例をあげたのは、その人がすでに普通のトレイリングの書き方を頭に叩き込んでいて、テスターでは原理的にエラーなく動くだろうし、この構造も普通に動くだろうと少し考えさせたからです。
削除済み  
sergey1294:
まあ、彼はすでに普通の末尾を書く方法を彼の脳を作ったので、私は、男に例を与え、その後、彼は少し考えてみましょう、それは原則的にテスターで、エラーなしで動作し、このデザインは正常に動作します。
例として、もちろんそれは行いますが、結果を 分析することなく、(遅かれ早かれ)エラーの多くが存在する場合...
 
sergey1294:

お待たせしました。

ありがとう
 

sergey1294 です、

本当にありがとう!

もう一つ小さな疑問があるのですが、マジックナンバーによるチェックを関数に追加する方法を教えてください。私はそのようなチェックを挿入しようとしています:

if (OrderGetInteger(ORDER_MAGIC)==EA_Magic)
{
.....
}
..... but something it breaks the whole trade.....