" La classe de mémoire externe définit une variable externe. Le modificateur externe est spécifié avant le type de données. Les variables externes définissent les paramètres d'entrée d'un programme, elles sont accessibles depuis la fenêtre des propriétés du programme. Les tableaux ne peuvent pas agir comme des variables externes. "
Voici le code complet de l'indicateur personnalisé.
Merci beaucoup, je ne dirai pas non. :-) Je vous écrirai mon adresse e-mail dans ICQ, donnez-moi le numéro. Je vais vous dire : j'ai juste répondu en premier, les autres sont venus voir la réponse et n'ont rien ajouté. Ne pensez donc pas que tout le monde ici est en colère et ne veut pas partager ses connaissances.
Эксперт: 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 вообще надо обращаться аккуратно. Например, поэкспериментировать с порядком ее расчета.
А лучше всего такие вещи делать самому. Кстати, для мультивалютного эксперта может потребоваться везде
явно задавать имя символа и рабочий тайм-фрейм, чтобы избежать умолчательных сюрпризов вроде этого.
Dans un EA multi-devises, lorsque vous appelez l'indicateur iCustom pour un symbole spécifique, il est préférable de fournir les informations suivantes dans l'indicateur lui-même
extern string SymbolName = "USDJPY" ; // symbole par défaut
Il s'agit en outre d'un réglage dans l'Expert Advisor :
iCustom("USDJPY", 60, ... pour cette paire !
Mais si j'appelle cet indicateur personnalisé pour une autre paire avec d'autres paramètres externes, cela signifie que pour cette autre paire je dois entrer une copie de cet indicateur personnalisé avec un autre nom et définir le symbole d'une autre paire là aussi !
Mais alors il est vraiment plus facile de calculer iMAOnArray à l'intérieur de l'Expert Advisor par vous-même sans aucun induit personnalisé !
C'est vrai. Bien qu'il s'agisse d'un travail d'amateur. Ma pratique, par exemple, consiste à utiliser des indicateurs personnalisés pour tester une idée, puis à transférer le code de l'indicateur au conseiller expert si l'idée s'avère efficace. Cette approche garantit pratiquement contre les pièges des valeurs d'indicateur "vides", qui sont difficiles à détecter et peuvent être très gênantes si elles sont programmées sans précaution.
alexjou, j'ai regardé l'aide et trouvé :
" La classe de mémoire externe définit une variable externe. Le modificateur externe est spécifié avant le type de données. Les variables externes définissent les paramètres d'entrée d'un programme, elles sont accessibles depuis la fenêtre des propriétés du programme. Les tableaux ne peuvent pas agir comme des variables externes. "
Voici le code complet de l'indicateur personnalisé.
Comme variables externes de l'EA, j'ai défini
Dans le testeur, cette paire fonctionne. Quelle peut être l'erreur ici ?Je vais vous dire : j'ai juste répondu en premier, les autres sont venus voir la réponse et n'ont rien ajouté. Ne pensez donc pas que tout le monde ici est en colère et ne veut pas partager ses connaissances.
alexjou !
Est-ce que je vous ai bien compris ??????????
Dans un EA multi-devises, lorsque vous appelez l'indicateur iCustom pour un symbole spécifique, il est préférable de fournir les informations suivantes dans l'indicateur lui-même
extern string SymbolName = "USDJPY" ; // symbole par défaut
Il s'agit en outre d'un réglage dans l'Expert Advisor :
iCustom("USDJPY", 60, ... pour cette paire !
Mais si j'appelle cet indicateur personnalisé pour une autre paire avec d'autres paramètres externes, cela signifie que pour cette autre paire je dois entrer une copie de cet indicateur personnalisé avec un autre nom et définir le symbole d'une autre paire là aussi !
Mais alors il est vraiment plus facile de calculer iMAOnArray à l'intérieur de l'Expert Advisor par vous-même sans aucun induit personnalisé !
Merci pour les explications ! Je vais m'en occuper...
klerk, j'ai des problèmes avec mon email le week-end.
Voici mon adresse électronique pour le conseiller.
rid200549@ya.ru
klerk, veuillez confirmer ici ou dans le courrier si vous avez reçu mon message.
Et une autre question pour les experts (désolé si c'est trop bête) :
Dans le conseiller expert multidevises -
Et dans les courbes de fuite de chaque paire, devez-vous également saisir et substituer ces valeurs ?
ou peut-on le laisser tel quel ?Et dans les paires arrière, ces valeurs doivent-elles également être saisies et remplacées ?