コーディングのヘルプ - ページ 689

 

Mladenさん、こんにちは。

FXのデータで類似性分析をしたいのですが、どうすればいいですか?

つまり、20,000本の履歴の中で、最後の1時間足(OHLC)と最も相関のある1時間足(OHLCで同じか最も類似した値)のバーを見つけたいのですが、このようなことは可能でしょうか?

20.000本の履歴の中で最後のバーの値の類似性を見つけるには、ピアソンの相関係数で十分ですか? この分析をスクリプト(またはEA)でmetatradervで行うことは可能ですか? ありがとうございます。

 

親愛なるmladeさん。

初めてMTFインジケータを作りました

しかし、色は黒です。

どうしたら直せますか?

ありがとうございました。

ファイル:
MTF xb4d.mq4  4 kb
xb4d.mq4  4 kb
 
bilbao:

親愛なるmladeさん。

初めてMTFインジケータを作りました

しかし、色は黒です。

どうしたら直せますか?

ありがとうございました。

indicator_color1 プロパティを 任意の色に設定します。
 
nevar:

Mladenさん、こんにちは。

FXのデータで類似性分析をしたいのですが、どうすればいいですか?

つまり、20,000本の履歴の中で、最後の1時間足(OHLC)と最も相関のある1時間足(OHLCで同じか最も類似した値)のバーを見つけたいのですが、このようなことは可能でしょうか?

20.000本の履歴の中で最後のバーの値の類似性を見つけるには、ピアソン相関係数で十分ですか? この分析は、スクリプト(またはEA)でmetatradervで行うことが可能ですか? ありがとうございます。

Mladenです。

それについて何かコメントはありますか?

 
nevar:

ムラデンです。

それについて何かコメントは?

ピアソンでそれを行うことができ、単にピアソンの最大値を持つバーを見つけることができます - ピアソンはCPU負荷が高くないので、任意の時間枠と任意の数のバーに対して それを行うことができます。しかし、インジケータからそれを行うのがベストです(いくつかの配列操作を避けるため)。
 
mladen:
indicator_color1 プロパティに好きな色を設定してください(現在は黒に設定されています)。

mladenさん

やるけど、1色しかない

ブルとベア用に2色必要です。

 
bilbao:

mladenさん

やるけど、1色しかない

強気と弱気の2色が必要です。

2色のヒストグラムを作るには、1つのバッファだけでなく、2つのバッファを使用する必要があります。
 
mladen:
この場合,別のコードを書く必要があります(2色ヒストグラムの場合は,1つのバッファだけでなく,2つのバッファを使用する必要があります).

でいいんでしょうか?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4|

//|------------------------------------------------------------------+


#property indicator_separate_window (インジケーターウィンドウ)

#property indicator_buffers 2 (インジケーターバッファー2)

#property indicator_color1 LimeGreen (インジケータカラー1)

#property indicator_width1 2 (インジケータ幅1)

#property indicator_color2 ペールヴァイオレットレッド

#property indicator_width2 2 (インジケータ幅2)

//---- 入力パラメーター

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

期間_W1 10080

期間_MN1 43200

インジケーターでTimeFrameを設定する際は、使用するタイムフレームの数値を使用する必要があります。

インジケータ入力でTimeFrameの値を設定する際は、使用したいタイムフレームの数値を使用してください。

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータライン

SetIndexStyle(0, DRAW_HISTOGRAM).SetIndexStyle(0,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(1, DRAW_HISTOGRAM)を設定します。

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1); SetIndexBuffer(1, ExtMapBuffer1);

//データウィンドウとインジケータサブウィンドウのラベルの名前

