Aide au codage - page 227

 
Air92:
Bonjour Mladen, vous avez fait la version de cet indicateur. Je voudrais demander de faire ici séparément la moyenne mobile, comme sur l'exemple d'un autre indicateur si c'est possible. Merci.

Air92

Ce n'est pas possible (déjà 8 tampons de dessin utilisés - metatrader 4 ne permet pas plus de 8 tampons de dessin)

 
mladen:
Air92 Ce n'est pas possible (déjà 8 tampons de dessin utilisés - metatrader 4 ne permet pas plus de 8 tampons de dessin)

Ok, Mladen, j'ai compris, merci.

 

Bonjour Mladen,

Pourriez-vous s'il vous plaît convertir ce MACD MTF indi en un EA, acheter quand le macd est vert sur 3 tf, vendre quand 3 tf sont rouges. fermer le trade et ouvrir un nouveau sur la tendance inverse.

Paramètres nécessaires : trail, breakeven, sloss, entrée sur barre ouverte ou fermée, numéro magique et taille de lot. Sur les tf inférieurs, cela fonctionne bien ! Je vous remercie. Merci

Dossiers :
 

Bonjour, j'ai trouvé quelque chose d'intéressant pour nous tous sur le forum.il y a ce logiciel qui peut aider à prédire la direction de la prochaine bougie.j'ai travaillé sur ce script mt4 pour y ajouter de la volatilité mais je n'ai pas pu.je veux aussi que l'alerte arrive à la clôture de la bougie actuelle et nous dise la direction de la prochaine bougie sur le point de se former.le principe n'est pas de moi, je l'ai copié de quelque part, le script fonctionne vraiment bien, je veux qu'un programmeur comme Codergurus et Mladin se penche sur ce script, il ne fonctionne pas vraiment bien maintenant, l'alerte continue à faucher et à repeindre.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

extern bool Alerts = TRUE ;

double CrossUp[] ;

double CrossDown[] ;

bool CrossedUp = false ;

bool CrossedDown = false ;

int SignalLabeled = 0 ; // 0 : état initial ; 1 : haut ; 2 : bas.

int upalert=false,downalert=false ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs

SetIndexStyle(0,DRAW_ARROW, EMPTY) ;

SetIndexArrow(0,233) ;

SetIndexBuffer(0,CrossUp) ;

SetIndexStyle(1,DRAW_ARROW, EMPTY) ;

SetIndexArrow(1,234) ;

SetIndexBuffer(1,CrossDown) ;

//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation de l'indicateur |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start(){

int limite,i,compteur ;

double pnow ;

double p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;

double SOT,SOT1,SOT2,SOT3,SOT4,SOT5,SOT6,SOT7,SOT8,SOT9,SOT10 ;

double SOTAV10 ;

double SOTAV2 ;

double Range, AvgRange ;

int counted_bars=IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if(counted_bars<0) return(-1) ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

for(i = 0 ; i <= limite ; i++) {

counter=i ;

Plage=0 ;

AvgRange=0 ;

pour (counter=i;counter<=i+12;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]) ;

}

Range=AvgRange/10 ;

// prix actuel Close et Open

double OpenPricenow = Open ;

double ClosePricenow = Close ;

double Volumenow = Volume ;

// bougie 1

double OpenPrice1 = Open ;

double ClosePrice1 = Close ;

double Volume1 = Volume ;

// bougie 2

double OpenPrice2 = Open ;

double ClosePrice2 = Close ;

double Volume2 = Volume ;

// bougie 3

double OpenPrice3 = Open ;

double ClosePrice3 = Close ;

double Volume3 = Volume ;

// bougie 4

double OpenPrice4 = Open ;

double ClosePrice4 = Close ;

double Volume4 = Volume ;

// bougie 5

double OpenPrice5 = Open ;

double ClosePrice5 = Close ;

double Volume5 = Volume ;

// bougie 6

double OpenPrice6 = Open ;

double ClosePrice6 = Close ;

double Volume6=Volume ;

// bougie 7

double OpenPrice7 = Open ;

double ClosePrice7 = Close ;

double Volume7 = Volume ;

// bougie 8

double OpenPrice8 =Open ;

double ClosePrice8 =Close ;

double Volume8 =Volume ;

// bougie 9

double OpenPrice9 = Open ;

double ClosePrice9 = Close ;

double Volume9 = Volume ;

// bougie 10

double OpenPrice10 =Open ;

double ClosePrice10=Close ;

double Volume10=Volume ;

pnow =(ClosePricenow - OpenPricenow) ;

SOT = (pnow / Volumenow)*10000 ;

p1 = (ClosePrice1 - OpenPrice1) ;

SOT1= (p1 / Volume1) *10000 ;

