编码帮助 - 页 689

 

嗨,Mladen。

我想在外汇数据中做一些相似性分析。

我的意思是,我想找出在20000个条形图(OHLC)历史中与最后一个条形图(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。

我想在外汇数据中做一些相似性分析。

我的意思是,我想找出在20000个条形图(OHLC)历史中与最后一个条形图(OHLC)最相关的1小时条形图(OHLC中相同或最相似的值)。

皮尔逊相关系数是否足以找出20,000条历史中最后一条杠的相似性?是否可以用脚本(或EA)在metatraderv中进行这种分析?

Mladen,

对这个问题有什么看法吗?

 
nevar:

姆拉登。

对此有什么意见吗?

你可以用Pearson来做,只需找到Pearson值最大的那个柱子--你可以对任何时间框架和任何数量的柱子 进行操作,因为Pearson不占用CPU。但最好从一个指标中进行(以避免一些数组操作)。
 
mladen:
将#属性indicator_color1设置为所需的颜色(现在是设置为黑色)。

先生Mladen。

我做了,但只有一种颜色

我需要两种颜色来表示牛市和熊市

 
bilbao:

先生Mladen。

我做了,但只有一种颜色

我需要两种颜色来表示牛市和熊市

那么你必须以不同的方式编码(你必须使用两个缓冲区,而不是只有一个用于双色柱状图)。
 
mladen:
然后你必须以不同的方式编码(你必须使用两个缓冲区,而不是只有一个用于双色直方图)

是正确的吗,先生?

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

//| MTF_xb4d.ǞǞǞ

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


#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 LimeGreen

#属性 indicator_width1 2

#属性 indicator_color2 PaleVioletRed

#属性 indicator_width2 2

//---- 输入参数

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

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

周期_W1 10080

PERIOD_MN1 43200

你必须使用你想使用的时间框架的数值。

当你用指标输入设置 "TimeFrame "值时,你必须使用你想使用的时间框架的数值。

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

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

外部 bool SoundAlerts=false;

double ExtMapBuffer1[];

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

//|自定义指标初始化函数

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

int init()

{

//---- 指标线

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- DataWindow和指标子窗口标签的名称

switch(TimeFrame)

{

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

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 :TimeFrameStr="Period_H4"; break;

case 1440 :时间框架Str="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

默认情况下 : 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++)

{

如果(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)。

}

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

如果(SoundAlerts){Alert("Buy Alert" + Symbol() + " [" + Period() + " ] ");PlaySound("alert.wav");}

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

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

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

return(0);

}

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

 
bilbao:

是正确的吗,先生?

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

//| MTF_xb4d.ǞǞǞ

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


#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 LimeGreen

#属性 indicator_width1 2

#属性 indicator_color2 PaleVioletRed

#属性 indicator_width2 2

//---- 输入参数

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

PERIOD_M1 1

PERIOD_M5 5

PERIOD_M15 15

PERIOD_M30 30

PERIOD_H1 60

PERIOD_H4 240

PERIOD_D1 1440

周期_W1 10080

PERIOD_MN1 43200

你必须使用你想使用的时间框架的数值。

当你用指标输入设置 "TimeFrame "值时,你必须使用你想使用的时间框架的数值。

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

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

外部 bool SoundAlerts=false;

double ExtMapBuffer1[];

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

//|自定义指标初始化函数

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

int init()

{

//---- 指标线

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- DataWindow和指标子窗口标签的名称

switch(TimeFrame)

{

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

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 :TimeFrameStr="Period_H4"; break;

case 1440 :时间框架Str="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

默认情况下 : 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++)

{

如果(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)。

}

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

如果(SoundAlerts){Alert("Buy Alert" + Symbol() + " [" + Period() + " ] ");PlaySound("alert.wav");}

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

如果(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。

非常感谢您对所有会员的帮助。

上帝保佑你的生活

原因: