alexjou, ich habe in der Hilfe nachgesehen und gefunden:
"Die externe Speicherklasse definiert eine externe Variable. Der externe Modifikator wird vor dem Datentyp angegeben. Externe Variablen definieren die Eingabeparameter eines Programms; sie sind über das Fenster Programmeigenschaften zugänglich. Arrays können nicht als externe Variablen fungieren. "
Hier ist der gesamte Code des benutzerdefinierten Indikators.
Vielen Dank, ich werde nicht nein sagen. :-) Ich schreibe dir meine E-Mail Adresse in ICQ, gib mir die Nummer. Ich sage Ihnen Folgendes: Ich habe nur zuerst geantwortet, andere haben die Antwort gesehen und nichts hinzugefügt. Denken Sie also nicht, dass alle hier so wütend sind und ihr Wissen nicht teilen wollen.
Эксперт: 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 вообще надо обращаться аккуратно. Например, поэкспериментировать с порядком ее расчета.
А лучше всего такие вещи делать самому. Кстати, для мультивалютного эксперта может потребоваться везде
явно задавать имя символа и рабочий тайм-фрейм, чтобы избежать умолчательных сюрпризов вроде этого.
Wenn Sie in einem EA mit mehreren Währungen den iCustom-Indikator für ein bestimmtes Symbol aufrufen, ist es besser, im Indikator selbst Folgendes anzugeben
Dies ist neben der Einstellung im Expert Advisor :
iCustom("USDJPY", 60, ... für dieses Paar!
Aber wenn ich diesen benutzerdefinierten Indikator für ein weiteres Paar mit anderen externen Parametern aufrufe, bedeutet das, dass ich für dieses andere Paar eine Kopie des benutzerdefinierten Indikators mit einem anderen Namen eingeben und dort auch das Symbol eines anderen Paares setzen muss!
Aber dann ist es wirklich einfacher, iMAOnArray innerhalb des Expert Advisors selbst zu berechnen, ohne eigene Indukes!
Das ist richtig. Trotzdem ist es eine dilettantische Angelegenheit. Ich verwende beispielsweise benutzerdefinierte Indikatoren, um eine Idee zu testen, und übertrage dann den Indikatorcode in den Expert Advisor, wenn sich die Idee bewährt hat. Dieser Ansatz garantiert praktisch, dass keine "leeren" Indikatorwerte auftreten, die schwer zu erkennen sind und bei unvorsichtiger Programmierung sehr störend sein können.
(Опять какие-то глюки форума. В Лисе стрелки не работают, оттго и пишу не по-людски)
Die Probleme lagen in meinem Tastaturanschluss auf der Hauptplatine. Das Forum hatte absolut nichts damit zu tun. Entschuldigung für den falschen Alarm.
alexjou, ich habe in der Hilfe nachgesehen und gefunden:
"Die externe Speicherklasse definiert eine externe Variable. Der externe Modifikator wird vor dem Datentyp angegeben. Externe Variablen definieren die Eingabeparameter eines Programms; sie sind über das Fenster Programmeigenschaften zugänglich. Arrays können nicht als externe Variablen fungieren. "
Hier ist der gesamte Code des benutzerdefinierten Indikators.
Als externe Variablen setze ich die EA
Im Testgerät funktioniert dieses Paar. Worin kann der Fehler hier liegen?Ich sage Ihnen Folgendes: Ich habe nur zuerst geantwortet, andere haben die Antwort gesehen und nichts hinzugefügt. Denken Sie also nicht, dass alle hier so wütend sind und ihr Wissen nicht teilen wollen.
alexjou!
Habe ich Sie richtig verstanden??????????
Wenn Sie in einem EA mit mehreren Währungen den iCustom-Indikator für ein bestimmtes Symbol aufrufen, ist es besser, im Indikator selbst Folgendes anzugeben
extern string SymbolName = "USDJPY"; // Standardsymbol
Dies ist neben der Einstellung im Expert Advisor :
iCustom("USDJPY", 60, ... für dieses Paar!
Aber wenn ich diesen benutzerdefinierten Indikator für ein weiteres Paar mit anderen externen Parametern aufrufe, bedeutet das, dass ich für dieses andere Paar eine Kopie des benutzerdefinierten Indikators mit einem anderen Namen eingeben und dort auch das Symbol eines anderen Paares setzen muss!
Aber dann ist es wirklich einfacher, iMAOnArray innerhalb des Expert Advisors selbst zu berechnen, ohne eigene Indukes!
Vielen Dank für die Erläuterungen! Ich kümmere mich sofort darum...
klerk, an den Wochenenden habe ich Probleme mit meiner E-Mail.
Hier ist meine E-Mail Adresse für den Berater.
rid200549@ya.ru
klerk, bitte bestätigen Sie hier oder per Mail, ob Sie meine Nachricht erhalten haben.
Und noch eine Frage an die Experten (tut mir leid, wenn sie zu dumm ist):
In Multicurrency Expert Advisor -
Und müssen Sie diese Werte auch in die Schlusskurven der einzelnen Paare eingeben und ersetzen?
oder kann sie so belassen werden, wie sie ist?Müssen diese Werte auch in die nachfolgenden Paare eingegeben und ersetzt werden?