Demandez ! - page 7

 

Bonjour, J'ai joint un indicateur en mq4 qui alerte lorsque le cci<-150

Il alerte sur une base tick par tick ; quelqu'un peut-il le modifier pour qu'il n'alerte qu'à la clôture de la bougie ?

Dans ce cas, je voudrais seulement être alerté lorsque le cci est < -150 à la fin d'une bougie de 5m.

Merci d'avance

Dossiers :
 

ok, deuxième question, je pense que celle-ci est facile :

Je construis un indicateur utilisateur pour m'alerter lorsque le prix de clôture croise une MA.

J'utilise l'iCustom pour importer l'indicateur MA.

et ensuite je ne sais pas comment utiliser le prix de clôture ; j'ai essayé CLOSE et PRICE_CLOSE mais sans résultat :

if (CLOSE?>ma1)

adxvalue= -1 ;

si (PRICE_CLOSE?>ma1)

adxvalue= -1 ;

De plus, je veux que l'alerte ne se déclenche qu'à la fin d'une barre de 5m et ne fonctionne pas tick par tick : que dois-je changer d'autre (cette question est celle de mon post précédent) ?

Merci

 

Bonjour Codersguru,

Pourriez-vous m'aider à coder une alerte dans Osma Color afin qu'elle soit déclenchée lorsque les couleurs changent.

Merci

Duncan

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

//| OsMA_color.mq4 |

//| Rafael |

//| marynarz15@wp.pl |

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

#property copyright "Rafael"

#property link "marynarz15@wp.pl"

//---- paramètres de l'indicateur

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Lime

#property indicator_color2 Red

//---- paramètres de l'indicateur

extern int FastEMA=12 ;

extern int SlowEMA=26 ;

extern int SignalSMA=9 ;

//---- tampons de l'indicateur

double ind_buffer1a[] ;

double ind_buffer1b[] ;

double ind_buffer2[] ;

double ind_buffer3[] ;

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

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

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

int init()

{

//---- 2 tampons supplémentaires sont utilisés pour le comptage.

IndicatorBuffers(4) ;

//---- paramètres de dessin

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2) ;

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2) ;

SetIndexDrawBegin(0,SignalSMA) ;

SetIndexDrawBegin(1,SignalSMA) ;

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2) ;

//---- 3 mappage des tampons d'indicateurs

if(!SetIndexBuffer(0,ind_buffer1a) &&

!SetIndexBuffer(1,ind_buffer1b) &&

!SetIndexBuffer(2,ind_buffer2) &&

!SetIndexBuffer(3,ind_buffer3))

Print("cannot set indicator buffers !") ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

IndicatorShortName("OsMA("+FastEMA+", "+SlowEMA+", "+SignalSMA+")" ;)

//---- initialisation terminée

retour(0) ;

}

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

//| Moyenne mobile de l'oscillateur |

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

int start()

{

int limite ;

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 ;

//---- macd compté dans le 1er tampon supplémentaire

for(int i=0 ; i<limit ; i++)

ind_buffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)

-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i) ;

//---- ligne de signal comptée dans le 2ème tampon supplémentaire

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

ind_buffer3=iMAOnArray(ind_buffer2,Bars,SignalSMA,0,MODE_SMA,i) ;

//---- boucle principale

double valeur=0 ;

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

{

ind_buffer1a=0.0 ;

ind_buffer1b=0.0 ;

valeur=ind_buffer2-ind_buffer3 ;

si (valeur>0) ind_buffer1a=valeur ;

si (valeur<0) ind_buffer1b=valeur ;

}

//---- terminé

retour(0) ;

}

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

 

Bonjour

J'ai un indicatore qui est capable de reconnaître le motif papillon mais il est écrit pour MT3. Quelqu'un peut-il me faire une faveur et le convertir en MQL4.

Dossiers :
butterfly.mql  3 kb
 

Je joins deux pdf. L'essentiel du modèle et les règles sont mentionnés.

Dossiers :
attachment2.pdf  141 kb
attachment1.pdf  189 kb
 

Bonjour

Bonjour à tous,

vous connaissez peut-être tous le nom de cet auteur mais vous n'avez jamais su que

sa méthode est codée en logiciel.

Pesavento a écrit, entre autres, ces merveilleux livres :

* Les ratios de Fibonacci avec la reconnaissance des formes.

* Profitable Patterns for Stock Trading

* Astro-cycles : Traders Viewpoint

A propos, je sais que le logiciel ENSIGN dispose également de l'outil d'étude des motifs originaux de Pesavento, que vous pouvez voir sur le lien suivant.

Si quelqu'un peut l'importer d'ENSIGN vers MetaTrader 4, ce serait formidable.

http://www.ensignsoftware.com/help/pesavento.htm

 

Encore une fois, bonjour

j'ai trouvé le code pour le motif gartley 222 sur deux plateformes.

Si quelqu'un peut le traduire pour MetaTrade 4, ce sera superbe !

voici les codes :

1. code TradeStation pour le motif Gartley 222 trouvé dans "Trading the Gartley 222" par Aaron Behle et Mark Conway, p. 38 :

Entrées :

Longueur(100),

Strength(8),

Tolerance(0.10),

BullColor(Blue),

BearColor(Rouge) ;

Variables :

F1(0.618),

F2(0.786),

F3(1.27),

F4(1.618),

P1Bar(-1),

P2Bar(-1),

T1Bar(-1),

T2Bar(-1),

P1(0.0),

P2(0.0),

T1(0.0),

T2(0.0),

PTValid(False),

HLValid(False),

InZone(False),

GD(0.0),

XA(0.0),

AB(0.0),

BC(0.0),

CD(0.0),

AD(0.0),

C1(Faux),

C2(Faux),

C3(Faux),

C4(Faux),

ABdXA(0.0),

BCdAB(0.0),

CDdBC(0.0),

ADdXA(0.0),

TL1(-1),

TL2(-1),

TL3(-1),

TL4(-1),

TL5(-1),

TL6(-1) ;

P1Bar = SwingHighBar(1, High, Strength, Length) ;

P2Bar = SwingHighBar(2, High, Strength, Length) ;

T1Bar = SwingLowBar(1, Low, Strength, Length) ;

T2Bar = SwingLowBar(2, Low, Strength, Length) ;

Si P1Bar -1 et

P2Bar -1 et

T1Bar -1 et

T2Bar -1 Then Begin

{Test pour une hausse de 222}

{Trough X est T2}

T2 = Low[T2Bar] ;

{Le pic A est P2}

P2 = Haut[P2Bar] ;

{Le creux B est T1}

T1 = Bas [T1Bar] ;

{Le pic C est P1}

P1 = Haut [P1Bar] ;

{D est le point d'achat}

GD = Low ;

PTValid = P1Bar < T1Bar et T1Bar < P2Bar et P2Bar < T2Bar ;

HLValid = P1 T2 et P1 > T1 ;

InZone = GD T2 et P2 >= Highest(High, T2Bar) ;

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2 ;

AB = P2 - T1 ;

BC = P1 - T1 ;

CD = P1 - GD ;

AD = P2 - GD ;

ABdXA = AB / XA ; {AB devrait être 61,8% de XA}

C1 = ABdXA > F1 - Tolérance et ABdXA < F1 + Tolérance ;

BCdAB = BC / AB ; {BC devrait être 61,8-78,6% de AB}

C2 = BCdAB > F1 - Tolérance et BCdAB < F2 + Tolérance ;

CDdBC = CD / BC ; {CD devrait être 127-161.8% de BC}

C3 = CDdBC > F3 - Tolérance et CDdBC < F4 + Tolérance ;

ADdXA = AD / XA ; {AD devrait être 78,6% de XA}

C4 = ADdXA > F2 - Tolérance et ADdXA < F2 + Tolérance ;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P2Bar], Time[P2Bar], P2) ;

Si TL1 >= 0 Alors Commencer

TL_SetColor(TL1, BullColor) ;

TL_SetStyle(TL1, Tool_Solid) ;

TL_SetSize(TL1, 2) ;

Fin ;

TL2 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T1Bar], Time[T1Bar], T1) ;

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BullColor) ;

TL_SetStyle(TL2, Tool_Solid) ;

TL_SetSize(TL2, 2) ;

Fin ;

TL3 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date[P1Bar], Time[P1Bar], P1) ;

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BullColor) ;

TL_SetStyle(TL3, Tool_Solid) ;

TL_SetSize(TL3, 2) ;

Fin ;

TL4 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD) ;

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BullColor) ;

TL_SetStyle(TL4, Tool_Solid) ;

TL_SetSize(TL4, 2) ;

Fin ;

TL5 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD) ;

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BullColor) ;

TL_SetStyle(TL5, Tool_Dotted) ;

Fin ;

TL6 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date, Time, GD) ;

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BullColor) ;

TL_SetStyle(TL6, Tool_Dotted) ;

Fin ;

Fin ;

Fin ;

{Test pour une baisse de 222}

{Peak X est P2}

{Trough A est T2}

{Peak B est P1}

{Trough C est T1}

{GD est le point court}

GD = Haut ;

PTValid = T1Bar < P1Bar et P1Bar < T2Bar et T2Bar < P2Bar ;

HLValid = T1 > T2 et P1 < P2 et T1 < P1 ;

InZone = GD > P1 et GD < P2 et T2 <= Lowest(Low, P2Bar) ;

If PTValid and HLValid and InZone Then Begin

XA = P2 - T2 ;

AB = P1 - T2 ;

BC = P1 - T1 ;

CD = GD - T1 ;

AD = GD - T2 ;

ABdXA = AB / XA ; {AB devrait être 61,8% de XA}

C1 = ABdXA > F1 - Tolérance et ABdXA < F1 + Tolérance ;

BCdAB = BC / AB ; {BC devrait être 61,8-78,6% de AB}

C2 = BCdAB > F1 - Tolérance et BCdAB < F2 + Tolérance ;

CDdBC = CD / BC ; {CD devrait être 127-161.8% de BC}

C3 = CDdBC > F3 - Tolérance et CDdBC < F4 + Tolérance ;

ADdXA = AD / XA ; {AD devrait être 78,6% de XA}

C4 = ADdXA > F2 - Tolérance et ADdXA < F2 + Tolérance ;

If C1 and C2 and C3 and C4 Then Begin

TL1 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date[T2Bar], Time[T2Bar], T2) ;

Si TL1 >= 0 Alors Commencer

TL_SetColor(TL1, BearColor) ;

TL_SetStyle(TL1, Tool_Solid) ;

TL_SetSize(TL1, 2) ;

Fin ;

TL2 = TL_New(Date[T2Bar], Time[T2Bar], T2, Date[P1Bar], Time[P1Bar], P1) ;

If TL2 >= 0 Then Begin

TL_SetColor(TL2, BearColor) ;

TL_SetStyle(TL2, Tool_Solid) ;

TL_SetSize(TL2, 2) ;

Fin ;

TL3 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date[T1Bar], Time[T1Bar], T1) ;

If TL3 >= 0 Then Begin

TL_SetColor(TL3, BearColor) ;

TL_SetStyle(TL3, Tool_Solid) ;

TL_SetSize(TL3, 2) ;

Fin ;

TL4 = TL_New(Date[T1Bar], Time[T1Bar], T1, Date, Time, GD) ;

If TL4 >= 0 Then Begin

TL_SetColor(TL4, BearColor) ;

TL_SetStyle(TL4, Tool_Solid) ;

TL_SetSize(TL4, 2) ;

Fin ;

TL5 = TL_New(Date[P1Bar], Time[P1Bar], P1, Date, Time, GD) ;

If TL5 >= 0 Then Begin

TL_SetColor(TL5, BearColor) ;

TL_SetStyle(TL5, Tool_Dotted) ;

Fin ;

TL6 = TL_New(Date[P2Bar], Time[P2Bar], P2, Date, Time, GD) ;

If TL6 >= 0 Then Begin

TL_SetColor(TL6, BearColor) ;

TL_SetStyle(TL6, Tool_Dotted) ;

Fin ;

Fin ;

Fin ;

Fin ;

2.code du laboratoire de gestion de patrimoine :

procédure Gartley222

(

Facteur VP : float ;

Tolérance : float ;

Lookback : integer ;

HoldBars : integer ;

VolMin : integer

) ;

commencer

var ATRValue, VP, Reversal : float ;

var F1, F2, F3, F4, P1, P2, T1, T2 : float ;

var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p : entier ;

var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA : float ;

var PTValid, HLValid, InZone, C1, C2, C3, C4 : booléens ;

var BT, BS, ST, SS : float ;

{Constantes de Fibonacci}

F1 := 0.618 ;

F2 := 0.786 ;

F3 := 1.27 ;

F4 := 1.618 ;

Installer un TimeBasedExit(HoldBars) ;

for Bar := Lookback to BarCount() - 1 do

commencer

ApplyAutoStops(Bar) ;

ATRValue := ATR(Bar, Lookback) ;

SetShareSize( 1000 * Int( 10 / ATRValue ) ) ;

VP := 100 * ATRValue / PriceClose(Bar) ;

{Recherche des pics et des creux}

Reversal := Int(VPFactor * VP) ;

P1 := Peak(Bar, #High, F1 * Reversal) ;

P1Bar := PeakBar(Bar, #High, F1 * Reversal) ;

P2 := Peak(P1Bar, #High, Reversal) ;

P2Bar := PeakBar(P1Bar, #High, Reversal) ;

T1 := Trough(Bar, #Low, F1 * Reversal) ;

T1Bar := TroughBar(Bar, #Low, F1 * Reversal) ;

T2 := Trough(T1Bar, #Low, Reversal) ;

T2Bar := TroughBar(T1Bar, #Low, Reversal) ;

{Test pour une hausse de 222}

{Trough X est T2}

{Peak A est P2}

{Trough B est T1}

{Peak C est P1}

{D est la zone d'achat}

D := PriceLow(Bar) ;

PTValid := (P1Bar > T1Bar) et (T1Bar > P2Bar) et (P2Bar > T2Bar) ;

HLValid := (P1 T2) et (P1 > T1) ;

InZone := (D T2) ;

if (MarketPosition = 0) and

(SMA(Bar, #Volume, Lookback) >= VolMin) et

(PTValid) et (HLValid) et (InZone) alors

begin

XA := P2 - T2 ;

AB := P2 - T1 ;

BC := P1 - T1 ;

XD := P2 - (F2 * XA) ;

CD := P1 - XD ;

AD := P2 - XD ;

ABdXA := AB / XA ; {AB devrait être 61,8% de XA}

C1 := (ABdXA > F1 - Tolérance) et (ABdXA < F1 + Tolérance) ;

BCdAB := BC / AB ; {BC devrait être 61,8-78,6% de AB}

C2 := (BCdAB > F1 - Tolérance) et (BCdAB < F2 + Tolérance) ;

CDdBC := CD / BC ; {CD devrait correspondre à 127-161,8% de BC}

C3 := (CDdBC > F3 - Tolérance) et (CDdBC < F4 + Tolérance) ;

ADdXA := AD / XA ; {AD devrait correspondre à 78,6% de XA}

C4 := (ADdXA > F2 - Tolérance) et (ADdXA < F2 + Tolérance) ;

si C1 et C2 et C3 et C4 alors

commencer

DrawLine(P2Bar, P2, T2Bar, T2, 0, #Blue, #Solid) ;

DrawLine(T1Bar, T1, P2Bar, P2, 0, #Blue, #Solid) ;

DrawLine(P1Bar, P1, T1Bar, T1, 0, #Blue, #Solid) ;

DrawLine(Bar, D, P1Bar, P1, 0, #Blue, #Solid) ;

DrawLine(Bar, D, T1Bar, T1, 0, #Blue, #Dotted) ;

DrawLine(Bar, D, T2Bar, T2, 0, #Blue, #Dotted) ;

AnnotateBar('B', Bar, True, #Blue, 10) ;

BuyAtLimit(Bar, XD, 'G222 LE') ;

DT := F1 * CD ;

BT := XD + DT ;

BS := T2 ;

fin ;

end ;

{Test pour une baisse de 222}

{Peak X est P2}

{Le creux A est T2}

{Peak B est P1}

{Trough C est T1}

{D est la zone courte}

D := PriceHigh(Bar) ;

PTValid := (T1Bar > P1Bar) et (P1Bar > T2Bar) et (T2Bar > P2Bar) ;

HLValid := (T1 > T2) et (P1 < P2) et (T1 < P1) ;

InZone := (D > P1) et (D < P2) ;

si (MarketPosition = 0) et

(PriceClose( Bar ) >= 5) et

(SMA(Bar, #Volume, Lookback) >= VolMin) et

(PTValid) et (HLValid) et (InZone) alors

begin

XA := P2 - T2 ;

AB := P1 - T2 ;

BC := P1 - T1 ;

XD := T2 + (F2 * XA) ;

CD := XD - T1 ;

AD := XD - T2 ;

ABdXA := AB / XA ; {AB devrait être 61,8% de XA}

C1 := (ABdXA > F1 - Tolérance) et (ABdXA < F1 + Tolérance) ;

BCdAB := BC / AB ; {BC devrait être 61,8-78,6% de AB}

C2 := (BCdAB > F1 - Tolérance) et (BCdAB < F2 + Tolérance) ;

CDdBC := CD / BC ; {CD devrait correspondre à 127-161,8% de BC}

C3 := (CDdBC > F3 - Tolérance) et (CDdBC < F4 + Tolérance) ;

ADdXA := AD / XA ; {AD devrait correspondre à 78,6% de XA}

C4 := (ADdXA > F2 - Tolérance) et (ADdXA < F2 + Tolérance) ;

si C1 et C2 et C3 et C4 alors

commencer

DrawLine(T2Bar, T2, P2Bar, P2, 0, #Red, #Solid) ;

DrawLine(P1Bar, P1, T2Bar, T2, 0, #Red, #Solid) ;

DrawLine(T1Bar, T1, P1Bar, P1, 0, #Red, #Solid) ;

DrawLine(Bar, D, T1Bar, T1, 0, #Red, #Solid) ;

DrawLine(Bar, D, P1Bar, P1, 0, #Red, #Dotted) ;

DrawLine(Bar, D, P2Bar, P2, 0, #Red, #Dotted) ;

AnnotateBar('S', Bar, False, #Rouge, 10) ;

ShortAtLimit(Bar, XD, 'G222 SE') ;

DT := F1 * CD ;

ST := XD - DT ;

SS := P2 ;

fin ;

fin ;

si LastPositionActive alors

begin

if MarketPosition = 1 then begin

SellAtLimit(Bar+1, BT, #All, 'G222 LX+') ;

SellAtStop(Bar+1, BS, #All, 'G222 LX-') ;

fin ;

si MarketPosition = -1 alors commencez

CoverAtLimit(Bar+1, ST, #All, 'G222 LX+') ;

CoverAtStop(Bar+1, SS, #All, 'G222 LX-') ;

fin ;

fin ;

fin ;

fin ;

Gartley222(2.0, 0.1, 20, 7, 2000000) ;

 

Qu'est-ce que le SMCMA et le WCMA ? ??

Quelqu'un sait-il quelque chose sur ces 2 choses MA et où les obtenir et les utiliser pour Meta Trader 4 ?

1. SMCMA

2. WCMA

La seule chose que j'ai pu savoir, c'est que ce sont des types de MA (Moving Averages).

( Moyennesmobiles ) mais où les trouver et comment les utiliser ?

bye

Zero_Forex

 

Utiliser d'autres paires de devises dans un EA ?

Est-ce que quelqu'un sait comment faire en sorte qu'un conseiller expert vérifie les graphiques d'autres paires de devises pour l'aider à décider si vous voulez faire un achat ou une vente ? Par exemple, comment pourrais-je faire en sorte qu'un EA regarde le usd-chf dans le cadre des critères pour décider d'acheter ou de vendre sur le gbp-chf ? J'ai un EA que j'aime bien jusqu'à présent, mais je pense que ce serait mieux si je pouvais également faire en sorte que le programme vérifie d'autres paires connexes. Codersguru, ou toute autre personne pouvant m'aider, veuillez me le faire savoir.

Merci !

 
codersguru:
Bonjour à tous,

J'ai reçu de nombreux messages privés me demandant de l'aide pour certains morceaux de code.

Ici vous pouvez poster vos questions relatives à MQL4, et je ferai de mon mieux pour y répondre.

Salut Coder.

Est-il possible qu'une alerte ne se déclenche qu'une fois par barre de 5 minutes ?

Est-il possible qu'une alerte ne retentisse qu'une fois lorsque la condition est remplie ?

Puis s'éteindre.

Puis à l'ouverture de la barre suivante pour rafraîchir l'indicateur prêt à sonner à nouveau.

Puis éteindre à nouveau jusqu'à ce que la condition de 0.0005 soit à nouveau remplie.

Puis rallumez et ainsi de suite......

L'indicateur ci-dessous peut émettre plusieurs alertes par barre lorsqu'il est déclenché.

Voir ci-dessous.

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

//| Juice.mq4 |

//| Perky_z |

//| http://fxovereasy.atspace.com/index |

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

#property copyright "perky"

#property link "http://fxovereasy.atspace.com/index"

//---- paramètres de l'indicateur

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

//---- paramètres de l'indicateur

extern bool DoAlerts = false ;

extern int AlertFromPips = 5 ;

extern int Periyod=7 ;

extern double Level=5 ;

extern bool JuiceLevelsVisible = true ;

extern int JuiceStartPips = 5 ;

extern int JuiceStepPips = 5 ;

extern int JuiceLevelsNumber = 4 ;

extern color JuiceLevelColor = Silver ;

//---- tampons d'indicateurs

double OsMAUpBuffer[] ;

double OsMADownBuffer[] ;

double OsMAValue ;

double currentJuiceLevel ;

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

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

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

int init()

{

//---- 2 tampons supplémentaires sont utilisés pour le comptage.

IndicatorBuffers(2) ;

//---- paramètres de dessin

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2) ;

SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1) ;

SetIndexDrawBegin(0,Level) ;

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2) ;

//---- mappage de 2 tampons d'indicateurs

if(!SetIndexBuffer(0,OsMAUpBuffer) &&

!SetIndexBuffer(1,OsMADownBuffer))

Print("cannot set indicator buffers !") ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

IndicatorShortName("Juice("+Periyod+", "+Level+")") ;

//---- initialisation terminée

retour(0) ;

}

int SetLevelLines()

{

string levelLabel ;

if(JuiceLevelsVisible)

{

SetLevelStyle(STYLE_DASH,1,JuiceLevelColor) ;

for(int i=1 ; i<= JuiceLevelsNumber ; i++)

{

currentJuiceLevel = (JuiceStartPips + (i-1)*JuiceStepPips)*Point ;

SetLevelValue(i,currentJuiceLevel) ;

levelLabel = "Niveau "+i+" : "+currentJuiceLevel ;

SetIndexLabel(i,levelLabel) ;

}

}sélection

{

for(i=1 ; i<= JuiceLevelsNumber ; i++)

{

SetLevelValue(i,0.0) ;

}

}

}

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

//| Moyenne mobile de l'oscillateur |

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

int start()

{

//if ( Period != 15) Alert ("Juice Is Recommended for 15 Min Chart only !!") ;

int limite,i ;

int counted_bars=IndicatorCounted() ;

double Juice ;

bool TurnOnAlert = true ;

//---- 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 ;

Niveau = Niveau*Point ;

si (Period()==5 ) Level=Niveau/2 ;

SetLevelLines() ;

//---- boucle principale

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

{

Juice=iStdDev (NULL,0,Periyod,MODE_EMA,0,PRICE_CLOSE,i)-Level ;

if(Juice>0){

OsMAUpBuffer=Juice ;

OsMADownBuffer=0 ;

}seulement si(Juice<0){

OsMADownBuffer=Juice ;

OsMAUpBuffer=0 ;

}else{

OsMAUpBuffer=0 ;

OsMADownBuffer=0 ;

}

}

if (DoAlerts)

{

si (Juice > AlertFromPips*Point && Period() == 5)

{

if (TurnOnAlert)

{

Alert("Juice above ",AlertFromPips*Point," for ", Symbol()) ;

PlaySound("Tick.wav") ;

TurnOnAlert = false ;

}

}

else

{

TurnOnAlert = true ;

}

}

//---- fait

retour(0) ;

}

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

Votre aide serait grandement appréciée.

Merci beaucoup.

Leigh.