Hilfe bei der Codierung - Seite 258

 
Tomcat98:
Hallo Mladen, hallo zusammen,

Verdammter neuer Build!

Mit B625 habe ich jetzt neue Warnungen bekommen.

"Rückgabewert von 'OrderSelect' sollte geprüft werden"

für folgenden Code:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

Wie kann man das korrigieren?

Vielen Dank für alles.

Kater98

Tomcat98

Gehen Sie wie folgt vor:

deklarieren Sie eine globale boolesche Variable (z.B. so) :

bool dummyResult;

Und dann setzen Sie einfach "dummyResult =" vor den OrderSelect - dann haben Sie folgendes :

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

 
Tomcat98:
Hallo Mladen , hallo alle,

Verdammter neuer Build!

Mit B625 habe ich jetzt neue Warnungen bekommen.

"Rückgabewert von 'OrderSelect' sollte geprüft werden"

für folgenden Code:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

Wie kann man das korrigieren?

Vielen Dank für alles.

Kater98

Nun, man kann es mit einigem Aufwand loswerden.

Aber ich habe eine permanente Warnung, die ich auf keinen Fall entfernen kann (außer durch Entfernen der Zeile im Quellcode):

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

was eine nutzlose Information ist, wenn ich sie nur als Supertyp für DLL-Aufrufe verwende (ich habe keine Idee für eine andere Verwendung der leeren Struktur).

 

Hallo Mladen,

Ja, es funktioniert:

Gute Arbeit.

Herzlichen Dank für deine Hilfe.

Mit freundlichen Grüßen.

Kater98

 

Hallo zusammen,

seit einigen Tagen bekomme ich sporadisch folgenden Fehler in einem meiner Indikatoren, den ich in meinem EA verwende.

2014.04.10 09:01:49.533 2014.01.08 03:45 Zugriffsverletzung write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXXXX\MQL4\indicators\MyDailyFibo.ex4'

Ich verwende MT Version 4. Build 625

Bitte helfen Sie mir, die Ursache für dieses Problem zu finden. Lassen Sie mich wissen, ob Sie sich den Indikator ansehen müssen. Es tritt nicht immer auf, aber sehr oft...

Vielen Dank und beste Grüße,

Antonius

 
Antony1:
Hallo zusammen,

seit einigen Tagen erhalte ich sporadisch den folgenden Fehler in einem meiner Indikatoren, den ich in meinem EA verwende.

2014.04.10 09:01:49.533 2014.01.08 03:45 Zugriffsverletzung write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXXXX\MQL4\indicators\MyDailyFibo.ex4'

Ich verwende MT Version 4. Build 625

Bitte helfen Sie mir, die Ursache für dieses Problem zu finden. Lassen Sie mich wissen, ob Sie sich den Indikator ansehen müssen. Es tritt nicht immer auf, aber sehr oft...

Vielen Dank und beste Grüße,

Antony

Antonius

Das ist kein Problem mit Ihrem Indikator

Es ist ein Problem mit dem neuen Metatrader 4 (er hat Probleme mit der korrekten Speicherzuweisung und dem Speicherzugriff - Build 628 ist ein bisschen besser, aber nicht viel)

 

Hallo,

ich brauche Hilfe bei diesem Indikator, den ich versucht habe zu schreiben (Wilder trailing stop candles MTF).

Erstes Problem: mein Indikator zieht Kaufsignal 1 bar vor, dass man sein sollte, und ich weiß, das ist aufgrund der Art und Weise der Steigung berechnet wird, aber ich weiß nicht, wie es zu beheben.

Zweites Problem: Die Farben stimmen nicht überein, wahrscheinlich habe ich mit den Puffern in diesem Teil Mist gebaut, aber ich kann es nicht beheben :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_nachlaufender_stopp_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Hi,

Ich brauche Hilfe bei diesem Indikator, den ich zu schreiben versuchte (Wilder Trailing Stop Candles MTF).

Erstes Problem: mein Indikator zieht Kaufsignal 1 bar vor, dass man sein sollte, und ich weiß, das ist aufgrund der Art und Weise der Steigung berechnet wird, aber ich weiß nicht, wie es zu beheben.

Zweites Problem: Die Farben stimmen nicht überein, wahrscheinlich habe ich mit den Puffern in diesem Teil Mist gebaut, aber ich kann es nicht beheben :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_nachlaufender_stopp_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh, die Farben stimmen überein. Vielleicht muss ich erst Dochtpuffer und dann Körperpuffer schreiben?

 
thefxpros:
mmmhh, die Farben stimmen überein. Vielleicht muss ich zuerst Dochtpuffer und dann Körperpuffer schreiben?

thefxpros

Am einfachsten ist es, den Wilders Trailing-Stop-Indikator zu ändern (ansonsten werden Sie in einigen komplizierten if then else-Konstruktionen gefangen sein). Hier ist eine Version mit einem internen Puffer, den Sie benötigen: Trend. Wenn er gleich 1 ist, ist der Trend aufwärts, wenn er gleich -1 ist, ist der Trend abwärts. Verwenden Sie diesen Indikator anstelle des Originals und lesen Sie einfach den Wert von Puffer 4 ab - danach ist alles ganz einfach

 
mladen:
thefxpros Am einfachsten ist es, den Wilders-Trailing-Stop-Indikator zu ändern (sonst bleibt man in komplizierten if then else-Konstruktionen hängen). Hier ist eine Version mit einem internen Puffer, den Sie wollen: Trend. Wenn er gleich 1 ist, ist der Trend aufwärts, wenn er gleich -1 ist, ist der Trend abwärts. Verwenden Sie diesen Indikator anstelle des Originals und lesen Sie einfach den Wert von Puffer 4 ab - danach ist alles ganz einfach

Wie das?

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF candles("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

//+------------------------------------------------------------------+

Ich kann es nicht glauben, es funktioniert auf Anhieb ..... Gibt es noch etwas, was ich besser schreiben kann (Trendbuffer löschen ja, habe ich jetzt gesehen) als ich gemacht habe?

danke Mladen

Dateien:
cattura_2.jpg  72 kb
 
mladen:
Sie können keine Linien mit der Länge in Zoll auf dem Chart zeichnen (es ist völlig unmöglich mit Metatrader und ich bezweifle, dass es in jeder Handelsplattform möglich ist). Und diese Linien sind horizontale Linien und keine Trendlinien (Trendlinien können begrenzt werden, aber horizontale Linien nicht). Wenn es keine exakte mathematische Regel gibt, wie die Linien gezeichnet werden sollten (abhängig vom Preis, nicht von Inches), können sie einfach nicht gezeichnet werden, und aus dieser Zahlenfolge scheint es, dass die Regeln für jede einzelne Linie einzigartig sind

Ok, danke, ich habe ein besseres Indy gefunden, das Sie bearbeiten können. Es war ein unvollendetes Projekt, das ein Programmierer in forexfactory gemacht hat und ich kann ihn nicht mehr finden. Bitte ersetzen Sie 00, 20, 50, 80 mit meinen Zahlen. Zeilen sind auch Cluster zusammen, anstatt nur auf spezielle Zahlen 5, 15, 31, 45 und 67.

Danke

Dateien: