Trailing Wert ist nicht korrekt
Liste der Anhänge anzeigen (Anzahl: 1)
Situation:
1. ein Indikator -. hat default Werte, die nie verändert werden (TF=h1) 2. ein EA (TF=h1) -. liest (eigentlich) die Werte des Indikators aus -. benutzt diese Werte zum Ein-/Ausstieg und Trailen Problem: Der SL wird anhand einer Indikatorline, also auf einen festen Wert gesetzt (im Gegensatz zu Bid/Ask+/-EinWert). Aber obwohl bei der 1. Order der SL-Wert korrekt vom Indikator übernommen wird, erscheint beim Trailing plötzlich ein Fantasie-Wert, bei dem ich nicht erkennen kann, woher der überhaupt kommt. Frage: Was übersehe ich hier? Code:
//============================================================================= Habt Ihr Hinweise? Danke. AVT |
:confused:
Warum machst den TS nicht einfach mit Bid / Ask / OrderStopLoss() / so in der Art eben? |
Zitat:
Wie Du siehst benutzt die Trailingfunktion dieselben iCustom Zeilen wie die zum Order senden. Trotzdem stimmt der Wert des oberen Bandes nicht. (Steht im Log und im Chart ist die Linie wo er eigentlich sein soll - nur die Nachkommastellen, denn die sind relevant). AVT |
Hi, ich glaube, du wirst nicht die richtige Anzahl an Parameter an deinen Indikator über iCustom weiterleiten.
Aktuell gibst du nur das Symbol, TF, Indikatorname, BufferVariable und Shift an. Bei fast allen Indikatoren sind aber Input Variablen definiert, welche du nach dem Indikatornamen weiterleiten musst. Hat dein Indikator z.B. nur den Parameter zur Periodenlänge, über die er seinen Channel legt, müsste dein aufruf z.B. so aussehen: Periodenlänge 20,Shift 0: double Ssl=iCustom(Symbol(),MAframe,INDI,20, 2,0); //chan.hi double Lsl=iCustom(Symbol(),MAframe,INDI,20, 3,0); //chan.low Sonst häng bitte den Indikator mit hier dran und ich schaue mir das mal genauer an. double iCustom( string symbol, // symbol int timeframe, // timeframe string name, // path/name of the custom indicator compiled program ... // custom indicator input parameters (if necessary) int mode, // line index int shift // shift ); |
Hab gerade noch was in deinem Code entdeckt.
In einer For-Schleife führst du keine OrderSelect Funktion aus. Der EA wird dir dann nicht die richtige Magicnumber und auch nicht das korrekte Symbol für die jeweilige Order auswählen. for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break; if((OrderMagicNumber()!=MagicNumber_local)) continue; //--- check order type if(OrderType()==OP_BUY) { //Trailing continue; } if(OrderType()==OP_SELL) { //Trailing continue; } } |
Zitat:
Wenn bei iCustom irgendwelche Angaben zu Indikatorwerten nicht gemacht werden, dann nimmt er die Vorgabe. ("If the values of input parameters is not specified, the default values will be used."). Aus diesem Grunde sind all meine EA Versionen von Indikatoren so gebaut, daß die "unwichtig veränderbaren" Eingaben am Ende stehen (damit man sie beim iCustom Aufruf weglassen kann). Aber selbst wenn ich sämtliche Parameter explizit eingebe, ändert sich nichts am Ergebnis. Der Tester malt ja die Linien korrekt, ich verstehe nur nicht, warum die Linienvariable einen Wert hat, von dem ich nicht sehe woher der kommen soll. :confused: AVT |
Zitat:
AVT |
Sonst teile doch mal deinen Code für den Indikator. Bei selbstentwickelten Indikatoren kann es 1001 Gründe für falsche Berechnungen geben. Ich arbeite gerade an einem der iClose von mehreren Forexpaaren auswertet. Da gibt's auch vieles was man zusätzlich beachten muss, was einen einfacheren Indikatoren der wirklich nur den aktiven aktuellen Chart auswertet nicht beachten muss. Gruß Timo
|
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Du multiplizierst deine Grundlinie mit dem ATR von dem TF den du gerade offen hast und nicht mit H1.
Aus: atr1=iATR(NULL,0,100,i); Mach mal: atr1=iATR(NULL,HTframe,100,i); Damit der Indikator auch in kleineren Zeiteinheiten sinnvoll im Chart angezeigt werden wird, müsstest du nach dem Berechnen der eigentlichen Werte in H1 eine neue Schleife durchlaufen lassen, in der du die iTime von deinem Indikator zu dem iTime von dem Bar im Chart vergleichst und nur wenn dort ein Zeitsprung erfolgt, die nächsten H1 Werte angezeigt werden. In H1 werden ja deutlich weniger Werte für den Chart erzeugt, als wenn du M5 nehmen würdest. Die Berechneten Werten von z.B. 09 Uhr in H1 gelten dann im M5 Chart von 09.00 bis 09.55, also für 12 Bars |
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum