Ciao a tutti,
non sono arrivato ancora a predisporre nulla (di nuovo). Ho modificato l'indicatore di velocità (media della (chiusura - la chiusura precedente) a 30 periodi. Ora l'indicatore da la variazione percentuale e non una variazione di valore. Questo consente la eventuale confrontabilità con altri corsi. Vi posto la versione per metastock e quella per metatrader....
Metastock:
Mov(100*(C-Ref(C,-1))/Ref(C,-1), 34, S);
Metatrader:
//+------------------------------------------------------------------+
//| Tiz SoloDiffMov.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_separate_window
#property indicator_buffers 5
//---- buffers
double Solo[];
double SoloMov[];
double Livello0[];
double Livello11[];
double Livellom11[];
//---- input parameters
extern int MPrd=34;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Black); // media della media
SetIndexBuffer(0, Solo);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2, Blue); // media
SetIndexBuffer(1, SoloMov);
SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1, Red); // media della media
SetIndexBuffer(2, Livello0);
SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 1, Red); // media della media
SetIndexBuffer(3, Livello11);
SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Red); // media della media
SetIndexBuffer(4, Livellom11);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- name for DataWindow and indicator subwindow label
string short_name = "Solo Vel e Mov";
IndicatorShortName(short_name);
SetIndexLabel(0, short_name);
SetIndexLabel(1, "SoloMov");
SetIndexLabel(2, "0");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int limit = 0, prd = 10;
double mov;
//----
if(counted_bars>0) counted_bars--;
limit = Bars - counted_bars;
for (int i=limit; i >= 0; i--)
{
Livello0 = 0.0;
Livello11 = 0.018;
Livellom11 = -0.018;
SoloMov = sma(i, MPrd);
mov = 0;
for (int x = i + prd; x >= i ; x--)
mov += SoloMov[x];
Solo = mov / prd;
}
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Calcola la media a prd periodi di c[0]-c[1]
double sma(int i, int prd = 34)
{ if (i < 0) return(-1);
if (prd <= 0) return (-1);
double vel = 0;
double mov = 0;
int j;
for (j = i + prd; j >= i; j--)
{
if(Close[j+1]==0) return(-1);
vel += ((Close[j]-Close[j+1])*100)/Close[j+1];
}
mov = vel / prd;
return (mov);
}
//+------------------------------------------------------------------+
Alla prossima...