Aiuto per la codifica - pagina 198

 
cain82:
Grazie per la risposta!

Ma come posso ottenere una linea d'angolo della MA sul grafico generale come in questo codice indi istogramma?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

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

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

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

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

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

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

Quell'indicatore sta calcolando qualcosa di simile alla pendenza (non l'angolo, poiché l'angolo non può mai essere calcolato esattamente sul grafico delle serie temporali né una pendenza esatta poiché sta cercando di utilizzare una matematica diversa da quella necessaria per una pendenza) per ogni singola barra della MA. Se vuoi invertirla (sto solo ipotizzando cosa vuoi esattamente) otterrai come risultato quella ma iniziale (quindi otterrai una media mobile sul grafico).

Se si desidera estendere la pendenza dell'ultima barra, allora è possibile utilizzare qualcosa di simile a questo indicatore https://www.mql5.com/en/forum/173235/page36 che estende la media mobile utilizzando la pendenza dell'ultima barra

 
mladen:
Quell'indicatore sta calcolando qualcosa di simile alla pendenza (non l'angolo, poiché l'angolo non può mai essere calcolato esattamente sul grafico delle serie temporali né una pendenza esatta poiché sta cercando di usare una matematica diversa da quella necessaria per una pendenza) per ogni singola barra della ma. Se vuoi invertirla (sto solo indovinando cosa vuoi esattamente) otterrai quella ma di partenza come risultato (quindi otterrai una media mobile sul grafico). Se vuoi estendere la pendenza dell'ultima barra, allora puoi usare qualcosa di simile a questo indicatore https://www.mql5.com/en/forum/173235/page36 che estende la media mobile usando la pendenza dell'ultima barra

Grazie mladen! È molto simile a quello che voglio

Hai lo stesso con la modalità MTF?

 

mladen..

Ho bisogno del vostro aiuto per modificare questo indicatore https://www.mql5.com/en/forum/general

 

Mladen,

Calcola le BBands usando i dati di una media mobile.

Come esempio da applicare alle calze MT4 non standard.

Come esempio per uno dei tipi di media mobile di AllAverages.

È un BBands che utilizza i dati reali dalla media.

No BBands SMA, con un diverso tipo di media mobile.

 
Antonsan:
Mladen,

Calcola le BBands usando i dati di una media mobile.

Come esempio da applicare alle calze MT4 non standard.

Come esempio per uno dei tipi di media mobile di AllAverages.

È un BBands che utilizza i dati reali dalla media.

Nessuna BBands SMA, con una media mobile di tipo diverso.

Antonsan

Puoi calcolare le bande di Bollinger su qualsiasi valore se usi la funzione iStdDevOnArry().

Riempi un array con i valori che vuoi usare (valori di qualsiasi media per esempio) calcola la sua deviazione usando iStdDevOnArray() e calcola una linea media per le bande di Bollinger usando iMaOnArray() (usando lo stesso array che usa iStrDevOnArry()) e poi le bande sono semplici: linea media + deviazione*moltiplicatore per la banda superiore, e linea media - deviazione*moltiplicatore per quella inferiore

 

Antonsan

Ecco un codice di esempio molto semplice che puoi usare come modello per costruire bande di bollinger di qualsiasi valore. Tutto quello che dovete fare è sostituire la chiamata iRsi() in questa linea:

for(i=limite; i >= 0; i--) value = iRSI(NULL,0,RsiLength,RsiPrice,i);

con la funzione desiderata o una chiamata iCustom() a qualsiasi indicatore personalizzato e calcolerà le bande di Bollinger per quel valore

File:
 
mladen:
persona77 Un'altra opzione aggiunta: AllowCloseEqualOpen. così ora puoi controllarlo con questa opzione

Grande lavoro mlanden! Grazie ancora.

 

Buon indicatore per EA

Salve,

Questo indicatore ha 5 linee (pivot+R1+R2+S1+S2).

Voglio fare un ea che basa queste linee. Sfortunatamente queste linee non hanno buffer, ho bisogno di qualcuno che alloca un buffer per ogni linea.

Si prega di aiutare

Cordiali saluti;

Bamik

File:
 
bamik:
Ciao,

Questo indicatore ha 5 linee (pivot+R1+R2+S1+S2).

Voglio fare un ea che basa queste linee. Sfortunatamente queste linee non hanno buffer, ho bisogno di qualcuno che alloca un buffer per ogni linea.

Si prega di aiutare

Cordiali saluti;

Bamik

barnik

Hai controllato questo thread: https: //www.mql5.com/en/forum/172894

C'è un sacco di indicatori pivot che utilizzano i buffer in quel thread

 
mladen:
barnik

Hai controllato questo thread: https: //www.mql5.com/en/forum/172894

C'è un sacco di indicatori pivot che usano i buffer in questo thread

Grazie cervo mladen per il tuo aiuto,

Ho scaricato e testato la maggior parte di questi indicatori, solo l'indicatore "AutoPivotIndicator_ver5" era proprio come "TARGETS-LINES".

Sfortunatamente, anche questo indicatore non usa il buffer e usa l'oggetto.

Vi dispiacerebbe per favore cambiare il mio semplice indicatore (assegnare un buffer ad ogni linea), è un piccolo indicatore.

Grazie

Motivazione: