Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
hallo coder,
ich habe einen sehr einfachen indikator erstellt, der einen alert anzeigt, wenn der letzte bar über oder unter dem sma10 liegt. mehr nicht. aber ich würde ihn gerne in 3 verschiedenen timeframes überprüfen. ich habe noch nie mit mtf-indikatoren gearbeitet und habe daher einige probleme damit. diese version überprüft den m1, m5 und m15 chart. es funktioniert gut, aber es gibt das problem, dass der alert bei jedem tick angezeigt wird und nicht nur einmal in dem timeframe, in dem die bedingungen erfüllt sind.
ich würde mich freuen, wenn mir jemand dabei helfen könnte. ich denke, es könnte nur ein syntax-problem sein.
vielen dank!
Hallo,
ich muss noch mal nachfragen, weil ich keinen Fehler finden kann, sondern nur falsche Werte bekomme :-(
Vielleicht sieht jemand meinen Fehler?!
Dies ist der Code des Indikators
#property indicator_chart_window
#property indicator_buffers 5
double WidestChannel_high[];
double InsideChannel_high[];
double StandardDeviation[];
double InsideChannel_low[];
double WidestChannel_low[];
extern int STD.Rgres.period=0; /*default 0 means the channel will use the open
time from "x" bars back on which ever time period
the indicator is attached to. one can change to 1,5,
15,30,60...etc to "lock" the start time to a specific
period, and then view the "locked" channels on a different time period...*/
extern int STD.Rgres.length=56; // bars back regression begins
extern double STD.Rgres.width=1.618;// widest channel
extern double STD.width=0.618; // inside channel
int init()
{
SetIndexBuffer(0,WidestChannel_high);
SetIndexLabel(0,"WidestChannel_high");
SetIndexBuffer(1,InsideChannel_high);
SetIndexLabel(1,"InsideChannel_high");
SetIndexBuffer(2,StandardDeviation);
SetIndexLabel(2,"StandardDeviation");
SetIndexBuffer(3,InsideChannel_low);
SetIndexLabel(3,"InsideChannel_low");
SetIndexBuffer(4,WidestChannel_low);
SetIndexLabel(4,"WidestChannel_low");
return(0);
}
int deinit() {
ObjectDelete("regression channel");ObjectDelete("std channel");return(0);
}
int start() {
int counted_bars=IndicatorCounted(),limit, iTF;
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//to refresh properly delete old objects...
ObjectDelete("regression channel");ObjectDelete("std channel");
//widest channel
ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);
ObjectSet("regression channel",OBJPROP_COLOR,Orange);
ObjectSet("regression channel",OBJPROP_RAY,true);
//inside channel
ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);
ObjectSet("std channel",OBJPROP_COLOR,Olive);
ObjectSet("std channel",OBJPROP_RAY,true);
for(int i=0; i<limit; i++)
{
double dev = iStdDev(NULL,STD.Rgres.period,STD.Rgres.length,0,MODE_SMA,PRICE_CLOSE,i);
double innerWidth = STD.width*dev;
double outerWidth = STD.Rgres.width*dev;
double price = ObjectGetValueByShift("std channel", i);
WidestChannel_high= price + outerWidth/2;
InsideChannel_high= price + innerWidth/2;
StandardDeviation= price;
InsideChannel_low= price - innerWidth/2;
WidestChannel_low= price - outerWidth/2;
}
return(0);}Hallo,
Ich muss noch einmal nachfragen, denn ich kann keinen Fehler finden, sondern bekomme nur die falschen Werte :-(
Vielleicht sieht jemand meinen Fehler?!
Das ist der Code vom Indikator
#property indicator_chart_window
#property indicator_buffers 5
double WidestChannel_high[];
double InsideChannel_high[];
double StandardDeviation[];
double InsideChannel_low[];
double WidestChannel_low[];
extern int STD.Rgres.period=0; /*default 0 means the channel will use the open
time from "x" bars back on which ever time period
the indicator is attached to. one can change to 1,5,
15,30,60...etc to "lock" the start time to a specific
period, and then view the "locked" channels on a different time period...*/
extern int STD.Rgres.length=56; // bars back regression begins
extern double STD.Rgres.width=1.618;// widest channel
extern double STD.width=0.618; // inside channel
int init()
{
SetIndexBuffer(0,WidestChannel_high);
SetIndexLabel(0,"WidestChannel_high");
SetIndexBuffer(1,InsideChannel_high);
SetIndexLabel(1,"InsideChannel_high");
SetIndexBuffer(2,StandardDeviation);
SetIndexLabel(2,"StandardDeviation");
SetIndexBuffer(3,InsideChannel_low);
SetIndexLabel(3,"InsideChannel_low");
SetIndexBuffer(4,WidestChannel_low);
SetIndexLabel(4,"WidestChannel_low");
return(0);
}
int deinit() {
ObjectDelete("regression channel");ObjectDelete("std channel");return(0);
}
int start() {
int counted_bars=IndicatorCounted(),limit, iTF;
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//to refresh properly delete old objects...
ObjectDelete("regression channel");ObjectDelete("std channel");
//widest channel
ObjectCreate("regression channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("regression channel",OBJPROP_DEVIATION,STD.Rgres.width);
ObjectSet("regression channel",OBJPROP_COLOR,Orange);
ObjectSet("regression channel",OBJPROP_RAY,true);
//inside channel
ObjectCreate("std channel",OBJ_STDDEVCHANNEL,0,iTime(Symbol(),STD.Rgres.period,STD.Rgres.length),
Close[STD.Rgres.length],Time[0],Close[0]);
ObjectSet("std channel",OBJPROP_DEVIATION,STD.width);
ObjectSet("std channel",OBJPROP_COLOR,Olive);
ObjectSet("std channel",OBJPROP_RAY,true);
for(int i=0; i<limit; i++)
{
double dev = iStdDev(NULL,STD.Rgres.period,STD.Rgres.length,0,MODE_SMA,PRICE_CLOSE,i);
double innerWidth = STD.width*dev;
double outerWidth = STD.Rgres.width*dev;
double price = ObjectGetValueByShift("std channel", i);
WidestChannel_high= price + outerWidth/2;
InsideChannel_high= price + innerWidth/2;
StandardDeviation= price;
InsideChannel_low= price - innerWidth/2;
WidestChannel_low= price - outerWidth/2;
}
return(0);}Sonnenschein,
Sie müssen die Abweichung nicht durch 2 teilen, um das Hoch und das Tief zu erhalten - entfernen Sie den "/2"-Teil und es sollte OK sein, vorausgesetzt, dass der mittlere Preis OK ist. Die Breite des Kanals ist immer konstant: die aktuelle Standardabweichung sollte für die mit verwendet werden, nicht irgendein anderer Wert. Und das letzte, soweit ich sehe, ObjectGetValueByShift("std channel", i); funktioniert nicht auf Standardabweichungskanal, wie es auf Trendlinien funktioniert. Welcher Wert wird zurückgegeben, ich weiß nicht (siehe den beigefügten Indikator und Sie werden sehen, warum ich sage, dass ich nicht weiß, was dieser Preis ist)
HI mladen,
ich hänge einen Beispielindikator an, der interne voreingestellte Symbole verwendet, die für mich ziemlich schwer zu verstehen sind. Ist es möglich, einige Hinweise von diesem Indikator zu erhalten, um meine Indikatoren oder/und Ihre Indikatoren anzupassen, um das Problem der Wiederholung oder Aktualisierung der Shift-Linie/Tick-Probleme zu vermeiden oder eine Art von Sy nergie zu schaffen? Vielen Dank für Ihr Interesse.
HI mladen, ich hänge einen Beispielindikator an, der interne voreingestellte Symbole verwendet, die für mich ziemlich schwer zu verstehen sind. Ist es möglich, einige Hinweise von diesem Indikator zu erhalten, um meine Indikatoren oder/und Ihre Indikatoren anzupassen, um das Problem der Wiederholung oder Aktualisierung der Shift-Linie/Tick-Probleme zu vermeiden oder eine Art von Sy nergie zu schaffen? Vielen Dank für Ihr Interesse.
kenwa
Ich arbeite nicht an dekompiliertem Material. Sorry
kenwa Ich arbeite nicht an dekompiliertem Material. Entschuldigung
ok, dann entferne ich es, aber interessant ist, warum niemand es anschaut, aber man kann wissen, dass es dekompiliertes Zeug ist
ok, dann entferne ich es, aber interessant ist, warum niemand es sieht, aber man kann wissen, dass es dekompiliertes Zeug ist
Jeder, der sich ein bisschen mit Kodierung auskennt, weiß, dass es sich um einen dekompilierten Code handelt.
Und selbst wenn Sie überhaupt keine Ahnung von Programmierung haben, wenn Sie so ein Ding haben :
Erzeugt von EX4-TO-MQ4 decompiler FREEWARE V4.0.451.1 [-]
Website: MetaTrader 5 Handelsplattform / MetaQuotes Software Corp.
E-Mail: support@metaquotes.net
*/
in den ersten Zeilen des Indikators, den Sie gepostet haben, scheint es ziemlich offensichtlich zu sein, dass jeder sehen kann, dass es sich um einen dekompilierten Code handelt, also, bitte ...
Alles Gute
mladen, mein Code ist nicht dekompiliert. Vielleicht möchten Sie ihn sich kurz ansehen?
mladen, mein Code ist nicht dekompiliert. Vielleicht möchten Sie ihn sich kurz ansehen?
Marbo
Sie können etwas wie in der beigefügten tun. Es wird Sie einmal pro Zielzeitrahmenbalken alarmieren oder wenn sich der Status (Typ des Alarms) ändert. Wenn Sie den Typ ignorieren möchten, überspringen Sie die Typprüfung in der doAlert-Prozedur. Wenn Sie die Zeitprüfung überspringen möchten (in diesem Fall würde nur der Typ geprüft), dann überspringen Sie die Zeitprüfung in der doAlert-Prozedur
Hallo mladen,
Du wirst Dich wahrscheinlich daran erinnern, dass ich letzte Woche um Hilfe bei einem MA cross EA gebeten habe und natürlich fälschlicherweise auf den Elite-Bereich verwiesen habe. Was kannst Du mir empfehlen, wo ich bitte nachfragen sollte? Ich habe gesucht und keine eindeutige Antwort gefunden. Um Ihr Gedächtnis aufzufrischen, dies war die Spezifikation:
1.SMA EMA kreuzen
2.bei Kerzenschluss
3.OCO mit Platzierung einer neuen Order in eine neue Richtung
4. die Möglichkeit, Slippage einzustellen
5. hörbares Signal für Cross
6. ein Cross ist kein echtes Cross ohne ein einstellbares Pip-Gap
7. möglichst In-Candle-Monitoring, d.h. wenn eine Kerze mehr als das X-fache der ATR (einstellbare Anzahl) beträgt, wird eine Order mit einem Alarm in Richtung dieser Kerze platziert, und ebenso, um eine Order zu schließen, aber dann keine neue zu starten
8. vorzugsweise wenn eine Order wie in 7 platziert wird, um einen Alarm auszulösen
9. die Zuverlässigkeit des Kreuzes ist von größter Bedeutung. In meinen Charts - FXCM, Vantage, FX Choice - nehmen einige EAs, einschließlich Universal Cross, keine Trades an oder sind zu spät
10. Einstellbarer SL, kann aber weggelassen werden, wenn er nicht benötigt wird
11.nachlaufender Stop
12.SL geht nach X Pips Gewinn automatisch auf Break-Even
13. Max. Anzahl offener Trades
14. magische Zahl
Mit freundlichen Grüßen
Jeff