Эксперт: iCustom("USDJPY", ...
А индикатор откуда об этом знает? Лучше добавить в секцию extern индикатора строковую переменную вроде
extern string SymbolName = "USDJPY"; // инструмент по умолчанию
и вызывать стохастик так
Stochastic[i]=iStochastic(SymbolName, 0, ...
(Опять какие-то глюки форума. В Лисе стрелки не работают, оттго и пишу не по-людски)
#propertyindicator_separate_window#propertyindicator_buffers3#propertyindicator_color1Yellow#propertyindicator_color2Red#propertyindicator_color3Red#propertyindicator_minimum0#propertyindicator_maximum100//---- input parameters//extern string st="---Параметры Stochastic---";
extern string SymbolName = "USDJPY";
extern int TimeFrame = 0;
externintKPeriod =12;
externintDPeriod =3;
externintSlowing =2;
//extern string en="---Параметры Envelopes---";externintEnvPeriod=17;
externintDeviation=15;
externintShift=1;
//---- buffersdoubleStochastic[];
doubleUP[];
doubleLOW[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intinit(){//---- indicatorsSetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,Stochastic);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UP);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LOW);
//----return(0);
}intdeinit(){return(0);
}//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intstart(){intlimit;
intcounted_bars=IndicatorCounted();
//---- последний посчитанный бар будет пересчитанif(counted_bars>0)counted_bars--;
limit=Bars-counted_bars;
//---- основной циклfor(inti=limit-1; i>=0; i--) // индикаторы лучше рассчитывать слева направо{Stochastic[i]=iStochastic(SymbolName, TimeFrame,KPeriod,DPeriod,Slowing,MODE_SMA,0,MODE_MAIN,i);
}for(i=limit-1; i>=0; i--) // см. примечание{UP[i] =iMAOnArray(Stochastic,0, EnvPeriod, Shift,MODE_SMA,i)+Deviation;
LOW[i]=iMAOnArray(Stochastic,0, EnvPeriod, Shift,MODE_SMA,i)-Deviation;
)
return(0);
}
Вызов из эксперта:
iCustom("USDJPY", 0, ...
С iMAOnArray вообще надо обращаться аккуратно. Например, поэкспериментировать с порядком ее расчета.
А лучше всего такие вещи делать самому. Кстати, для мультивалютного эксперта может потребоваться везде
явно задавать имя символа и рабочий тайм-фрейм, чтобы избежать умолчательных сюрпризов вроде этого.
alexjou,我看了一下帮助,发现。
"外部内存类 "定义了一个外部变量。在数据类型之前指定extern修饰符。外部变量 定义了程序的输入参数,它们可以从程序属性窗口访问。 数组不能作为外部变量。"
这里是自定义指标的所有代码。
作为EA的外部变量,我设定
在测试器中,这对组合是有效的。这里的错误可能是什么?我告诉你:我只是先做了回应,其他人来看了答案,并没有补充什么。所以不要以为这里的每个人都很生气,不想分享知识。
alexjou !
我对你的理解是否正确??????????
在一个多货币的EA中,当为一个特定的符号调用iCustom 指标时,最好在指标本身提供以下内容
外部字符串 SymbolName = "USDJPY"; // 默认符号
这是除了在专家顾问中的设置。
iCustom("USDJPY", 60, ...为这一对!
但是,如果我用其他外部参数为另一个货币对调用这个自定义指标,这意味着对于这个其他货币对,我必须用另一个名称输入一个自定义指标的副本,并在那里设置另一个货币对的符号
但这样一来,在专家顾问内部自己计算iMAOnArray确实更容易,不需要任何定制的诱导剂!这也是一个很好的例子。
谢谢你的解释!我马上去办...
klerk,我在周末的时候遇到了电子邮件的问题。
这是我给顾问的电子邮件地址。
rid200549@ya.ru
klerk,请在这里或邮件中确认你是否收到我的信息。
还有一个问题要问专家(如果太傻,请原谅)。
而在每一对的尾部曲线中,你是否也要输入和替换这些数值?
还是可以保持原样?而在尾数对中,这些数值是否也需要输入和替换?