"La clase de memoria externa define una variable externa. El modificador extern se especifica antes del tipo de datos. Las variables externas definen los parámetros de entrada de un programa, son accesibles desde la ventana de propiedades del programa. Las matrices no pueden actuar como variables externas. "
Aquí está todo el código del indicador personalizado.
Muchas gracias, no diré que no. :-) Te escribo mi dirección de correo electrónico en ICQ, dame el número. Te diré esto: yo sólo respondí primero, otros vinieron a ver la respuesta y no añadieron nada. Así que no pienses que todo el mundo aquí está tan enfadado y no quiere compartir conocimientos.
Эксперт: 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 вообще надо обращаться аккуратно. Например, поэкспериментировать с порядком ее расчета.
А лучше всего такие вещи делать самому. Кстати, для мультивалютного эксперта может потребоваться везде
явно задавать имя символа и рабочий тайм-фрейм, чтобы избежать умолчательных сюрпризов вроде этого.
En un EA multidivisa cuando se llama al indicador iCustom para un símbolo específico, es mejor proporcionar lo siguiente en el propio indicador
extern string SymbolName = "USDJPY"; // símbolo por defecto
Esto es además de la configuración en el Asesor Experto :
iCustom("USDJPY", 60, ... ¡para este par!
¡Pero si llamo a este indicador personalizado para un par más con otros parámetros externos, significa que para este otro par debo introducir una copia del indicador personalizado con otro nombre y establecer el símbolo de otro par allí también!
¡Pero entonces es realmente más fácil de calcular iMAOnArray dentro del Asesor de Expertos por sí mismo sin ningún indukes personalizado!
Así es. Aunque, es un negocio amateur. Mi práctica, por ejemplo, es el uso de indicadores personalizados para probar una idea y luego transferir el código del indicador al Asesor Experto si la idea demuestra que funciona. Este enfoque prácticamente garantiza que no se produzcan valores indicadores "vacíos", que son difíciles de detectar y pueden ser muy molestos si se programan de forma descuidada.
alexjou, he mirado la ayuda y he encontrado:
"La clase de memoria externa define una variable externa. El modificador extern se especifica antes del tipo de datos. Las variables externas definen los parámetros de entrada de un programa, son accesibles desde la ventana de propiedades del programa. Las matrices no pueden actuar como variables externas. "
Aquí está todo el código del indicador personalizado.
Como variables externas puse el EA
En el probador, este par funciona. ¿Cuál puede ser el error aquí?Te diré esto: yo sólo respondí primero, otros vinieron a ver la respuesta y no añadieron nada. Así que no pienses que todo el mundo aquí está tan enfadado y no quiere compartir conocimientos.
¡alexjou !
¿Te he entendido bien? ??????????
En un EA multidivisa cuando se llama al indicador iCustom para un símbolo específico, es mejor proporcionar lo siguiente en el propio indicador
extern string SymbolName = "USDJPY"; // símbolo por defecto
Esto es además de la configuración en el Asesor Experto :
iCustom("USDJPY", 60, ... ¡para este par!
¡Pero si llamo a este indicador personalizado para un par más con otros parámetros externos, significa que para este otro par debo introducir una copia del indicador personalizado con otro nombre y establecer el símbolo de otro par allí también!
¡Pero entonces es realmente más fácil de calcular iMAOnArray dentro del Asesor de Expertos por sí mismo sin ningún indukes personalizado!
Gracias por las explicaciones. Me pondré a ello...
klerk, tengo problemas con mi correo electrónico los fines de semana.
Esta es mi dirección de correo electrónico para el asesor.
rid200549@ya.ru
klerk, por favor confirma aquí o en el correo si has recibido mi mensaje.
Y otra pregunta para los expertos (perdón si es muy tonta):
En el Asesor Experto multidivisa -
Y en las curvas finales de cada par, ¿también hay que introducir y sustituir estos valores?
¿o se puede dejar como está?Y en los pares finales, ¿hay que introducir y sustituir también estos valores?