Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ciao, ho allegato un indicatore in mq4 che avvisa ogni volta che il cci<-150
Avverte su base tick per tick; qualcuno può modificarlo in modo che avverta solo alla chiusura della candela?
In questo caso vorrei essere avvisato solo quando il cci è < -150 alla fine di una candela di 5m
Grazie in anticipo
Ok, seconda domanda, penso che questa sia facile:
Sto costruendo un indicatore utente per avvisarmi quando il prezzo vicino attraversa una MA
Sto usando iCustom per importare l'indicatore MA
e poi non so come usare la chiusura del prezzo; ho provato CLOSE e PRICE_CLOSE ma senza risultati:
se (CLOSE?>ma1)
adxvalue= -1;
se (PRICE_CLOSE?>ma1)
adxvalue= -1;
Inoltre, voglio che l'allarme suoni solo alla fine di una barra di 5m e non funzioni su base tick per tick: cos'altro dovrei cambiare (questa domanda è quella del mio post precedente)
Grazie
Ciao Codersguru,
Potresti aiutarmi a codificare un avviso in Osma Color in modo che avvisi quando i colori cambiano.
Grazie
Duncan
//+------------------------------------------------------------------+
//| OsMA_color.mq4 ||
//| Rafael |
//| marynarz15@wp.pl ||
//+------------------------------------------------------------------+
#proprietà copyright "Rafael"
#proprietà link "marynarz15@wp.pl"
//---- impostazioni dell'indicatore
#proprietà indicatore_separazione_finestra
#proprietà indicator_buffers 2
#proprietà indicator_color1 Lime
#proprietà indicator_color2 Red
//---- parametri dell'indicatore
extern int FastEMA=12;
extern int SlowEMA=26;;
extern int SignalSMA=9;
//---- buffer dell'indicatore
double ind_buffer1a[]
double ind_buffer1b[]
double ind_buffer2[]
double ind_buffer3[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione personalizzata dell'indicatore |
//+------------------------------------------------------------------+
int init()
{
//---- 2 buffer aggiuntivi sono utilizzati per il conteggio.
IndicatorBuffers(4);
//---- impostazioni di disegno
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 buffer di indicatori mappati
if(!SetIndexBuffer(0,ind_buffer1a) &&
!SetIndexBuffer(1,ind_buffer1b) &&
!SetIndexBuffer(2,ind_buffer2) &&
!SetIndexBuffer(3,ind_buffer3))
Print("impossibile impostare i buffer degli indicatori!)
//---- nome per l'etichetta della DataWindow e della sottofinestra dell'indicatore
IndicatorShortName("OsMA("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");
//---- inizializzazione fatta
return(0);
}
//+------------------------------------------------------------------+
//|Media mobile dell'oscillatore
//+------------------------------------------------------------------+
int start()
{
int limite;
int counted_bars=IndicatorCounted();
//---- controllare eventuali errori
if(counted_bars<0) return(-1);
//---- l'ultima barra contata sarà ricontata
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd contati nel 1° buffer aggiuntivo
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);
//---- linea di segnale contata nel 2° buffer aggiuntivo
for(i=0; i<limit; i++)
ind_buffer3=iMAOnArray(ind_buffer2,Bars,SignalSMA,0,MODE_SMA,i);
//---- ciclo principale
doppio valore=0;
for(i=0; i<limit; i++)
{
ind_buffer1a=0,0;
ind_buffer1b=0.0;
valore=ind_buffer2-ind_buffer3;
se (valore>0) ind_buffer1a=valore;
se (valore<0) ind_buffer1b=valore;
}
//---- fatto
return(0);
}
//+------------------------------------------------------------------+
Ciao
Ho un indicatore che è in grado di riconoscere il pattern butterfly ma è scritto per MT3 qualcuno può farmi un favore e convertirlo in MQL4.
Ho allegato due pdf.il succo del modello e le regole sono menzionate
ciao
ciao ragazzi
forse tutti voi conoscete il nome di questo autore ma non avete mai saputo che
il suo metodo codificato in un software.
Pesavento ha scritto tra gli altri questo meraviglioso libro:
* Rapporti di Fibonacci con riconoscimento dei modelli
* Modelli redditizi per il trading azionario
* Astro-Cicli: Punto di vista dei trader
A proposito, so che il software ENSIGN ha anche il suo strumento di studio originale Pesavento Patterns che può essere visto nel prossimo link.
Se qualcuno può importare da ENSIGN a MetaTrader 4 sarebbe fantastico.
http://www.ensignsoftware.com/help/pesavento.htm
ciao di nuovo
ho trovato il codice per il pattern gartley 222 su due piattaforme.
se qualcuno può tradurlo su MetaTrade 4 sarà superbo!
Ecco i codici:
1.Codice TradeStation per il pattern Gartley 222 trovato in "Trading the Gartley 222" di Aaron Behle e Mark Conway, pag. 38:
Ingressi:
Lunghezza(100),
Forza(8),
Tolleranza(0.10),
BullColor(Blue),
BearColor(Rosso);
Variabili:
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(Falso),
InZone(Falso),
GD(0.0),
XA(0.0),
AB(0.0),
BC(0.0),
CD(0.0),
AD(0.0),
C1(Falso),
C2(Falso),
C3(Falso),
C4(Falso),
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, Alto, Forza, Lunghezza);
P2Bar = SwingHighBar(2, Alto, Forza, Lunghezza);
T1Bar = SwingLowBar(1, Low, Strength, Length);
T2Bar = SwingLowBar(2, Low, Strength, Length);
Se P1Bar -1 e
P2Bar -1 e
T1Bar -1 e
T2Bar -1 Allora inizia
{Test per un 222 rialzista}
{Ritorno X è T2}
T2 = Basso[T2Bar];
{Peak A è P2}
P2 = Alto[P2Bar];
{Passo B è T1}
T1 = Basso[T1Bar];
{Peak C è P1}
P1 = Alto[P1Bar];
{D è il punto di acquisto}
GD = Basso;
PTValid = P1Bar < T1Bar e T1Bar < P2Bar e P2Bar < T2Bar;
HLValid = P1 T2 e P1 > T1;
InZone = GD T2 e P2 >= Highest(High, T2Bar);
Se PTValid e HLValid e InZone allora inizia
XA = P2 - T2;
AB = P2 - T1;
BC = P1 - T1;
CD = P1 - GD;
AD = P2 - GD;
ABdXA = AB / XA; {AB dovrebbe essere il 61,8% di XA}
C1 = ABdXA > F1 - Tolleranza e ABdXA < F1 + Tolleranza;
BCdAB = BC / AB; {BC dovrebbe essere il 61,8-78,6% di AB}
C2 = BCdAB > F1 - Tolleranza e BCdAB < F2 + Tolleranza;
CDdBC = CD / BC; {CD dovrebbe essere 127-161,8% di BC}
C3 = CDdBC > F3 - Tolleranza e CDdBC < F4 + Tolleranza;
ADdXA = AD / XA; {AD dovrebbe essere il 78,6% di XA}
C4 = ADdXA > F2 - Tolleranza e ADdXA < F2 + Tolleranza;
Se C1 e C2 e C3 e C4 allora inizia
TL1 = TL_New(Data[T2Bar], Ora[T2Bar], T2, Data[P2Bar], Ora[P2Bar], P2);
Se TL1 >= 0 Allora inizia
TL_SetColor(TL1, BullColor);
TL_SetStyle(TL1, Tool_Solid);
TL_SetSize(TL1, 2);
Fine;
TL2 = TL_New(Data[P2Bar], Ora[P2Bar], P2, Data[T1Bar], Ora[T1Bar], T1);
Se TL2 >= 0 Allora inizia
TL_SetColor(TL2, BullColor);
TL_SetStyle(TL2, Tool_Solid);
TL_SetSize(TL2, 2);
Fine;
TL3 = TL_New(Data[T1Bar], Ora[T1Bar], T1, Data[P1Bar], Ora[P1Bar], P1);
Se TL3 >= 0 Allora inizia
TL_SetColor(TL3, BullColor);
TL_SetStyle(TL3, Tool_Solid);
TL_SetSize(TL3, 2);
Fine;
TL4 = TL_New(Data[P1Bar], Ora[P1Bar], P1, Data, Ora, GD);
Se TL4 >= 0 Allora inizia
TL_SetColor(TL4, BullColor);
TL_SetStyle(TL4, Tool_Solid);
TL_SetSize(TL4, 2);
Fine;
TL5 = TL_New(Data[T1Bar], Ora[T1Bar], T1, Data, Ora, GD);
Se TL5 >= 0 Allora inizia
TL_SetColor(TL5, BullColor);
TL_SetStyle(TL5, Tool_Dotted);
Fine;
TL6 = TL_New(Data[T2Bar], Ora[T2Bar], T2, Data, Ora, GD);
Se TL6 >= 0 Allora inizia
TL_SetColor(TL6, BullColor);
TL_SetStyle(TL6, Tool_Dotted);
Fine;
Fine;
Fine;
{Test per un orso 222}
{Peak X è P2}
{Trough A è T2}
{Peak B è P1}
{Trough C è T1}
{GD è il punto corto}
GD = Alto;
PTValid = T1Bar < P1Bar e P1Bar < T2Bar e T2Bar < P2Bar;
HLValid = T1 > T2 e P1 < P2 e T1 < P1;
InZone = GD > P1 e GD < P2 e T2 <= Lowest(Low, P2Bar);
Se PTValid e HLValid e InZone allora inizia
XA = P2 - T2;
AB = P1 - T2;
BC = P1 - T1;
CD = GD - T1;
AD = GD - T2;
ABdXA = AB / XA; {AB dovrebbe essere il 61,8% di XA}
C1 = ABdXA > F1 - Tolleranza e ABdXA < F1 + Tolleranza;
BCdAB = BC / AB; {BC dovrebbe essere il 61,8-78,6% di AB}
C2 = BCdAB > F1 - Tolleranza e BCdAB < F2 + Tolleranza;
CDdBC = CD / BC; {CD dovrebbe essere 127-161,8% di BC}
C3 = CDdBC > F3 - Tolleranza e CDdBC < F4 + Tolleranza;
ADdXA = AD / XA; {AD dovrebbe essere il 78,6% di XA}
C4 = ADdXA > F2 - Tolleranza e ADdXA < F2 + Tolleranza;
Se C1 e C2 e C3 e C4 allora inizia
TL1 = TL_New(Data[P2Bar], Ora[P2Bar], P2, Data[T2Bar], Ora[T2Bar], T2);
Se TL1 >= 0 Allora inizia
TL_SetColor(TL1, BearColor);
TL_SetStyle(TL1, Tool_Solid);
TL_SetSize(TL1, 2);
Fine;
TL2 = TL_New(Data[T2Bar], Ora[T2Bar], T2, Data[P1Bar], Ora[P1Bar], P1);
Se TL2 >= 0 Allora inizia
TL_SetColor(TL2, BearColor);
TL_SetStyle(TL2, Tool_Solid);
TL_SetSize(TL2, 2);
Fine;
TL3 = TL_New(Data[P1Bar], Ora[P1Bar], P1, Data[T1Bar], Ora[T1Bar], T1);
Se TL3 >= 0 Allora inizia
TL_SetColor(TL3, BearColor);
TL_SetStyle(TL3, Tool_Solid);
TL_SetSize(TL3, 2);
Fine;
TL4 = TL_New(Data[T1Bar], Ora[T1Bar], T1, Data, Ora, GD);
Se TL4 >= 0 Allora inizia
TL_SetColor(TL4, BearColor);
TL_SetStyle(TL4, Tool_Solid);
TL_SetSize(TL4, 2);
Fine;
TL5 = TL_New(Data[P1Bar], Ora[P1Bar], P1, Data, Ora, GD);
Se TL5 >= 0 Allora inizia
TL_SetColor(TL5, BearColor);
TL_SetStyle(TL5, Tool_Dotted);
Fine;
TL6 = TL_New(Data[P2Bar], Ora[P2Bar], P2, Data, Ora, GD);
Se TL6 >= 0 Allora inizia
TL_SetColor(TL6, BearColor);
TL_SetStyle(TL6, Tool_Dotted);
Fine;
Fine;
Fine;
Fine;
2.Wealth-Lab codice:
procedura Gartley222
(
VPFactor: float;
Tolleranza: float;
Lookback: intero;
HoldBars: intero;
VolMin: intero
);
inizio
var ATRValue, VP, Reversal: float;
var F1, F2, F3, F4, P1, P2, T1, T2: float;
var Bar, P1Bar, P2Bar, T1Bar, T2Bar, p: intero;
var XA, AB, BC, CD, AD, D, XD, DT, ABdXA, BCdAB, CDdBC, ADdXA: float;
var PTValid, HLValid, InZone, C1, C2, C3, C4: booleano;
var BT, BS, ST, SS: float;
{Costanti di Fibonacci}
F1 := 0.618;
F2 := 0.786;
F3 := 1.27;
F4 := 1.618;
InstallareTimeBasedExit(HoldBars);
per Bar := Lookback a BarCount() - 1 fare
iniziare
ApplyAutoStops(Bar);
ATRValue := ATR(Bar, Lookback);
SetShareSize( 1000 * Int( 10 / ATRValue ) );
VP := 100 * ATRValue / PriceClose(Bar);
{Trova i picchi e le depressioni}
Inversione := 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 per un 222 rialzista}
{Trough X è T2}
{Peak A è P2}
{Grave B è T1}
{Peak C è P1}
{D è la zona di acquisto}
D := PriceLow(Bar);
PTValid := (P1Bar > T1Bar) e (T1Bar > P2Bar) e (P2Bar > T2Bar);
HLValid := (P1 T2) e (P1 > T1);
InZone := (D T2);
se (MarketPosition = 0) e
(SMA(Bar, #Volume, Lookback) >= VolMin) e
(PTValid) e (HLValid) e (InZone) allora
iniziare
XA := P2 - T2;
AB := P2 - T1;
BC := P1 - T1;
XD := P2 - (F2 * XA);
CD := P1 - XD;
AD := P2 - XD;
ABdXA := AB / XA; {AB dovrebbe essere il 61,8% di XA}
C1 := (ABdXA > F1 - Tolleranza) e (ABdXA < F1 + Tolleranza);
BCdAB := BC / AB; {BC dovrebbe essere 61,8-78,6% di AB}
C2 := (BCdAB > F1 - Tolleranza) e (BCdAB < F2 + Tolleranza);
CDdBC := CD / BC; {CD dovrebbe essere 127-161,8% di BC}
C3 := (CDdBC > F3 - Tolleranza) e (CDdBC < F4 + Tolleranza);
ADdXA := AD / XA; {AD dovrebbe essere il 78,6% di XA}
C4 := (ADdXA > F2 - Tolleranza) e (ADdXA < F2 + Tolleranza);
se C1 e C2 e C3 e C4 allora
iniziare
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;
fine;
fine;
{Test per un orso 222}
{Peak X è P2}
{Passo A è T2}
{Peak B è P1}
{Trough C è T1}
{D è la zona short}
D := PriceHigh(Bar);
PTValid := (T1Bar > P1Bar) e (P1Bar > T2Bar) e (T2Bar > P2Bar);
HLValid := (T1 > T2) e (P1 < P2) e (T1 < P1);
InZone := (D > P1) e (D < P2);
se (MarketPosition = 0) e
(PriceClose( Bar ) >= 5) e
(SMA(Bar, #Volume, Lookback) >= VolMin) e
(PTValid) e (HLValid) e (InZone) allora
iniziare
XA := P2 - T2;
AB := P1 - T2;
BC := P1 - T1;
XD := T2 + (F2 * XA);
CD := XD - T1;
AD := XD - T2;
ABdXA := AB / XA; {AB dovrebbe essere il 61,8% di XA}
C1 := (ABdXA > F1 - Tolleranza) e (ABdXA < F1 + Tolleranza);
BCdAB := BC / AB; {BC dovrebbe essere 61,8-78,6% di AB}
C2 := (BCdAB > F1 - Tolleranza) e (BCdAB < F2 + Tolleranza);
CDdBC := CD / BC; {CD dovrebbe essere 127-161,8% di BC}
C3 := (CDdBC > F3 - Tolleranza) e (CDdBC < F4 + Tolleranza);
ADdXA := AD / XA; {AD dovrebbe essere il 78,6% di XA}
C4 := (ADdXA > F2 - Tolleranza) e (ADdXA < F2 + Tolleranza);
se C1 e C2 e C3 e C4 allora
iniziare
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, #Red, 10);
ShortAtLimit(Bar, XD, 'G222 SE');
DT := F1 * CD;
ST := XD - DT;
SS := P2;
fine;
fine;
se LastPositionActive allora
iniziare
se MarketPosition = 1 allora inizia
SellAtLimit(Bar+1, BT, #All, 'G222 LX+');
SellAtStop(Bar+1, BS, #All, 'G222 LX-');
fine;
se MarketPosition = -1 allora inizia
CoverAtLimit(Bar+1, ST, #All, 'G222 LX+');
CoverAtStop(Bar+1, SS, #All, 'G222 LX-');
fine;
fine;
fine;
end;
Gartley222(2.0, 0.1, 20, 7, 2000000);
Cosa sono SMCMA e WCMA?
Qualcuno sa qualcosa su queste 2 cose MA e dove ottenerle e usarle per Meta Trader 4
1. SMCMA
2. WCMA
L'unica cosa che posso sapere è che questi sono alcuni tipi di MA
(Moving Averages) ma dove trovarli e come usarli?
ciao
Zero_Forex
Usare altre coppie di valute in un EA?
Qualcuno sa come fare in modo che un Expert Advisor controlli i grafici di altre coppie di valute per aiutare a decidere se si vuole fare un acquisto o una vendita? Per esempio, come potrei fare in modo che un EA guardi il usd-chf come parte dei criteri per decidere se comprare o vendere sul gbp-chf? Ho un EA che per ora mi piace, ma penso che potrebbe essere migliore se potessi far scrivere nel programma anche il controllo di altre coppie correlate. Codersguru, o chiunque altro possa aiutarmi, per favore fatemelo sapere.
Grazie!
Ciao gente,
Ho molti messaggi privati che mi chiedono aiuto per alcuni pezzi di codice.
Qui potete postare le vostre domande relative a MQL4, e farò del mio meglio per rispondere.Ciao Coder.
È possibile che un allarme suoni solo una volta per ogni barra di 5 minuti?
È possibile che un allarme suoni solo una volta quando la condizione è soddisfatta?
Poi si spegne.
Poi all'apertura della prossima barra per aggiornare l'indicatore pronto a suonare di nuovo.
Poi spegnere ancora una volta fino a quando la condizione di 0.0005 è di nuovo soddisfatta.
Poi riaccendi e così via......
L'indicatore qui sotto può suonare molti avvisi per barra quando viene attivato.
Vedi sotto.
//+------------------------------------------------------------------+
//| Juice.mq4 ||
//| Perky_z |
//| http://fxovereasy.atspace.com/index ||
//+------------------------------------------------------------------+
#proprietà copyright "perky"
#proprietà link "http://fxovereasy.atspace.com/index"
//---- impostazioni dell'indicatore
#proprietà indicator_separate_window
#proprietà indicator_buffers 2
#proprietà indicator_color1 LimeGreen
#property indicator_color2 FireBrick
//---- parametri dell'indicatore
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;
//---- buffer dell'indicatore
double OsMAUpBuffer[]
doppio OsMADownBuffer[]
doppio OsMAValue;
double currentJuiceLevel;
//+------------------------------------------------------------------+
//|Funzione di inizializzazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int init()
{
//---- 2 buffer aggiuntivi sono utilizzati per il conteggio.
IndicatorBuffers(2);
//---- impostazioni di disegno
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);
SetIndexDrawBegin(0,Level);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- mappatura di 2 buffer di indicatori
if(!SetIndexBuffer(0,OsMAUpBuffer) &&
!SetIndexBuffer(1,OsMADownBuffer))
Print("impossibile impostare i buffer degli indicatori!)
//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore
IndicatorShortName("Juice("+Periyod+", "+Level+")");
//---- inizializzazione fatta
return(0);
}
int SetLevelLines()
{
stringa 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 = "Livello "+i+": "+currentJuiceLevel";
SetIndexLabel(i,levelLabel);
}
}else
{
for(i=1; i<= JuiceLevelsNumber; i++)
{
SetLevelValue(i,0.0);
}
}
}
//+------------------------------------------------------------------+
//| Media mobile dell'oscillatore
//+------------------------------------------------------------------+
int start()
{
//if ( Period != 15) Alert ("Juice Is Recommended for 15 Min Chart only!!!");
int limit,i;
int counted_bars=IndicatorCounted();
doppio Juice;
bool TurnOnAlert = true;
//---- controllare eventuali errori
if(counted_bars<0) return(-1);
//---- l'ultima barra contata sarà ricontata
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
Livello = Livello*Punto;
if (Periodo()==5 ) Level=Level/2;
SetLevelLines();
//---- ciclo principale
for(i=0; i<limite; i++)
{
Juice=iStdDev (NULL,0,Periyod,MODE_EMA,0,PRICE_CLOSE,i)-Level;
if(Juice>0){
OsMAUpBuffer=Juice;
OsMADownBuffer=0;
}else if(Juice<0){
OsMADownBuffer=Juice;
OsMAUpBuffer=0;
}else{
OsMAUpBuffer=0;
OsMADownBuffer=0;
}
}
if (DoAlerts)
{
if (Juice > AlertFromPips*Point && Period() == 5)
{
if (TurnOnAlert)
{
Alert("Succo superiore a ",AlertFromPips*Point," per ", Symbol());
PlaySound("Tick.wav");
TurnOnAlert = false;
}
}
else
{
TurnOnAlert = true;
}
}
//---- fatto
return(0);
}
//+------------------------------------------------------------------+
Il tuo aiuto sarebbe molto apprezzato.
Molte grazie.
Leigh.