[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 141 1...134135136137138139140141142143144145146147148...1145 新评论 削除済み 2009.07.09 13:30 #1401 就这样,它成功了。似乎是因为我设置了一个缓冲区。 #property indicator_buffers 1 --- 2009.07.09 13:36 #1402 你所做的一切都很正确。 我检查了它--它的输出是正常的(我可以给你一个截图)。 我只是在上面添加了 #property indicator_separate_window #property indicator_buffers 2 Oleg 2009.07.10 05:58 #1403 Помогите, плиз!!! double Lots_simb[3]; if(( Lots_simb[0]*2)< Lots_simb[2]) // почему истина ? { Print("Lots_simb[0]*2=", Lots_simb[0]*2,"Lots_simb[2]=", Lots_simb[2]); Open_Buy_otl( symb[0],( Lots_simb[2]/2- Lots_simb[0])); return; } 2009.07.10 06:57:09 newseason GBPJPY, M30: Lots_simb[0]*2=8.4 Lots_simb[2]=8.4 Дмитрий 2009.07.10 09:10 #1404 知识的先生们,当测试员的日志上写着 "测试模式下不允许的功能",我怎么知道什么功能是不允许的? Igor Malcev 2009.07.10 13:28 #1405 Dimoncheg писал(а)>> 先生们,当测试器中的日志显示 "在测试模式下不允许使用功能 "时,我怎么知道不允许使用什么功能? 在MetaTrader 4中测试交易策略的特点和局限性'。 Дмитрий 2009.07.10 14:50 #1406 xeon >> : 在MetaTrader 4中测试交易策略的特点和局限性'。 谢谢你 削除済み 2009.07.10 19:11 #1407 你好,我真的需要一些帮助!我想在一个指标的基础上做一个EA。在开始时,像任何指标一样,有这些线条。 SetIndexBuffer(0,ExtBullBuffer)。 SetIndexBuffer(1,ExtBull1Buffer)。 SetIndexBuffer(2,ExtBull2Buffer)。 SetIndexBuffer(3,ExtBull3Buffer)。 SetIndexBuffer(4,ExtBull4Buffer)。 SetIndexBuffer(5,ExtBull5Buffer)。 SetIndexBuffer(6,ExtBull6Buffer)。 SetIndexBuffer(7,ExtBull7Buffer)。 然后是程序的主体(int start()......),其中计算了ExtBullBuffer的变量......。我想做一个EA,所以我不需要SetIndexBuffer,但是如果我去掉它,在测试变量ExtBullBuffer的时候就不会计算了(对于测试的所有时间段,所有时间段都会产生0,尽管这不是真的)...你能告诉我们该怎么做吗?谢谢你。 Mykola Demko 2009.07.10 22:07 #1408 Levchik >> : 你好,我真的需要一些帮助!我想在一个指标的基础上做一个EA。在开始时,像任何指标一样,有这些线条。 SetIndexBuffer(0,ExtBullBuffer)。 然后是程序的主体(int start()...),它计算变量ExtBullBuffer...我想做一个EA,所以我不需要SetIndexBuffer,但是如果我去掉它,在测试变量ExtBullBuffer的时候就不会计算了(对于测试的所有时间段,所有时间段都会产生0,尽管这不是真的)...你能告诉我们该怎么做吗?>> 谢谢你。 在指示器缓冲区中,一旦你将缓冲区声明为指示器(而不是辅助),缓冲区就会自动初始化。 在其他程序中(不是指标),缓冲区需要用ArrayResize(ExtBullBuffer,Bars)函数进行初始化。 (如果缓冲区没有被明确命名的话 double ExtBullBuffer[1000]; ) 而初始化应该在函数中完成,它应该为缓冲区赋值。在你的例子中,在int start()中。 [删除] 2009.07.11 22:56 #1409 大家好。你能告诉我如何修改指标的代码,使提示音不是输出一次,而是输出10次,或者像有感应的地方一样,信号直到下一个蜡烛图出现。也就是说,信号在它发生的那根蜡烛上一直在走。我有一个良好的信号,但只有一次......不幸的是,我在晚上听不到((((,我预先感谢你的反馈。 #property indicator_chart_window #属性 indicator_buffers 5 #property indicator_color1 黄色 #property indicator_width1 2 #property indicator_color2 SkyBlue #property indicator_width2 2 #属性指标_颜色3 番茄 #property indicator_width3 2 #property indicator_color4 Blue #property indicator_color5 Red #property indicator_width4 1 #property indicator_width5 1 //---- 输入参数 extern int Price = 0; //适用于Price(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close) 外部int Length = 15; //NonLagMA的时间段 extern inttern Displace = 0; //DispLace or Shift 外部双倍PctFilter = 0; //十进制的动态过滤器 外部字符串 note1 ="打开颜色: ln=1 ln&dot=2; off=0"。 外部int Color = 2; //切换颜色模式(单色)。 外部int ColorBarBack = 0; //颜色模式的条形图。 外来的双倍偏差 = 0; //上/下偏差 extern string note2 ="turn on = 1; turn off = 0"; Extern int AlertMode = 0; //box Alert开关(0-off,1-on)。 Extern int WarningMode = 0; //Sound Warning switch(0-off,1-on) 外置 int SendEmail = 0; extern string soundfile = "news.wav"; //---- 指示器缓冲区 双重MABuffer[]。 双倍UpBuffer[]。 双重DnBuffer[]。 双重趋势[]。 双重Del[]。 double AvgDel[]; double updbuffer[]。 双重dndbuffer[]。 双重alfa[]。 int i, Phase, Len, Cycle=4; double Coeff, beta, t, Sum, Weight, g; 双重π=3.1415926535。 bool UpTrendAlert=false, DownTrendAlert=false。 //+------------------------------------------------------------------+ //|自定义指标初始化函数 //+------------------------------------------------------------------+ int init() { IndicatorBuffers(8)。 SetIndexStyle(0,DRAW_LINE)。 SetIndexBuffer(0,MABuffer)。 SetIndexStyle(1,DRAW_LINE)。 SetIndexBuffer(1,UpBuffer)。 SetIndexStyle(2,DRAW_LINE)。 SetIndexBuffer(2,DnBuffer)。 SetIndexBuffer(5,trend)。 SetIndexBuffer(6,Del)。 SetIndexBuffer(7,AvgDel)。 SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); SetIndexBuffer(3,updbuffer); SetIndexEmptyValue(3,EMPTY_VALUE)。 SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,159); SetIndexBuffer(4,dndbuffer); SetIndexEmptyValue(4,EMPTY_VALUE)。 string short_name; //---- 指标线 IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS))。 //---- DataWindow和指标子窗口标签的名称 short_name="NonLagMA("+Length+")"。 IndicatorShortName(short_name)。 SetIndexLabel(0, "NonLagMA")。 SetIndexLabel(1, "Up")。 SetIndexLabel(2, "Dn")。 //---- SetIndexShift(0,Displace)。 SetIndexShift(1,Displace)。 SetIndexShift(2,Displace)。 SetIndexShift(3,Displace)。 SetIndexShift(4,Displace)。 SetIndexEmptyValue(0,EMPTY_VALUE)。 SetIndexEmptyValue(1,EMPTY_VALUE)。 SetIndexEmptyValue(2,EMPTY_VALUE)。 SetIndexDrawBegin(0,Length*Cycle+Length+1)。 SetIndexDrawBegin(1,Length*Cycle+Length+1)。 SetIndexDrawBegin(2,Length*Cycle+Length+1)。 //---- Coeff=3*pi。 相位=长度-1。 Len = Length*4 + Phase; ArrayResize(alfa,Len)。 重量=0。 for (i=0;i<Len-1;i++) { 如果(i<=阶段1)t = 1.0*i/(阶段1)。 否则t = 1.0 + (i-Phase+1)*(2.0*Cycle-1.0)/(Cycle*Length-1.0)。 beta = MathCos(pi*t)。 g=1.0/(Coeff*t+1)。 如果(t <= 0.5 )g = 1。 alfa[i] = g * beta。 重量 += alfa[i]; } return(0); } //+------------------------------------------------------------------+ //| NonLagMA_v7.1 | | //+------------------------------------------------------------------+ int start() { int i,shift, counted_bars=IndicatorCounted(),limit; 双倍价格。 如果( counted_bars > 0 ) limit=Bars-counted_bars。 如果( counted_bars < 0 ) 返回(0)。 如果( counted_bars ==0 ) limit=Bars-Len-1。 如果( counted_bars < 1 ) for(i=1;i<Length*Cycle+Length;i++) { MABuffer[Bars-i]=0。 UpBuffer[Bars-i]=0。 DnBuffer[Bars-i]=0。 } for(shift=limit;shift>=0;shift--) { 总和=0。 for (i=0;i<=Len-1;i++) { 价格=iMA(NULL,0,1,0,3,Price,i+shift)。 Sum += alfa[i]*price。 } 如果(重量>0)MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight。 如果(PctFilter>0) { Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1])。 double sumdel=0。 for (i=0;i<=Length-1;i++) sumdel = sumdel+Del[shift+i]; AvgDel[shift] = sumdel/Length; double sumpow = 0; for (i=0;i<=Length-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2)。 double StdDev = MathSqrt(sumpow/Length); double Filter = PctFilter * StdDev; 如果( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1]。 } 否则 过滤器=0。 如果(颜色>0) { trend[shift]=trend[shift+1]。 如果(MABuffer[shift]-MABuffer[shift+1]>Filter) trend[shift]=1。 如果(MABuffer[shift+1]-MABuffer[shift]>Filter) trend[shift]=-1。 updbuffer[shift] = EMPTY_VALUE; dndbuffer[shift] = EMPTY_VALUE; 如果(趋势[shift]>0) { UpBuffer[shift] = MABuffer[shift]。 如果(趋势[shift+ColorBarBack]<0)UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack]。 DnBuffer[shift] = EMPTY_VALUE。 如果(trend[shift+1]<0&Color>1)upbuffer[shift]=MABuffer[shift]。 } 如果(趋势[shift]<0) { DnBuffer[shift] = MABuffer[shift]。 如果(趋势[shift+ColorBarBack]>0)DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack]。 UpBuffer[shift] = EMPTY_VALUE。 如果(trend[shift+1]>0&Color>1) dndbuffer[shift]=MABuffer[shift]。 } } } //---------- 字符串信息。 如果( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert) { 消息 = ""+Symbol()+" M "+Period()+" NonLagMa信号为BUY"。 if ( AlertMode>0 ) Alert (Message); 如果( WarningMode>0 ) PlaySound(soundfile)。 if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert"); UpTrendAlert=true; DownTrendAlert=false。 } 如果( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert) { 消息 = ""+Symbol()+" M "+Period()+" NonLagMa信号为卖出"。 if ( AlertMode>0 ) Alert (Message); 如果( WarningMode>0 ) PlaySound(soundfile)。 if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert"); DownTrendAlert=true; UpTrendAlert=false。 } //---- return(0); } 将免费为您创建专家顾问! [WARNING CLOSED!] Any newbie New MQ4 code Mykola Demko 2009.07.11 23:08 #1410 E_mc2 >> : 大家好。请告知如何修复代码indyuka,即提示音不显示一次,然后10次,或作为有indyuki的信号,直到下一个蜡烛出现。也就是说,信号在它发生的那根蜡烛上一直在走。我有一个良好的信号,但只有一次......不幸的是,有时我在晚上听不到它((((,我提前感谢谁将帮助。 你需要它来做什么?告诉我更多情况,也许有一个解决方案,而你不知道如何提出正确的问题,以便人们理解。 关于你所写的,我有两个解决方案,你呢,一下子写两个太长了:) .. 顺便说一下,最好把这样的长代码作为一个文件附上。 而对于代码,有一个特殊的按钮SRC。 1...134135136137138139140141142143144145146147148...1145 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
就这样,它成功了。似乎是因为我设置了一个缓冲区。
#property indicator_buffers 1
你所做的一切都很正确。 我检查了它--它的输出是正常的(我可以给你一个截图)。
我只是在上面添加了
Помогите, плиз!!!
先生们,当测试器中的日志显示 "在测试模式下不允许使用功能 "时,我怎么知道不允许使用什么功能?
在MetaTrader 4中测试交易策略的特点和局限性'。
在MetaTrader 4中测试交易策略的特点和局限性'。
谢谢你
你好,我真的需要一些帮助!我想在一个指标的基础上做一个EA。在开始时,像任何指标一样,有这些线条。
SetIndexBuffer(0,ExtBullBuffer)。
SetIndexBuffer(1,ExtBull1Buffer)。
SetIndexBuffer(2,ExtBull2Buffer)。
SetIndexBuffer(3,ExtBull3Buffer)。
SetIndexBuffer(4,ExtBull4Buffer)。
SetIndexBuffer(5,ExtBull5Buffer)。
SetIndexBuffer(6,ExtBull6Buffer)。
SetIndexBuffer(7,ExtBull7Buffer)。
然后是程序的主体(int start()......),其中计算了ExtBullBuffer的变量......。我想做一个EA,所以我不需要SetIndexBuffer,但是如果我去掉它,在测试变量ExtBullBuffer的时候就不会计算了(对于测试的所有时间段,所有时间段都会产生0,尽管这不是真的)...你能告诉我们该怎么做吗?谢谢你。
你好,我真的需要一些帮助!我想在一个指标的基础上做一个EA。在开始时,像任何指标一样,有这些线条。
SetIndexBuffer(0,ExtBullBuffer)。
然后是程序的主体(int start()...),它计算变量ExtBullBuffer...我想做一个EA,所以我不需要SetIndexBuffer,但是如果我去掉它,在测试变量ExtBullBuffer的时候就不会计算了(对于测试的所有时间段,所有时间段都会产生0,尽管这不是真的)...你能告诉我们该怎么做吗?>> 谢谢你。
在指示器缓冲区中,一旦你将缓冲区声明为指示器(而不是辅助),缓冲区就会自动初始化。
在其他程序中(不是指标),缓冲区需要用ArrayResize(ExtBullBuffer,Bars)函数进行初始化。
(如果缓冲区没有被明确命名的话 double ExtBullBuffer[1000]; )
而初始化应该在函数中完成,它应该为缓冲区赋值。在你的例子中,在int start()中。
大家好。你能告诉我如何修改指标的代码,使提示音不是输出一次,而是输出10次,或者像有感应的地方一样,信号直到下一个蜡烛图出现。也就是说,信号在它发生的那根蜡烛上一直在走。我有一个良好的信号,但只有一次......不幸的是,我在晚上听不到((((,我预先感谢你的反馈。
#property indicator_chart_window
#属性 indicator_buffers 5
#property indicator_color1 黄色
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#属性指标_颜色3 番茄
#property indicator_width3 2
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_width4 1
#property indicator_width5 1
//---- 输入参数
extern int Price = 0; //适用于Price(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close)
外部int Length = 15; //NonLagMA的时间段
extern inttern Displace = 0; //DispLace or Shift
外部双倍PctFilter = 0; //十进制的动态过滤器
外部字符串 note1 ="打开颜色: ln=1 ln&dot=2; off=0"。
外部int Color = 2; //切换颜色模式(单色)。
外部int ColorBarBack = 0; //颜色模式的条形图。
外来的双倍偏差 = 0; //上/下偏差
extern string note2 ="turn on = 1; turn off = 0";
Extern int AlertMode = 0; //box Alert开关(0-off,1-on)。
Extern int WarningMode = 0; //Sound Warning switch(0-off,1-on)
外置 int SendEmail = 0;
extern string soundfile = "news.wav";
//---- 指示器缓冲区
双重MABuffer[]。
双倍UpBuffer[]。
双重DnBuffer[]。
双重趋势[]。
双重Del[]。
double AvgDel[];
double updbuffer[]。
双重dndbuffer[]。
双重alfa[]。
int i, Phase, Len, Cycle=4;
double Coeff, beta, t, Sum, Weight, g;
双重π=3.1415926535。
bool UpTrendAlert=false, DownTrendAlert=false。
//+------------------------------------------------------------------+
//|自定义指标初始化函数
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8)。
SetIndexStyle(0,DRAW_LINE)。
SetIndexBuffer(0,MABuffer)。
SetIndexStyle(1,DRAW_LINE)。
SetIndexBuffer(1,UpBuffer)。
SetIndexStyle(2,DRAW_LINE)。
SetIndexBuffer(2,DnBuffer)。
SetIndexBuffer(5,trend)。
SetIndexBuffer(6,Del)。
SetIndexBuffer(7,AvgDel)。
SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,159); SetIndexBuffer(3,updbuffer); SetIndexEmptyValue(3,EMPTY_VALUE)。
SetIndexStyle(4,DRAW_ARROW); SetIndexArrow(4,159); SetIndexBuffer(4,dndbuffer); SetIndexEmptyValue(4,EMPTY_VALUE)。
string short_name;
//---- 指标线
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS))。
//---- DataWindow和指标子窗口标签的名称
short_name="NonLagMA("+Length+")"。
IndicatorShortName(short_name)。
SetIndexLabel(0, "NonLagMA")。
SetIndexLabel(1, "Up")。
SetIndexLabel(2, "Dn")。
//----
SetIndexShift(0,Displace)。
SetIndexShift(1,Displace)。
SetIndexShift(2,Displace)。
SetIndexShift(3,Displace)。
SetIndexShift(4,Displace)。
SetIndexEmptyValue(0,EMPTY_VALUE)。
SetIndexEmptyValue(1,EMPTY_VALUE)。
SetIndexEmptyValue(2,EMPTY_VALUE)。
SetIndexDrawBegin(0,Length*Cycle+Length+1)。
SetIndexDrawBegin(1,Length*Cycle+Length+1)。
SetIndexDrawBegin(2,Length*Cycle+Length+1)。
//----
Coeff=3*pi。
相位=长度-1。
Len = Length*4 + Phase;
ArrayResize(alfa,Len)。
重量=0。
for (i=0;i<Len-1;i++)
{
如果(i<=阶段1)t = 1.0*i/(阶段1)。
否则t = 1.0 + (i-Phase+1)*(2.0*Cycle-1.0)/(Cycle*Length-1.0)。
beta = MathCos(pi*t)。
g=1.0/(Coeff*t+1)。
如果(t <= 0.5 )g = 1。
alfa[i] = g * beta。
重量 += alfa[i];
}
return(0);
}
//+------------------------------------------------------------------+
//| NonLagMA_v7.1 | |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit;
双倍价格。
如果( counted_bars > 0 ) limit=Bars-counted_bars。
如果( counted_bars < 0 ) 返回(0)。
如果( counted_bars ==0 ) limit=Bars-Len-1。
如果( counted_bars < 1 )
for(i=1;i<Length*Cycle+Length;i++)
{
MABuffer[Bars-i]=0。
UpBuffer[Bars-i]=0。
DnBuffer[Bars-i]=0。
}
for(shift=limit;shift>=0;shift--)
{
总和=0。
for (i=0;i<=Len-1;i++)
{
价格=iMA(NULL,0,1,0,3,Price,i+shift)。
Sum += alfa[i]*price。
}
如果(重量>0)MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight。
如果(PctFilter>0)
{
Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1])。
double sumdel=0。
for (i=0;i<=Length-1;i++) sumdel = sumdel+Del[shift+i];
AvgDel[shift] = sumdel/Length;
double sumpow = 0;
for (i=0;i<=Length-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2)。
double StdDev = MathSqrt(sumpow/Length);
double Filter = PctFilter * StdDev;
如果( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1]。
}
否则
过滤器=0。
如果(颜色>0)
{
trend[shift]=trend[shift+1]。
如果(MABuffer[shift]-MABuffer[shift+1]>Filter) trend[shift]=1。
如果(MABuffer[shift+1]-MABuffer[shift]>Filter) trend[shift]=-1。
updbuffer[shift] = EMPTY_VALUE; dndbuffer[shift] = EMPTY_VALUE;
如果(趋势[shift]>0)
{
UpBuffer[shift] = MABuffer[shift]。
如果(趋势[shift+ColorBarBack]<0)UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack]。
DnBuffer[shift] = EMPTY_VALUE。
如果(trend[shift+1]<0&Color>1)upbuffer[shift]=MABuffer[shift]。
}
如果(趋势[shift]<0)
{
DnBuffer[shift] = MABuffer[shift]。
如果(趋势[shift+ColorBarBack]>0)DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack]。
UpBuffer[shift] = EMPTY_VALUE。
如果(trend[shift+1]>0&Color>1) dndbuffer[shift]=MABuffer[shift]。
}
}
}
//----------
字符串信息。
如果( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
{
消息 = ""+Symbol()+" M "+Period()+" NonLagMa信号为BUY"。
if ( AlertMode>0 ) Alert (Message);
如果( WarningMode>0 ) PlaySound(soundfile)。
if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert");
UpTrendAlert=true; DownTrendAlert=false。
}
如果( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
{
消息 = ""+Symbol()+" M "+Period()+" NonLagMa信号为卖出"。
if ( AlertMode>0 ) Alert (Message);
如果( WarningMode>0 ) PlaySound(soundfile)。
if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert");
DownTrendAlert=true; UpTrendAlert=false。
}
//----
return(0);
}
大家好。请告知如何修复代码indyuka,即提示音不显示一次,然后10次,或作为有indyuki的信号,直到下一个蜡烛出现。也就是说,信号在它发生的那根蜡烛上一直在走。我有一个良好的信号,但只有一次......不幸的是,有时我在晚上听不到它((((,我提前感谢谁将帮助。
你需要它来做什么?告诉我更多情况,也许有一个解决方案,而你不知道如何提出正确的问题,以便人们理解。
关于你所写的,我有两个解决方案,你呢,一下子写两个太长了:)
..
顺便说一下,最好把这样的长代码作为一个文件附上。
而对于代码,有一个特殊的按钮SRC。