Aide au codage - page 258

 
Tomcat98:
Bonjour Mladen, bonjour à tous,

Maudite nouvelle Build !

Avec la B625, j'ai maintenant de nouveaux avertissements.

"La valeur de retour de 'OrderSelect' doit être vérifiée".

pour le code suivant :

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;"

Comment corriger cela ?

Merci à tous.

Tomcat98

Tomcat98

Faites ce qui suit :

déclarez une variable booléenne globale (comme ceci, par exemple) :

bool dummyResult ;

Et ensuite, placez simplement "dummyResult =" devant l'OrderSelect - alors vous aurez ce qui suit :

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

 
Tomcat98:
Bonjour Mladen, bonjour à tous,

Maudite nouvelle Build !

Avec la B625, j'ai maintenant de nouveaux avertissements.

"La valeur de retour de 'OrderSelect' doit être vérifiée".

pour le code suivant :

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;"

Comment corriger cela ?

Merci à tous.

Tomcat98

Eh bien, vous pouvez vous en débarrasser au prix d'un certain effort.

Mais j'ai un avertissement permanent, que je ne peux supprimer par aucun moyen (sauf en supprimant la ligne du code source) :

struct Empty {};[/CODE]

results in

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

ce qui est une info inutile, si je l'utilise comme supertype pour les appels de dll uniquement (je n'ai aucune idée d'une autre utilisation de la structure vide).

 

Bonjour Mladen,

Oui, cela fonctionne :

Bon travail.

Merci beaucoup pour votre aide.

Sincèrement.

Tomcat98

 

Bonjour à tous,

Depuis quelques jours, j'obtiens sporadiquement l'erreur suivante dans un de mes indicateurs que j'utilise dans mon EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violation d'accès en écriture à 0xFFFFFFFE dans 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'.

J'utilise la version 4 de MT. Build 625

Veuillez m'aider à trouver l'origine de ce problème. Faites-moi savoir si vous devez examiner l'indicateur. Il n'apparaît pas tout le temps mais très souvent...

Thx et meilleures salutations,

Antony

 
Antony1:
Bonjour à tous,

Depuis quelques jours, j'obtiens sporadiquement l'erreur suivante dans un de mes indicateurs que j'utilise dans mon EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violation d'accès en écriture à 0xFFFFFFFE dans 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'.

J'utilise la version 4 de MT. Build 625

Veuillez m'aider à trouver l'origine de ce problème. Faites-moi savoir si vous devez examiner l'indicateur. Il n'apparaît pas tout le temps mais très souvent...

Thx et meilleures salutations,

Antony

Antony

Ce n'est pas un problème avec votre indicateur

C'est un problème avec le nouveau metatrader 4 (il a des problèmes avec l'allocation et l'accès à la mémoire - la version 628 est un peu mieux mais pas beaucoup).

 

Bonjour,

J'ai besoin d'aide avec cet indicateur que j'ai essayé d'écrire (Wilder trailing stop candles MTF).

Premier problème : mon indicateur affiche un signal d'achat 1 barre avant ce qu'il devrait être et je sais que cela est dû à la façon dont la pente est calculée mais je ne sais pas comment le corriger.

Deuxième problème : Les couleurs ne correspondent pas, probablement que j'ai fait une erreur avec les tampons dans cette partie mais je me trompe et je ne peux pas le corriger :

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_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Salut,

J'ai besoin d'aide avec cet indicateur que j'ai essayé d'écrire (Wilder trailing stop candles MTF).

Premier problème : mon indicateur affiche un signal d'achat 1 barre avant ce qu'il devrait être et je sais que cela est dû à la façon dont la pente est calculée mais je ne sais pas comment le corriger.

Deuxième problème : Les couleurs ne correspondent pas, probablement que j'ai fait une erreur avec les tampons dans cette partie mais je me trompe et je ne peux pas le corriger :

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_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh, les couleurs correspondent. Peut-être que je dois écrire d'abord les mèches et ensuite les corps ?

 
thefxpros:
mmmhh, les couleurs correspondent. Peut-être que je dois écrire d'abord les wickbuffers et ensuite les bodybuffers ?

thefxpros

Le plus simple est de changer l'indicateur de trailing stop Wilders (sinon vous serez pris dans des constructions if then else compliquées). Voici une version avec un tampon interne que vous voulez : la tendance. Si elle est égale à 1, la tendance est à la hausse, si elle est égale à -1, la tendance est à la baisse. Utilisez cet indicateur à la place de l'original et lisez simplement la valeur du buffer 4 - après cela tout est simple

 
mladen:
thefxpros Le plus simple est de changer l'indicateur Wilders trailing stop (sinon vous serez pris dans des constructions compliquées if then else). Voici une version avec un tampon interne que vous voulez : trend. Si elle est égale à 1, la tendance est à la hausse, si elle est égale à -1, la tendance est à la baisse. Utilisez cet indicateur à la place de l'original et lisez simplement la valeur du buffer 4 - après cela, tout est simple.

Comme ça ?

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

#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);

}

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

Je ne peux pas croire, il fonctionne à la première tentative .....Y a-t-il quelque chose que je peux écrire mieux (supprimer trendbuffer oui, j'ai vu maintenant) que ce que j'ai fait ?

Merci Mladen

Dossiers :
cattura_2.jpg  72 kb
 
mladen:
Vous ne pouvez pas dessiner des lignes avec une longueur en pouces sur le graphique (c'est complètement impossible en utilisant metatrader et je doute que ce soit possible dans n'importe quelle plateforme de trading). Et ces lignes sont des objets de lignes horizontales et non des lignes de tendance (les lignes de tendance peuvent être limitées mais pas les lignes horizontales). S'il n'y a pas de règle mathématique exacte sur la façon dont les lignes doivent être tracées (en fonction du prix, pas en pouces), elles ne peuvent tout simplement pas être tracées, et d'après cette séquence de chiffres, il semble que les règles soient uniques pour chaque ligne.

Ok merci j'ai trouvé un meilleur indy que vous pouvez éditer. C'était un projet inachevé qu'un codeur a fait dans forexfactory et je ne peux plus le localiser. Veuillez remplacer 00, 20, 50, 80 par mes chiffres. Les lignes sont également regroupées au lieu d'être placées sur les numéros spéciaux 5, 15, 31, 45 et 67.

Merci

Dossiers :