编码帮助 - 页 198 1...191192193194195196197198199200201202203204205...786 新评论 Mladen Rakic 2013.11.17 08:44 #1971 cain82: 谢谢你的回答 但是,我怎样才能在一般的图表上得到一个MA的角度线,就像在这个di hystogramm代码中一样? //---- indicator settings #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 LimeGreen #property indicator_color2 FireBrick #property indicator_color3 Yellow #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 //---- indicator parameters extern int TimeFrame = 60; extern int MAMode = 0; extern int MAPeriod = 50; extern int Price = 4; extern double AngleTreshold = 0.25; extern int StartMAShift = 2; extern int EndMAShift = 0; extern int MaxBars = 500; string TF1; //---- indicator buffers double UpBuffer[]; double DownBuffer[]; double ZeroBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- 2 additional buffers are used for counting. IndicatorBuffers(3); //---- drawing settings SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 ); //---- 3 indicator buffers mapping if(!SetIndexBuffer(0,UpBuffer) && !SetIndexBuffer(1,DownBuffer) && !SetIndexBuffer(2,ZeroBuffer)) Print("cannot set indicator buffers!"); SetIndexLabel(0,""); SetIndexLabel(1,""); SetIndexLabel(2,""); switch(TimeFrame) { case 1: TF1="M1"; break; case 5: TF1="M5"; break; case 15: TF1="M15"; break; case 30: TF1="M30"; break; case 60: TF1="H1"; break; case 240: TF1="H4"; break; case 1440: TF1="D1"; break; case 10080: TF1="W1"; break; case 43200: TF1="MN1"; break; default: {TimeFrame = Period(); init(); return(0);} } IndicatorShortName("MAAngle MTF * "+TF1+" *"); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| The angle for EMA | //+------------------------------------------------------------------+ int start() { double fEndMA, fStartMA; double fAngle, mFactor, dFactor; int nLimit, i; int nCountedBars; double angle; int ShiftDif; string Sym; if (MAMode >= 4) MAMode = 0; if(EndMAShift >= StartMAShift) { Print("Error: EndMAShift >= StartMAShift"); StartMAShift = 6; EndMAShift = 0; } nCountedBars = IndicatorCounted(); dFactor = 2*3.14159/180.0; mFactor = 10000.0; Sym = StringSubstr(Symbol(),3,3); if (Sym == "JPY") mFactor = 100.0; ShiftDif = StartMAShift-EndMAShift; mFactor /= ShiftDif; //---- check for possible errors if(nCountedBars<0) return(-1); //---- last counted bar will be recounted if(nCountedBars>0) nCountedBars--; nLimit=Bars-nCountedBars; nLimit=MathMax(nLimit,TimeFrame/Period()); nLimit=MathMin(nLimit,MaxBars ); //---- main loop for(i=0; i<nLimit; i++) { int y = iBarShift(NULL,TimeFrame,Time); if (TimeFrame<Period()) TimeFrame=Period(); fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift); fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift); // 10000.0 : Multiply by 10000 so that the fAngle is not too small // for the indicator Window. fAngle = mFactor * (fEndMA - fStartMA)/2.0; //fAngle = MathArctan(fAngle)/dFactor; DownBuffer = 0.0; UpBuffer = 0.0; ZeroBuffer = 0.0; if(fAngle > AngleTreshold) UpBuffer = fAngle; else if (fAngle < -AngleTreshold) DownBuffer = fAngle; else ZeroBuffer = fAngle; } return(0); } //+------------------------------------------------------------------+ 该指标正在计算类似于斜率的东西(不是角度,因为角度在时间序列图上永远无法精确计算,也不是精确的斜率,因为它试图使用一些不同于斜率所需的数学方法),对于MA的每一个柱子。如果你想反转它(我只是猜测你到底想要什么),你将得到那个起始MA作为结果(所以你将在图表上得到一个移动平均线)。 如果你想延长最后一个柱状体的斜率,那么你可以使用类似于这个指标的东西https://www.mql5.com/en/forum/173235/page36,用最后一个柱状体的斜率来延长移动平均线。 Cainah 2013.11.17 09:02 #1972 mladen: 该指标正在计算类似于斜率的东西(不是角度,因为角度在时间序列图上永远无法精确计算,也不是精确的斜率,因为它试图使用一些不同于斜率所需的数学方法),对于ma的每一个柱子。如果你想反转它(我只是猜测你到底想要什么),你将得到那个起始ma作为结果(所以你将在图表上得到一个移动平均值)。 如果你想延长最后一个柱状体的斜率,那么你可以使用类似于这个指标的东西https://www.mql5.com/en/forum/173235/page36,用最后一个柱状体的斜率来延长移动平均线。 谢谢你Mladen!这和我想要的非常相似 你在MTF模式下也有同样的情况吗? ryuma 2013.11.17 11:25 #1973 毫升登... 我需要你的帮助来修改这个指标https://www.mql5.com/en/forum/general Antonsak 2013.11.17 19:03 #1974 Mladen, 使用移动平均线 的数据计算BBands。 作为一个应用于非标准MT4袜的例子。 作为AllAverages的移动平均线类型之一的例子。 是使用平均值的真实数据的BBands。 没有BBands SMA,使用不同类型的移动平均线。 Mladen Rakic 2013.11.17 19:13 #1975 Antonsan: Mladen,使用移动平均线的数据计算BBands。 作为应用于非标准的MT4股票的例子。 作为AllAverages的移动平均线类型之一的例子。 是一个使用平均线真实数据的BBands。 没有BBands SMA,有不同类型的移动平均线。 Antonsan 如果你使用iStdDevOnArry()函数,你可以在任何数值上计算布林带。 用你想使用的值填充一个数组(例如任何平均数的值),用iStdDevOnArray()计算其偏差,用iMaOnArray()计算布林带的中线(使用iStrDevOnArry()使用的同一个数组),然后布林带很简单:中线+偏差*乘数为上带,中线-偏差*乘数为下带 Mladen Rakic 2013.11.17 19:49 #1976 安东山 这里有一个非常简单的示例代码,你可以用它作为模板来构建任何数值的布林带。你所要做的就是替换这一行中的iRsi()调用。 for(i=limit; i >= 0; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i) 。 用所需的函数或任何自定义指标的iCustom()调用,它将计算出该值的布林带。 附加的文件: simple_bb_of_rsi.mq4 2 kb metrus 2013.11.18 11:02 #1977 mladen: person77 又增加了一个选项。AllowCloseEqualOpen。所以你现在可以用这个选项来控制它。 伟大的工作mlanden! 再次感谢。 bamik 2013.11.21 13:53 #1978 用于EA的好指标 你好。 这个指标有5条线(中枢+R1+R2+S1+S2)。 我想做一个基于这些线的EA。不幸的是,这些线没有缓冲区。我需要有人为每条线分配一个缓冲区。 请帮助我 最好的问候。 巴米克 附加的文件: target_lines.zip 2 kb Mladen Rakic 2013.11.21 14:59 #1979 bamik: 你好。这个指标有5条线(中枢+R1+R2+S1+S2)。 我想做一个基于这些线的EA。不幸的是,这些线没有缓冲区。我需要有人为每条线分配一个缓冲区。 请帮助我 最好的问候。 巴米克 巴尼克 你是否查看过这个主题:https://www.mql5.com/en/forum/172894 在这个主题中,有很多使用缓冲区的枢轴指标。 bamik 2013.11.22 05:57 #1980 mladen: barnik你是否检查过这个主题:https://www.mql5.com/en/forum/172894 在那条线上有很多使用缓冲区的中枢指标 谢谢小鹿mladen的帮助。 我下载并测试了这些指标中的大部分。只有 "AutoPivotIndicator_ver5 "指标与 "TARGETS-LINES "一样。 不幸的是,这个指标也不使用缓冲区而使用对象。 你是否介意改变我的简单指标。(为每一行分配一个缓冲区),这是一个小指标。 谢谢 1...191192193194195196197198199200201202203204205...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你的回答
但是,我怎样才能在一般的图表上得到一个MA的角度线,就像在这个di hystogramm代码中一样?
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 LimeGreen
#property indicator_color2 FireBrick
#property indicator_color3 Yellow
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
//---- indicator parameters
extern int TimeFrame = 60;
extern int MAMode = 0;
extern int MAPeriod = 50;
extern int Price = 4;
extern double AngleTreshold = 0.25;
extern int StartMAShift = 2;
extern int EndMAShift = 0;
extern int MaxBars = 500;
string TF1;
//---- indicator buffers
double UpBuffer[];
double DownBuffer[];
double ZeroBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(3);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );
//---- 3 indicator buffers mapping
if(!SetIndexBuffer(0,UpBuffer) &&
!SetIndexBuffer(1,DownBuffer) &&
!SetIndexBuffer(2,ZeroBuffer))
Print("cannot set indicator buffers!");
SetIndexLabel(0,"");
SetIndexLabel(1,"");
SetIndexLabel(2,"");
switch(TimeFrame)
{
case 1: TF1="M1"; break;
case 5: TF1="M5"; break;
case 15: TF1="M15"; break;
case 30: TF1="M30"; break;
case 60: TF1="H1"; break;
case 240: TF1="H4"; break;
case 1440: TF1="D1"; break;
case 10080: TF1="W1"; break;
case 43200: TF1="MN1"; break;
default: {TimeFrame = Period(); init(); return(0);}
}
IndicatorShortName("MAAngle MTF * "+TF1+" *");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| The angle for EMA |
//+------------------------------------------------------------------+
int start()
{
double fEndMA, fStartMA;
double fAngle, mFactor, dFactor;
int nLimit, i;
int nCountedBars;
double angle;
int ShiftDif;
string Sym;
if (MAMode >= 4) MAMode = 0;
if(EndMAShift >= StartMAShift)
{
Print("Error: EndMAShift >= StartMAShift");
StartMAShift = 6;
EndMAShift = 0;
}
nCountedBars = IndicatorCounted();
dFactor = 2*3.14159/180.0;
mFactor = 10000.0;
Sym = StringSubstr(Symbol(),3,3);
if (Sym == "JPY") mFactor = 100.0;
ShiftDif = StartMAShift-EndMAShift;
mFactor /= ShiftDif;
//---- check for possible errors
if(nCountedBars<0) return(-1);
//---- last counted bar will be recounted
if(nCountedBars>0) nCountedBars--;
nLimit=Bars-nCountedBars;
nLimit=MathMax(nLimit,TimeFrame/Period());
nLimit=MathMin(nLimit,MaxBars );
//---- main loop
for(i=0; i<nLimit; i++)
{
int y = iBarShift(NULL,TimeFrame,Time);
if (TimeFrame<Period()) TimeFrame=Period();
fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);
fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);
// 10000.0 : Multiply by 10000 so that the fAngle is not too small
// for the indicator Window.
fAngle = mFactor * (fEndMA - fStartMA)/2.0;
//fAngle = MathArctan(fAngle)/dFactor;
DownBuffer = 0.0;
UpBuffer = 0.0;
ZeroBuffer = 0.0;
if(fAngle > AngleTreshold)
UpBuffer = fAngle;
else if (fAngle < -AngleTreshold)
DownBuffer = fAngle;
else ZeroBuffer = fAngle;
}
return(0);
}
//+------------------------------------------------------------------+
该指标正在计算类似于斜率的东西(不是角度,因为角度在时间序列图上永远无法精确计算,也不是精确的斜率,因为它试图使用一些不同于斜率所需的数学方法),对于MA的每一个柱子。如果你想反转它(我只是猜测你到底想要什么),你将得到那个起始MA作为结果(所以你将在图表上得到一个移动平均线)。
如果你想延长最后一个柱状体的斜率,那么你可以使用类似于这个指标的东西https://www.mql5.com/en/forum/173235/page36,用最后一个柱状体的斜率来延长移动平均线。
该指标正在计算类似于斜率的东西(不是角度,因为角度在时间序列图上永远无法精确计算,也不是精确的斜率,因为它试图使用一些不同于斜率所需的数学方法),对于ma的每一个柱子。如果你想反转它(我只是猜测你到底想要什么),你将得到那个起始ma作为结果(所以你将在图表上得到一个移动平均值)。 如果你想延长最后一个柱状体的斜率,那么你可以使用类似于这个指标的东西https://www.mql5.com/en/forum/173235/page36,用最后一个柱状体的斜率来延长移动平均线。
谢谢你Mladen!这和我想要的非常相似
你在MTF模式下也有同样的情况吗?
毫升登...
我需要你的帮助来修改这个指标https://www.mql5.com/en/forum/general
Mladen,
使用移动平均线 的数据计算BBands。
作为一个应用于非标准MT4袜的例子。
作为AllAverages的移动平均线类型之一的例子。
是使用平均值的真实数据的BBands。
没有BBands SMA,使用不同类型的移动平均线。
Mladen,
使用移动平均线的数据计算BBands。
作为应用于非标准的MT4股票的例子。
作为AllAverages的移动平均线类型之一的例子。
是一个使用平均线真实数据的BBands。
没有BBands SMA,有不同类型的移动平均线。Antonsan
如果你使用iStdDevOnArry()函数,你可以在任何数值上计算布林带。
用你想使用的值填充一个数组(例如任何平均数的值),用iStdDevOnArray()计算其偏差,用iMaOnArray()计算布林带的中线(使用iStrDevOnArry()使用的同一个数组),然后布林带很简单:中线+偏差*乘数为上带,中线-偏差*乘数为下带
安东山
这里有一个非常简单的示例代码,你可以用它作为模板来构建任何数值的布林带。你所要做的就是替换这一行中的iRsi()调用。
for(i=limit; i >= 0; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i) 。
用所需的函数或任何自定义指标的iCustom()调用,它将计算出该值的布林带。
person77 又增加了一个选项。AllowCloseEqualOpen。所以你现在可以用这个选项来控制它。
伟大的工作mlanden! 再次感谢。
用于EA的好指标
你好。
这个指标有5条线(中枢+R1+R2+S1+S2)。
我想做一个基于这些线的EA。不幸的是,这些线没有缓冲区。我需要有人为每条线分配一个缓冲区。
请帮助我
最好的问候。
巴米克
你好。
这个指标有5条线(中枢+R1+R2+S1+S2)。
我想做一个基于这些线的EA。不幸的是,这些线没有缓冲区。我需要有人为每条线分配一个缓冲区。
请帮助我
最好的问候。
巴米克巴尼克
你是否查看过这个主题:https://www.mql5.com/en/forum/172894
在这个主题中,有很多使用缓冲区的枢轴指标。
barnik
你是否检查过这个主题:https://www.mql5.com/en/forum/172894
在那条线上有很多使用缓冲区的中枢指标谢谢小鹿mladen的帮助。
我下载并测试了这些指标中的大部分。只有 "AutoPivotIndicator_ver5 "指标与 "TARGETS-LINES "一样。
不幸的是,这个指标也不使用缓冲区而使用对象。
你是否介意改变我的简单指标。(为每一行分配一个缓冲区),这是一个小指标。
谢谢