编码帮助 - 页 61 1...545556575859606162636465666768...786 新评论 macerina 2012.12.05 14:26 #601 mladen: 该指标使用 "蛇力"(居中TMA)进行平滑,不能改变不重新计算和保持不变。居中TMA的 "非重绘"(端点)版本是一个简单的LWMA,但不要指望用它有和居中TMA一样的结果。关于居中TMA的更多信息,你可以在这里阅读:https://www.mql5.com/en/forum/181241 至于改变或改进该代码:它的基础是一个反编译的代码。我怀疑有人会改变一个反编译的代码。 非常感谢Mladen提供的信息,这很有帮助。 dasio 2012.12.09 23:43 #602 你好。 我从网上下载了这个指标,但是当我把它连接起来的时候,出现了2个级别的独立窗口,但是没有出现条形图。 你能帮助我解决这个问题吗? 谢谢你。 震荡器.MQ4 附加的文件: oscillator.mq4 6 kb Mladen Rakic 2012.12.10 07:01 #603 dasio。 这只是另一个太阳风指标(有人试图改变它的一些东西)。 dasio: 你好。我从网上下载了这个指标,但当我把它连接到一起时,出现了有两个级别的独立窗口,但没有出现条形图。 你能帮助我解决这个问题吗? 谢谢你 oscillator.mq4 dasio 2012.12.10 07:42 #604 mladen: dasio,这只是另一个太阳风指标(有人试图改变它的一些东西)。 谢谢你。但是当我开始回测时,条形图出现了。这怎么可能呢? 谢谢你 Mladen Rakic 2012.12.10 08:08 #605 dasio 检查专家和日志选项卡,是否有一些错误被写在那里。在我的经纪商数据上,它是有效的,所以我不能告诉你的经纪商数据上发生了什么(也许是零除 法或类似的东西)。 dasio: 谢谢你。但是当我开始回测时,条形图出现了。这怎么可能呢? 谢谢 nevar 2012.12.12 10:06 #606 Mladen , 当你写一个代码或查看一些人的代码时,你如何评估代码的质量?当你写一个代码时,你如何测试代码的健壮性?谢谢。 Mladen Rakic 2012.12.12 17:47 #607 :) 我的两个主要标准是: - 简单性(使代码简单使其更容易开发、增强和调试)。- 整洁(谁认为代码可以随便扔在一堆上就能工作,谁就没有在一段时间后看过自己的代码。另外,调试一个不整洁的代码本身就是一个故事) 当这两点得到满足时,我才会再看一眼,然后才会 "读 "它,但这是一个很长的故事,可以做什么来获得质量--我想这个过程更多的是主观而不是客观... nevar: Mladen , 当你写一个代码或查看一些人的代码时,你如何评估代码的质量?当你写一个代码时,你如何测试代码的健壮性?谢谢。 drofwarc 2012.12.16 02:09 #608 drofwarc: 你好。我想改编一个调用iFractals的指标,改为调用一个具有可调周期功能的自定义分形指标。我试图改编的指标见附件。它叫做 "closesrelativejtozpreviousofractal"。 closesrelativejtozpreviousofractal.mq4 该代码在价格突破前一个分形高点时绘制了一个向上的箭头,反之则是一个向下的箭头。 我试图用iCustom调用的指标也在附件中。它被称为 "分形 - 可调"。 fractal_-_adjustable.mq4 下面是我试图修改原始指标,使其调用Fractals - adjustable。该代码成功地在高位和低位分形上绘制了点,而且分形周期可以调整,正如我所希望的那样。问题出在用于绘制前期高点和低点分形水平的突破点的箭头上。我不能让它们正确地绘图。 如果能得到任何帮助,我将不胜感激。 谨此致意。 drofwarc int start() { int counted_bars = IndicatorCounted(); if (counted_bars > 0) counted_bars--; int limit = Bars - counted_bars; for(int i=limit; i>0; i--) { UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i); if(Close>HighLevel) UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i); if(Close<LowLevel) DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows } return(0); } 最终解决了这个问题。问题出在缓冲区的混淆上。 drofwarc 2012.12.16 02:35 #609 使一个指标在信号之间跳过n个柱子的代码 大家好。 我知道可以通过使用Sleep()或记录一个时间戳,并在时间戳后等待n秒再允许另一个信号,使EA在交易之间暂停。 但是否有可能对一个指标做同样的事情。 例如,我希望能够使一个在两条移动平均线 交叉时绘制箭头的指标在交叉后跳过n个小节再绘制另一个箭头。换句话说,如果在n个柱子之前发生了另一个交叉,该指标将忽略该交叉而不绘制箭头。 我已经广泛地寻找一个能做到这一点的指标,但没有任何运气。 谁能把已经有这个功能的指标贴出来,让我研究一下代码?或者给我提供一个可以实现这一建议的代码例子,以便我可以尝试实现它。 非常感谢。 drofwarc chenairbin 2012.12.16 04:54 #610 它不能正常显示,谁能帮我解决这个问题? #属性 indicator_separate_window #属性 indicator_buffers 1 #属性 indicator_color1 Red #属性 indicator_maximum 100 #属性 indicator_level1 70 #属性 indicator_level2 50 #属性 indicator_level3 30 #perty indicator_minimum 0 //---- 输入参数 Extern int rsiperiod = 14 ; extern int Shortperiod = 5 ; extern int Middleperiod = 8; extern int Longperiod = 13; Extern int mamode = 2 ; //---- 缓冲区 double RSI[]。 double ShortRSI[]; double MiddleRSI[]; 双倍LongRSI[]。 双倍SMRSI[]。 int period ; //+------------------------------------------------------------------+ //|自定义指标 初始化函数 //+------------------------------------------------------------------+ int init() { //---- 指标 IndicatorBuffers(5); SetIndexBuffer(0,SMRSI); SetIndexBuffer(1,RSI); SetIndexBuffer(2,ShortRSI); SetIndexBuffer(3,MiddleRSI); SetIndexBuffer(4,LongRSI); //---- DataWindow和指标子窗口标签的名称 IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod+", "+mamode+")")。 SetIndexDrawBegin(0,rsiperiod+Longperiod); period=Shortperiod+Middleperiod+Longperiod。 返回(0)。 } //+------------------------------------------------------------------+ //|自定义指标迭代函数| //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted()。 int i,limit; if(counted_bars<0) return(-1); 如果(counted_bars>0) counted_bars--。 limit = Bars-counted_bars; for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i)。 for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i); for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i); for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i); for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;} return(0); } //+------------------------------------------------------------------+ Coding help 如何编码? [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 1...545556575859606162636465666768...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
该指标使用 "蛇力"(居中TMA)进行平滑,不能改变不重新计算和保持不变。居中TMA的 "非重绘"(端点)版本是一个简单的LWMA,但不要指望用它有和居中TMA一样的结果。关于居中TMA的更多信息,你可以在这里阅读:https://www.mql5.com/en/forum/181241 至于改变或改进该代码:它的基础是一个反编译的代码。我怀疑有人会改变一个反编译的代码。
非常感谢Mladen提供的信息,这很有帮助。
你好。
我从网上下载了这个指标,但是当我把它连接起来的时候,出现了2个级别的独立窗口,但是没有出现条形图。
你能帮助我解决这个问题吗?
谢谢你。
震荡器.MQ4
dasio。
这只是另一个太阳风指标(有人试图改变它的一些东西)。
你好。
我从网上下载了这个指标,但当我把它连接到一起时,出现了有两个级别的独立窗口,但没有出现条形图。
你能帮助我解决这个问题吗?
谢谢你
oscillator.mq4dasio,这只是另一个太阳风指标(有人试图改变它的一些东西)。
谢谢你。但是当我开始回测时,条形图出现了。这怎么可能呢?
谢谢你
dasio
检查专家和日志选项卡,是否有一些错误被写在那里。在我的经纪商数据上,它是有效的,所以我不能告诉你的经纪商数据上发生了什么(也许是零除 法或类似的东西)。
谢谢你。但是当我开始回测时,条形图出现了。这怎么可能呢? 谢谢
Mladen ,
当你写一个代码或查看一些人的代码时,你如何评估代码的质量?当你写一个代码时,你如何测试代码的健壮性?谢谢。
:)
我的两个主要标准是:
当这两点得到满足时,我才会再看一眼,然后才会 "读 "它,但这是一个很长的故事,可以做什么来获得质量--我想这个过程更多的是主观而不是客观...
Mladen , 当你写一个代码或查看一些人的代码时,你如何评估代码的质量?当你写一个代码时,你如何测试代码的健壮性?谢谢。
你好。
我想改编一个调用iFractals的指标,改为调用一个具有可调周期功能的自定义分形指标。我试图改编的指标见附件。它叫做 "closesrelativejtozpreviousofractal"。
closesrelativejtozpreviousofractal.mq4
该代码在价格突破前一个分形高点时绘制了一个向上的箭头,反之则是一个向下的箭头。
我试图用iCustom调用的指标也在附件中。它被称为 "分形 - 可调"。
fractal_-_adjustable.mq4
下面是我试图修改原始指标,使其调用Fractals - adjustable。该代码成功地在高位和低位分形上绘制了点,而且分形周期可以调整,正如我所希望的那样。问题出在用于绘制前期高点和低点分形水平的突破点的箭头上。我不能让它们正确地绘图。
如果能得到任何帮助,我将不胜感激。
谨此致意。
drofwarc
{
int counted_bars = IndicatorCounted();
if (counted_bars > 0) counted_bars--;
int limit = Bars - counted_bars;
for(int i=limit; i>0; i--)
{
UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal
if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels
HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);
if(Close>HighLevel)
UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows
DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal
if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels
LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);
if(Close<LowLevel)
DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows
}
return(0);
}最终解决了这个问题。问题出在缓冲区的混淆上。
使一个指标在信号之间跳过n个柱子的代码
大家好。
我知道可以通过使用Sleep()或记录一个时间戳,并在时间戳后等待n秒再允许另一个信号,使EA在交易之间暂停。
但是否有可能对一个指标做同样的事情。
例如,我希望能够使一个在两条移动平均线 交叉时绘制箭头的指标在交叉后跳过n个小节再绘制另一个箭头。换句话说,如果在n个柱子之前发生了另一个交叉,该指标将忽略该交叉而不绘制箭头。
我已经广泛地寻找一个能做到这一点的指标,但没有任何运气。
谁能把已经有这个功能的指标贴出来,让我研究一下代码?或者给我提供一个可以实现这一建议的代码例子,以便我可以尝试实现它。
非常感谢。
drofwarc
它不能正常显示,谁能帮我解决这个问题?
#属性 indicator_separate_window
#属性 indicator_buffers 1
#属性 indicator_color1 Red
#属性 indicator_maximum 100
#属性 indicator_level1 70
#属性 indicator_level2 50
#属性 indicator_level3 30
#perty indicator_minimum 0
//---- 输入参数
Extern int rsiperiod = 14 ;
extern int Shortperiod = 5 ;
extern int Middleperiod = 8;
extern int Longperiod = 13;
Extern int mamode = 2 ;
//---- 缓冲区
double RSI[]。
double ShortRSI[];
double MiddleRSI[];
双倍LongRSI[]。
双倍SMRSI[]。
int period ;
//+------------------------------------------------------------------+
//|自定义指标 初始化函数
//+------------------------------------------------------------------+
int init()
{
//---- 指标
IndicatorBuffers(5);
SetIndexBuffer(0,SMRSI);
SetIndexBuffer(1,RSI);
SetIndexBuffer(2,ShortRSI);
SetIndexBuffer(3,MiddleRSI);
SetIndexBuffer(4,LongRSI);
//---- DataWindow和指标子窗口标签的名称
IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod+", "+mamode+")")。
SetIndexDrawBegin(0,rsiperiod+Longperiod);
period=Shortperiod+Middleperiod+Longperiod。
返回(0)。
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted()。
int i,limit;
if(counted_bars<0) return(-1);
如果(counted_bars>0) counted_bars--。
limit = Bars-counted_bars;
for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i)。
for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);
for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);
for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);
for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}
return(0);
}
//+------------------------------------------------------------------+