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
DTosc Nachricht...
Mladen,
Ich erhalte eine Meldung im Expers-Ordner, die besagt: ....... "incorrect start position 10148 for Array Maximum function" - der Indikator scheint sich jedoch perfekt zu verhalten.
Haben Sie eine Erklärung dafür?
Ich danke Ihnen im Voraus.
ValeoFX
Ohne zu wissen, um welchen Indikator es sich handelt, sieht es in der Regel so aus Finden Sie heraus, wo das Limit festgelegt ist, und ändern Sie es in etwas wie dieses:
Der zweite Parameter in diesem Ausdruck (Bars-1) stellt in diesem Fall sicher, dass das Limit nicht größer ist als die Anzahl der Bars im Chart.
Aber wie Sie bereits bemerkt haben, handelt es sich um einen "harmlosen" Fehler: Er tritt nur einmal auf (beim Laden des Indikators oder beim Wechsel des Zeitrahmens) und unterbricht im Gegensatz zu anderen Fehlern nicht die Berechnung des Indikators, so dass alle anderen Berechnungen korrekt durchgeführt und die Werte richtig berechnet werden.
Mit freundlichen Grüßen
mladen
Mladen,
Ich erhalte eine Meldung im Expers-Ordner, die lautet: ....... "incorrect start position 10148 for Array Maximum function" - der Indikator scheint sich jedoch einwandfrei zu verhalten.
Haben Sie eine Erklärung dafür?
Ich danke Ihnen im Voraus.Danke...
ValeoFX
Ohne zu wissen, um welchen Indikator es sich handelt, ist es in der Regel so: Finden Sie heraus, wo das Limit festgelegt ist, und ändern Sie es in etwas wie dieses:
Der zweite Parameter in diesem Ausdruck (Bars-1) stellt in diesem Fall sicher, dass das Limit nicht größer ist als die Anzahl der Bars im Chart.
Aber wie Sie bereits bemerkt haben, handelt es sich um einen "harmlosen" Fehler: Er tritt nur einmal auf (beim Laden des Indikators oder beim Wechsel des Zeitrahmens) und unterbricht im Gegensatz zu anderen Fehlern nicht die Berechnung des Indikators, so dass alle anderen Berechnungen korrekt durchgeführt und die Werte richtig berechnet werden.
Mit freundlichen Grüßen
mladen======================
Entschuldigung Mladen, ich hatte den Namen des Indikators im Fenster "Titel" (DTOsc) und habe nicht daran gedacht, ihn noch einmal zu wiederholen. Aber danke für die Erklärung - ich werde es mir sofort ansehen.
In Zeile 124 habe ich gefunden:
Limit = MathMax(Limit,MathMin(Bars,iCustom(NULL,timeFrame,IndicatorFileName, "getBarsCount",0,0)*timeFrame/Period()));
Da es sich von dem unterscheidet, was Sie vorgeschlagen haben, würden Sie bitte erläutern, was ich tun sollte, um das Problem zu beheben?
Ich bin Ihnen sehr dankbar.
ValeoFX
Ich habe nicht auf den Untertitel der Nachricht geachtet, sorry
Wie auch immer, wenn Sie die Version aus diesem Beitrag verwenden: https: //www.mql5.com/en/forum/general dann erhalten Sie diese Meldung
Wenn Sie hingegen die Version aus diesem Beitrag verwenden: https: //www.mql5.com/en/forum/general (die neuere Version), dann erhalten Sie diese Meldung nicht.
Ich weiß nicht mehr genau, wann ich die Seite aus dem ersten Beitrag erstellt habe, aber ich habe seitdem einige Kodierungsstile geändert (daher das Fehlen der Fehlermeldung), und ehrlich gesagt war mir die Fehlermeldung vorher nicht so wichtig, da sie wirklich nichts ändert. Danach habe ich einfach beschlossen, keinen Raum für eventuelle Fehler zu lassen, daher die "Sicherheitsprüfung" bei der Festlegung des Limits
____________________________________
PS: Diese Zeile funktioniert im Multi-Zeitrahmen-Modus. Sie "fragt" den Zielzeitrahmen, wie viele Balken sich im Zielzeitrahmen geändert haben, um die genaue Anzahl der benötigten Balken im aktuellen Zeitrahmen neu berechnen zu können. Diese Zeile ist also nur im Mtf-Modus wirksam.
mladen,
Ich bin neu in der Codierung. Und es ist schwierig. Aber wenn ich nur CodersGuru's Buch habe, um eine EA....... zu machen, wird nicht genug sein...
siehe mein Beitrag Seite 183
Tradefx1
Der Tagestrend, den Sie zu finden versuchen: Sie müssen ihn neu definieren (umschreiben). Im Moment ist er wie folgt geschrieben:
double MA5_1 = double iMA(NULL,1440,5,0,1,0,1);
double MA5_0 = double iMA(NULL,1440,5,0,1,0,0);
double MA8_1 = double iMA(NULL,1440,8,0,1,0,1);
double MA8_0 = double iMA(NULL,1440,8,0,1,0,0);
if (MA5_1 MA8_0) res =1;//Cross up
if (MA5_1 > MA8_1 && MA5_0 < MA8_0) res =2;//Cross down
BarCount=Bars;
return (res);
}[/php]and you are calling it like this :
if (GetDailyTrend(2) && ...) Order = SIGNAL_SELL;
[/php]The way it is used and called now expressions GetDailyTrend(1) and GetDailyTrend(2) are always true (in metatrader any value not equal to 0 is considered a true.
_________________________
Redefine the GetDailyTrend() to something like this:
[php]int GetDailyTrend ()
{
int res = 0;
double MA5_1 = double iMA(NULL,1440,5,0,1,0,1);
double MA5_0 = double iMA(NULL,1440,5,0,1,0,0);
double MA8_1 = double iMA(NULL,1440,8,0,1,0,1);
double MA8_0 = double iMA(NULL,1440,8,0,1,0,0);
if (MA5_1 MA8_0) res =1;//Cross up
if (MA5_1 > MA8_1 && MA5_0 < MA8_0) res =2;//Cross down
return (res);
}
And then use it this way :
[php]if (GetDailyTrend()==1 && ...) Order = SIGBNAL_BUY;
if (GetDailyTrend()==2 && ...) Order = SIGNAL_SELL;
_________________________
Was Bücher und Programmierung angeht: Ich habe immer geglaubt, dass man Programmierung am besten anhand von Beispielen und funktionierenden Programmen lernt. Ob Sie es glauben oder nicht, aber von den Leuten bei Microsoft kann man hervorragend lernen (sie schreiben den Code einheitlich (was bedeutet, dass sie feste Teamregeln haben, wie der Code geschrieben werden sollte), sehr sauber und sie versuchen, ihn so effizient wie möglich zu machen).
Es gibt viele Beispiele und funktionierende EAs im Elite-Bereich, die jeder verwenden kann (ich kann Ihnen diesen empfehlen https://www.mql5.com/en/forum/180383 ), aus Gründen, die ich bereits in diesem Thread genannt habe, und ich denke, er kann leicht als "Rahmen" für andere EAs verwendet werden. Aber es gibt auch eine Menge anderer sehr nützlicher EAs, die zum Lernen und zur Erstellung funktionierender EAs verwendet werden können.
Und denken Sie immer daran, eine Sache: Codierungssprachen sind genau das: "Sprachen". Das heißt, es ist ein einfaches Gespräch wie jedes andere Gespräch. Seien Sie nur vorsichtig, was Sie "sagen", um Computer, weil Computer, im Gegensatz zu den Menschen, nicht in Frage stellen, was Sie ihm sagen, sondern führt es einfach (und dann ist es manchmal nicht das, was wir wollen, dass es zu tun ) Und dann, nach einiger Zeit, erhalten Sie daran gewöhnt, "sprechen", um PC und dann wird alles viel einfacher
Nur für den Fall ...
Falls sich jemand fragt, was die grundlegende Logik hinter dem adxvma-Indikator ist, hier ist ein mittlerer Schritt davon, der genauso nützlich sein könnte wie der Indikator selbst. (es gibt noch weitere Schritte nach diesem, also vergleichen Sie die 2 Indikatoren nicht, aber dieser Schritt scheint besonders interessant zu sein) Falls es jemandem bekannt vorkommt, lautet die Antwort "ja". Es scheint, dass es sich um den Power-Trend-Indikator handelt (der "echte" Power-Trend, nicht die, die als solcher gepostet und veröffentlicht werden - da bin ich mir nicht 100%ig sicher (alles, was ich von dem "echten" Indikator gesehen habe, sind Bilder davon), aber er sieht ihm verdammt ähnlich)ValeoFX
Ich habe nicht auf den Untertitel der Nachricht geachtet, sorry
Wie auch immer, wenn Sie die Version aus diesem Beitrag verwenden: https: //www.mql5.com/en/forum/general dann erhalten Sie diese Meldung
Wenn Sie hingegen die Version aus diesem Beitrag verwenden: https: //www.mql5.com/en/forum/general (die neuere Version), dann erhalten Sie diese Meldung nicht.
Ich weiß nicht mehr genau, wann ich die Seite aus dem ersten Beitrag erstellt habe, aber ich habe seitdem einige Kodierungsstile geändert (daher das Fehlen der Fehlermeldung), und ehrlich gesagt war mir die Fehlermeldung vorher nicht so wichtig, da sie wirklich nichts ändert. Danach habe ich einfach beschlossen, keinen Raum für eventuelle Fehler zu lassen, daher die "Sicherheitsprüfung" bei der Festlegung des Limits
____________________________________
PS: Diese Zeile funktioniert im Multi-Zeitrahmen-Modus. Sie "fragt" den Zielzeitrahmen, wie viele Balken sich im Zielzeitrahmen geändert haben, um die genaue Anzahl der benötigten Balken im aktuellen Zeitrahmen neu berechnen zu können. Diese Zeile ist also nur im Mtf-Modus wirksam.=========================================================
Vielen Dank für die Erklärung. Ich weiß das sehr zu schätzen und es hilft mir auch, die Kodierung besser zu verstehen.
Ich werde die 2. Version sofort herunterladen.
Beste Wünsche.
adxvma
mladen,
Wäre es unangebracht, Sie zu bitten, die Tradestation-Version zu posten?
Ray
Leute, ich habe eine unlogische Sache im Indikator bemerkt (der erste Schritt, wie der adx-Teil berechnet wird) Ich habe den Tradestation-Indikator als Modell verwendet und es scheint, dass es einen Fehler darin gibt, den ich geerbt habe, ohne daran zu denken . In diesen ist der Fehler korrigiert. Auch die Ergebnisse sind auf diese Weise besser. Diese Berechnung ist viel näher an der aus dem öffentlichen Bereich (so dass die aus dem öffentlichen Bereich ist eine ziemlich korrekte Indikator) mit viel schneller Code in 99% der Zeit und Extras, die spezifisch sind nur auf diese in der Elite-Abschnitt gebucht. Also, wenn Sie die Indikatoren aus früheren Beiträgen heruntergeladen, verwenden Sie bitte diese stattdessen. Außerdem wurde der "normalen" Version eine weitere Option hinzugefügt: MultiColorMode- wenn auf false gesetzt, wird nur eine Farbe für die Anzeige von adxvma verwendet (nützlich, wenn man ein paar adxvma verwenden möchte, um auf Kreuzungen als Signale zu prüfen)
Gruß
MladenRay,
Hier ist es. Der Indikator :
Price (close),
length (14);
vars:
av (0);
av = ADXVMA(Price, length);
Plot1(av, "Rising");
Plot2(av, "Falling");
Plot3(av, "Neutral");
Plot4(av, "ADXVMA", iff(av = av[1], GetPlotColor(3), iff(av > av[1], GetPlotColor(1), GetPlotColor(2))));
NoPlot(1);
NoPlot(2);
NoPlot(3); [/php]and the adxvma function
[php]inputs:
Price (NumericSeries),
Length (NumericSimple);
vars:
TR(0),
DI_Diff(0),
DI_Sum(0),
ma(0),
pdm(0),
mdm(0),
pdi(0),
mdi(0),
DI_Factor(0),
VI(0),
diff(0),
HHV(0),
LLV(0),
WeightDM(Length),
WeightDI(Length),
WeightDX(Length),
ChandeEMA(Length),
out(0),
j(0);
once ma=Price;
//
// in order to make it right the "pdm=0; mdm=0;" must be added (it does not
// exist in original and that is an error, tradestation inherits values fom
// a previous loop and they must be zeroed before these calculations)
//
pdm=0; mdm=0;
if(Price>Price[1]) then pdm=Price-Price[1] else mdm=Price[1]-Price;
pdm=((WeightDM-1)*pdm[1] + pdm)/WeightDM;
mdm=((WeightDM-1)*mdm[1] + mdm)/WeightDM;
TR=pdm+mdm;
if (TR>0) then begin pdi=pdm/TR; mdi=mdm/TR; endelse begin
pdi=0;
mdi=0;
end;
pdi=((WeightDI-1)*pdi[1] + pdi)/WeightDI;
mdi=((WeightDI-1)*mdi[1] + mdi)/WeightDI;
DI_Diff=pdi-mdi;
if (DI_Diff<0) then DI_Diff= -DI_Diff;
DI_Sum=pdi+mdi;
DI_Factor=0;
if (DI_Sum>0) then out=DI_Diff/DI_Sum else out=0;
out=((WeightDX-1)*out[1] + out)/WeightDX;
if (out>out[1]) then begin HHV=out; LLV=out[1]; end
else begin
HHV=out[1];
LLV=out;
end;
for j = 1 to Length-1 begin
if(out[j+1]>HHV)then HHV=out[j+1];
if(out[j+1]<LLV) then LLV=out[j+1];
end;
diff = HHV - LLV;
VI=0;
if (diff>0) then VI=(out-LLV)/diff;
ma=((ChandeEMA-VI)*ma[1]+VI*Price)/ChandeEMA;
ADXVMA = ma;
Ichhabe einen Kommentar und eine Code-Korrekturhinzugefügt, die im Original nicht vorhanden war (das ist die einzige Änderung, die ich vorgenommen habe). Einige der Variablennamen sind irreführend: Es gibt keine EMA-Berechnung in einem der Schritte. Es handelt sich um einen geglätteten gleitenden Durchschnitt, der in den Zwischenschritten der Glättung verwendet wird, nicht um einen EMA. Außerdem werden Sie feststellen, dass es sich, auch wenn die grundlegende Berechnungslogik vom ADX stammt, eigentlich nicht um einen ADX handelt, aber er ist nahe genug dran, um den Namen im Falle dieses "hybriden" Indikators zu verdienen
Viele Grüße
Mladen
mladen,
Wäre es unangebracht, wenn ich Sie bitten würde, die Tradestation-Version zu posten?
Ray