p2 = (ClosePrice2 - OpenPrice2) ;

SOT2 =(p2/ Volume2) *10000 ;

p3 =(ClosePrice3 - OpenPrice3) ;

SOT3 =(p3/Volume3)*10000 ;

p4=(ClosePrice4 - OpenPrice4) ;

SOT4=(p4/Volume4)*10000;

p5=(ClosePrice5 - OpenPrice5) ;

SOT5 =(p5/Volume5)*10000 ;

p6=(ClosePrice6 - OpenPrice6) ;

SOT6 =(p6/Volume6)*10000 ;

p7=(ClosePrice7 - OpenPrice7) ;

SOT7 =(p7 / Volume7)*10000 ;

p8 =(ClosePrice8 - OpenPrice8) ;

SOT8=(p8/Volume8)*10000;

p9 =(ClosePrice9-OpenPrice9) ;

SOT9 =(p9/Volume9)*10000 ;

p10 =(ClosePrice10 -OpenPrice10) ;

SOT10 = (p10/Volume10)*10000 ;

SOTAV10=(SOT1+SOT2+SOT3+SOT4+SOT5+SOT6+SOT7+SOT8+SOT9+SOT10/100*10);

SOTAV2 = (SOTAV10*2) ;

if ((SOT>SOTAV2)&&(ClosePrice1<OpenPrice1)&&(ClosePricenow<OpenPrice1)){

CrossedUp = true ;

CrossedDown= false ;

}

sinon

if((SOT>SOTAV2)&&(ClosePrice1>OpenPrice1)&&(ClosePricenow>OpenPricenow)){

CrossedUp = false ;

CrossedDown = true ;

}

if((CrossedUp==true)&&(SignalLabeled!=1)){

CrossUp=Low-Range*1.3 ;

if(i<=2 && Alerts && !upalert)

{

Alert (Symbol()," ",Period()," M Price UP ") ;

//SendMail("Acheter "+Symbole(),"") ;

upalert=true ;

downalert=false ;

}

SignalLabeled = 1 ;

}

if ((CrossedDown == true) && (SignalLabeled != 2)) {

CrossDown = High + Range*1.3 ;

if(i<=2 && Alerts && !downalert)

{

Alert (Symbol()," ",Period(), "M Price DOWN ") ;

//SendMail("Sell "+Symbol(),"") ;

downalert=true ;

upalert=false ;

}

SignalLabeled = 2 ;

}

}

return(0) ;

}

Voici le principe qui régit ce logiciel :

Speed of trade = (Price Change / Volume) par unité de temps. = (Open-Close)/volume du tick dans la période par défaut.

Si le SoT de la bougie actuelle est supérieur à deux fois le SoT moyen de la période sélectionnée, la prochaine bougie sera dans la même direction que la bougie actuelle. (Nos signaux peuvent être donnés à la clôture de la bougie actuelle).

Attention : Si la bougie actuelle est suivie de 2-3 bougies de même couleur, aucun signal ne doit être donné. A titre d'exemple : Date E/J(Open) E/J(High) E/J(Low) E/J(Close) Volume(E/J) Direction Changement de prix Vitesse 11/06/2012 03:56:00 102.456 102.456 102.429 102.429 96 DOWN -0.027 2.81 11/06/2012 03:57:00 102.429 102.429 102.398 102.413 158 DOWN -0.016 1.01 comme la vitesse est supérieure à 1.70 (moyenne de 14 bougies), il prédit que la prochaine bougie sera à la baisse. On peut faire en sorte que cet indicateur ressemble à un compteur de vitesse ou simplement faire apparaître le nombre avec le signal sur la bougie. Je pense que cela aidera beaucoup à prendre les bonnes décisions. La théorie derrière cela est que chaque hausse ou baisse a besoin d'une force ou d'une inertie plus grande que la force existante, donc dès que nous voyons ou capturons cette force supplémentaire, nous pouvons déterminer la direction de la prochaine bougie et les valeurs également.

......................................................................................................................

 
Mastercash:
Bonjour, j'ai trouvé quelque chose d'intéressant pour nous tous dans le forum.il y a ce logiciel qui peut aider à prédire la direction de la prochaine bougie.j'ai travaillé sur ce script mt4 pour y ajouter de la volatilité mais je n'ai pas pu.je veux aussi faire l'alerte pour venir à la fermeture de la bougie actuelle et nous dire la direction de la prochaine bougie sur le point de se former.Le principe n'était pas le mien, je l'ai copié de quelque part, le script fonctionne vraiment, je veux qu'un programmeur comme Codergurus et Mladin se penche sur ce script, il ne fonctionne pas vraiment bien maintenant, l'alerte continue de faucher et de repeindre.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_width1 4

#property indicator_width2 4

extern bool Alerts = TRUE ;

double CrossUp[] ;

double CrossDown[] ;

bool CrossedUp = false ;

bool CrossedDown = false ;

int SignalLabeled = 0 ; // 0 : état initial ; 1 : haut ; 2 : bas.

int upalert=false,downalert=false ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs

SetIndexStyle(0,DRAW_ARROW, EMPTY) ;

SetIndexArrow(0,233) ;

SetIndexBuffer(0,CrossUp) ;

SetIndexStyle(1,DRAW_ARROW, EMPTY) ;

SetIndexArrow(1,234) ;

SetIndexBuffer(1,CrossDown) ;

//----

return(0) ;

}

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

//| Fonction personnalisée de désinitialisation de l'indicateur |

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

int deinit()

{

//----

//----

return(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start(){

int limite,i,compteur ;

double pnow ;

double p1,p2,p3,p4,p5,p6,p7,p8,p9,p10;

double SOT,SOT1,SOT2,SOT3,SOT4,SOT5,SOT6,SOT7,SOT8,SOT9,SOT10 ;

double SOTAV10 ;

double SOTAV2 ;

double Range, AvgRange ;

int counted_bars=IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if(counted_bars<0) return(-1) ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

for(i = 0 ; i <= limite ; i++) {

counter=i ;

Plage=0 ;

AvgRange=0 ;

pour (counter=i;counter<=i+12;counter++)

{

AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]) ;

}

Range=AvgRange/10 ;

// prix actuel Close et Open

double OpenPricenow = Open ;

double ClosePricenow = Close ;

double Volumenow = Volume ;

// bougie 1

double OpenPrice1 = Open ;

double ClosePrice1 = Close ;

double Volume1 = Volume ;

// bougie 2

double OpenPrice2 = Open ;

double ClosePrice2 = Close ;

double Volume2 = Volume ;

// bougie 3

double OpenPrice3 = Open ;

double ClosePrice3 = Close ;

double Volume3 = Volume ;

// bougie 4

double OpenPrice4 = Open ;

double ClosePrice4 = Close ;

double Volume4 = Volume ;

// bougie 5

double OpenPrice5 = Open ;

double ClosePrice5 = Close ;

double Volume5 = Volume ;

// bougie 6

double OpenPrice6 = Open ;

double ClosePrice6 = Close ;

double Volume6=Volume ;

// bougie 7

double OpenPrice7 = Open ;

double ClosePrice7 = Close ;

double Volume7 = Volume ;

// bougie 8

double OpenPrice8 =Open ;

double ClosePrice8 =Close ;

double Volume8 =Volume ;

// bougie 9

double OpenPrice9 = Open ;

double ClosePrice9 = Close ;

double Volume9 = Volume ;

// bougie 10

double OpenPrice10 =Open ;

double ClosePrice10=Close ;

double Volume10=Volume ;

pnow =(ClosePricenow - OpenPricenow) ;

SOT = (pnow / Volumenow)*10000 ;

p1 = (ClosePrice1 - OpenPrice1) ;

SOT1= (p1 / Volume1) *10000 ;

p2 = (ClosePrice2 - OpenPrice2) ;

SOT2 =(p2/ Volume2) *10000 ;

p3 =(ClosePrice3 - OpenPrice3) ;

SOT3 =(p3/Volume3)*10000 ;

p4=(ClosePrice4 - OpenPrice4) ;

SOT4=(p4/Volume4)*10000;

p5=(ClosePrice5 - OpenPrice5) ;

SOT5 =(p5/Volume5)*10000 ;

p6=(ClosePrice6 - OpenPrice6) ;

SOT6 =(p6/Volume6)*10000 ;

p7=(ClosePrice7 - OpenPrice7) ;

SOT7 =(p7 / Volume7)*10000 ;

p8 =(ClosePrice8 - OpenPrice8) ;

SOT8=(p8/Volume8)*10000;

p9 =(ClosePrice9-OpenPrice9) ;

SOT9 =(p9/Volume9)*10000 ;

p10 =(ClosePrice10 -OpenPrice10) ;

SOT10 = (p10/Volume10)*10000 ;

SOTAV10=(SOT1+SOT2+SOT3+SOT4+SOT5+SOT6+SOT7+SOT8+SOT9+SOT10/100*10);

SOTAV2 = (SOTAV10*2) ;

if ((SOT>SOTAV2)&&(ClosePrice1<OpenPrice1)&&(ClosePricenow<OpenPrice1)){

CrossedUp = true ;

CrossedDown= false ;

}

sinon

if((SOT>SOTAV2)&&(ClosePrice1>OpenPrice1)&&(ClosePricenow>OpenPricenow)){

CrossedUp = false ;

CrossedDown = true ;

}

if((CrossedUp==true)&&(SignalLabeled!=1)){

CrossUp=Low-Range*1.3 ;

if(i<=2 && Alerts && !upalert)

{

Alert (Symbol()," ",Period()," M Price UP ") ;

//SendMail("Acheter "+Symbole(),"") ;

upalert=true ;

downalert=false ;

}

SignalLabeled = 1 ;

}

if ((CrossedDown == true) && (SignalLabeled != 2)) {

CrossDown = High + Range*1.3 ;

if(i<=2 && Alerts && !downalert)

{

Alert (Symbol()," ",Period(), "M Price DOWN ") ;

//SendMail("Sell "+Symbol(),"") ;

downalert=true ;

upalert=false ;

}

SignalLabeled = 2 ;

}

}

return(0) ;

}

