こんにちは、トレーダーの皆さん!今日は、MetaTrader 4で使用できるTheil_Senインジケーターについてお話しします。このインジケーターは、データポイントの集まりから描かれるラインの一般的な軌道を推定するためのツールです。この推定ラインは、まず値の系列に対して回帰分析を行い、その後に得られた回帰直線の傾きを計算することで導き出されます。
データセットの選択肢には、単純移動平均、指数移動平均、終値、高値/安値などがあり、これらは全てMetaTraderのチャートから自動的に収集されます。データの収集方法は1つだけ選べば大丈夫です。また、このインジケーターは複数の通貨を同時にサポートしています。
iTSlope(asymbol,timeframe,regperiod,adataset,rmp,rtc,slope,line_nickname,enable_text,ashift); //この関数がEAで使用するメインの関数です。自分のパラメータを入力してください。 //手動トレーダーもこのインジケーターを直接使用できます。

通常通り、これも複数の通貨を同時に扱うことができ、こちらに「BreakPoint」ツールも含めますが、インジケーター自体には必要ありません。
これがレンジ市場におけるトレンドラインの見た目です:


次に、トレンド市場におけるトレンドラインの姿はこちらです:

デモ用のエキスパートアドバイザーもご紹介します:
//+------------------------------------------------------------------+ //| demo.mq4 | //| Copyright 2020, Everybody Software Corp. | //| https://anywhere.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, Everybody Software Corp." #property link "https://anywhere.com" #property version "1.00" #property strict #include <TheilSen_Indicator.mqh> #include <BreakPoint.mqh>//<--- 必要ない //+------------------------------------------------------------------+ //| エキスパート初期化関数 | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| エキスパート初期化解除関数 | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick() { //---------これらの変数は空で作成されますが、以下のiTSlop()使用後にデータが含まれます。------// double slope=0;//回帰直線の傾き。 ENUM_TIMEFRAMES timeframe=0;//シンボルの時間枠。0は現在のチャートの時間枠を意味します。 int regperiod=20,//回帰期間。何バーで回帰を行いたいですか。 ashift=1;//回帰直線を描くバーのシフト。 string asymbol="",//計算を行いたいシンボル/通貨ペア。""は現在のシンボルを意味します。 adataset="ema_close",//回帰を行いたいデータの種類。 line_nickname="anything_goes_here", rmp,//計算された「市場フェーズ」、市場の具体的な説明。 rtc;//計算された「市場の傾向」、市場の一般的な説明。 bool enable_text=true;//trueに設定すると、テキストデータが現在のチャートに表示されます。 iTSlope(asymbol,timeframe,regperiod,adataset,rmp,rtc,slope,line_nickname,enable_text,ashift);//単一通貨 //if(rmp == "trending")BreakPoint("","","",true,"rmp",rmp,"rtc",rtc,"asymbol",asymbol); } //+------------------------------------------------------------------+
特に、このコンセプトを明確にするために助けてくれたwhroederさんや他の皆さんに感謝します。