[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 141

 

就这样,它成功了。似乎是因为我设置了一个缓冲区。

#property indicator_buffers 1

 

你所做的一切都很正确。 我检查了它--它的输出是正常的(我可以给你一个截图)。

我只是在上面添加了

#property  indicator_separate_window
#property  indicator_buffers 2
 

Помогите, плиз!!!

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
 
知识的先生们,当测试员的日志上写着 "测试模式下不允许的功能",我怎么知道什么功能是不允许的?
 
Dimoncheg писал(а)>>
先生们,当测试器中的日志显示 "在测试模式下不允许使用功能 "时,我怎么知道不允许使用什么功能?

在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,尽管这不是真的)...你能告诉我们该怎么做吗?谢谢你。

 
Levchik >> :

你好,我真的需要一些帮助!我想在一个指标的基础上做一个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);
}

 
E_mc2 >> :

大家好。请告知如何修复代码indyuka,即提示音不显示一次,然后10次,或作为有indyuki的信号,直到下一个蜡烛出现。也就是说,信号在它发生的那根蜡烛上一直在走。我有一个良好的信号,但只有一次......不幸的是,有时我在晚上听不到它((((,我提前感谢谁将帮助。

你需要它来做什么?告诉我更多情况,也许有一个解决方案,而你不知道如何提出正确的问题,以便人们理解。

关于你所写的,我有两个解决方案,你呢,一下子写两个太长了:)

..

顺便说一下,最好把这样的长代码作为一个文件附上。

而对于代码,有一个特殊的按钮SRC。

原因: