
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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
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.
Je joins deux pdf. L'essentiel du modèle et les règles sont mentionnés.
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 !
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.