スイッチ(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="期間_M5"; break;

case 15 : TimeFrameStr="期間_M15"; break;

case 30 : TimeFrameStr="期間_M30"; break;

case 60 : TimeFrameStr="期間_H1"; break;

ケース240 :TimeFrameStr="Period_H4";ブレーク。

ケース1440 :TimeFrameStr="Period_D1"、break。

case 10080 : TimeFrameStr="期間_W1"; break;

case 43200 : TimeFrameStr="期間_MN1"; break;

default : TimeFrameStr="現在のタイムフレーム";

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+") ");

return(0);

}

//----

//+------------------------------------------------------------------+

//||

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// 定義されたタイムフレームを現在のタイムフレームにプロットする

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limit;i++)

{

if (Time[i]<TimeArray[y])y++。

/***********************************************************

メインインジケーターのループを下に追加します。

iNameまたはiCustomで既存のインジケータを参照できます。

ルール1:必要な値をすべて上記の外部入力に追加する。

ルール2:インジケーターの時間枠に'TimeFrame'を使用します。

ルール3:インジケーターのシフト値には'y'を使用します。

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("買いアラート " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}。

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}。

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]);

return(0);

}

//+------------------------------------------------------------------+

 
bilbao:

でいいんでしょうか?

//+------------------------------------------------------------------+

//| MTF_xb4d.mq4|

//|------------------------------------------------------------------+


#property indicator_separate_window (インジケーターウィンドウ)

#property indicator_buffers 2 (インジケーターバッファー2)

#property indicator_color1 LimeGreen (インジケータカラー1)

#property indicator_width1 2 (インジケータ幅1)

#property indicator_color2 ペールヴァイオレットレッド

#property indicator_width2 2 (インジケータ幅2)

//---- 入力パラメーター

/*************************************************************************

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

期間_W1 10080

期間_MN1 43200

インジケーターでTimeFrameを設定する際は、使用するタイムフレームの数値を使用する必要があります。

インジケータ入力でTimeFrameの値を設定する際は、使用したいタイムフレームの数値を入力してください。

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

//+------------------------------------------------------------------+

//| カスタムインジケータ初期化関数

//+------------------------------------------------------------------+

int init()

{

//---- インジケータライン

SetIndexStyle(0, DRAW_HISTOGRAM).SetIndexStyle(0,DRAW_HISTOGRAM)を設定します。

SetIndexStyle(1, DRAW_HISTOGRAM)を設定します。

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1); SetIndexBuffer(1, ExtMapBuffer1);

//データウィンドウとインジケータサブウィンドウのラベルの名前

スイッチ(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="期間_M5"; break;

case 15 : TimeFrameStr="期間_M15"; break;

case 30 : TimeFrameStr="期間_M30"; break;

case 60 : TimeFrameStr="期間_H1"; break;

ケース240 :TimeFrameStr="Period_H4";ブレーク。

ケース1440 :TimeFrameStr="Period_D1"、break。

case 10080 : TimeFrameStr="期間_W1"; break;

case 43200 : TimeFrameStr="期間_MN1"; break;

default : TimeFrameStr="現在のタイムフレーム";

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+") ");

return(0);

}

//----

//+------------------------------------------------------------------+

//||

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// 定義されたタイムフレームを現在のタイムフレームにプロットする

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limit;i++)

{

if (Time[i]<TimeArray[y])y++。

/***********************************************************

メインインジケーターのループを下に追加します。

iNameまたはiCustomで既存のインジケータを参照できます。

ルール1:必要な値をすべて上記の外部入力に追加する。

ルール2:インジケーターの時間枠に'TimeFrame'を使用します。

ルール3:インジケーターのシフト値には'y'を使用します。

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("買いアラート " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}。

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}。

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]);

return(0);

}

//+------------------------------------------------------------------+

思い通りの色が表示されていますか?
 
mladen:
思い通りの色が出ていますか?

親愛なるmladenさん。

https://www.forex-tsd.com/forum/debates-discussions/1131-multi-timeframe-indicators/page762#comment_1831838 で、そのmtfを見つけました。

すべてのメンバーに、あなたの助けをどうもありがとう。

あなたの人生に神の祝福を