Voici le principe qui régit ce logiciel :

Vitesse de transaction = (Variation de prix / Volume) par unité de temps. = (Ouverture-Clôture)/volume du tick dans la période par défaut.

Si le SoT de la bougie actuelle est supérieur à deux fois le SoT moyen de la période sélectionnée, la prochaine bougie sera dans la même direction que la bougie actuelle. (Nos signaux peuvent être donnés à la clôture de la bougie actuelle).

Attention : Si la bougie actuelle est suivie de 2-3 bougies de même couleur, aucun signal ne doit être donné. A titre d'exemple : Date E/J(Open) E/J(High) E/J(Low) E/J(Close) Volume(E/J) Direction Changement de prix Vitesse 11/06/2012 03:56:00 102.456 102.456 102.429 102.429 96 DOWN -0.027 2.81 11/06/2012 03:57:00 102.429 102.429 102.398 102.413 158 DOWN -0.016 1.01 comme la vitesse est supérieure à 1.70 (moyenne de 14 bougies), il prédit que la prochaine bougie sera à la baisse. On peut faire en sorte que cet indicateur ressemble à un compteur de vitesse ou simplement faire apparaître le nombre avec le signal sur la bougie. Je pense que cela aidera beaucoup à prendre les bonnes décisions. La théorie derrière cela est que chaque hausse ou baisse a besoin d'une force ou d'une inertie plus grande que la force existante, donc dès que nous voyons ou capturons cette force supplémentaire, nous pouvons déterminer la direction de la prochaine bougie et les valeurs également.

......................................................................................................................

Mastercash

Comme je le vois, il faudra faire des tests d'exécution avant de faire quoi que ce soit sur le code. Dès que le marché sera ouvert, nous verrons ce que nous pouvons faire.

 

Bonjour

Quelqu'un pourrait-il m'aider à ajouter du code à ce script.jarroo_level_picker.mq4

Ce script dessine une ligne sur l'ouverture ou la fermeture de la bougie selon qu'on la dépose sous ou sous la moitié de la bougie et j'aimerais qu'il dessine aussi une petite flèche sous ou sous cette bougie pour voir plus tard sur quelle bougie il a été utilisé.

Merci d'avance.

Dossiers :
 
Andrewsurfer:
Bonjour

Quelqu'un pourrait-il m'aider à ajouter du code à ce script.jarroo_level_picker.mq4

Ce script dessine une ligne à l'ouverture ou à la fermeture de la bougie selon qu'on la dépose sous ou sous la moitié de la bougie et j'aimerais qu'il dessine aussi une petite flèche sous ou sous cette bougie pour voir plus tard sur quelle bougie il a été utilisé.

Merci d'avance.

Andrewsurfer

Essayez cette version. Elle n'ajoute pas de flèche mais ajoute une barre de la même couleur que la ligne de la barre sur laquelle la bougie a été utilisée.

Dossiers :
 
mladen:
Andrewsurfer Essayez cette version. Elle n'ajoute pas de flèche mais une barre de la même couleur que la ligne de la barre dont la bougie a été utilisée.

Je suis désolé mais je ne vois aucun changement. Il n'y a toujours que la ligne bleue sans aucun autre signe.

 
Andrewsurfer:
Je suis désolé mais je ne vois aucun changement. Il n'y a toujours que la ligne bleue sans aucun autre signe.

Il y a une ligne supplémentaire (comme sur l'image) et elle est créée à la barre où vous déposez le script à l'endroit suivant

Dossiers :
v_line.gif  36 kb
 
mladen:
Il y a une ligne supplémentaire (comme sur l'image) et elle est créée à la barre où vous déposez le script à l'endroit suivant

J'avais des paramètres incorrects du graphique MT4 au premier plan et maintenant ça marche.

Merci beaucoup.