Aiuto per la codifica - pagina 689

 

Ciao Mladen,

Voglio fare un'analisi di similarità nei dati forex.

Voglio dire, voglio trovare la barra di 1 ora più correlata (stesso o più simile valore in OHLC) alla barra di ULTIMA 1 ora (OHLC) nella storia di 20.000 barre (OHLC).

Il coefficiente di correlazione di Pearson è sufficiente per scoprire la somiglianza del valore dell'ultima barra nella storia di 20.000 barre? È possibile fare questa analisi in metatrader con uno script (o EA)?

 

caro mlade:

faccio il mio primo indicatore MTF

ma il colore è nero

come risolvere il problema?

grazie mille

File:
MTF xb4d.mq4  4 kb
xb4d.mq4  4 kb
 
bilbao:

caro mlade:

faccio il mio primo indicatore MTF

ma il colore è nero

come risolvere il problema?

grazie mille

Impostare la #proprietà indicator_color1 al colore desiderato (ora è impostato su Nero)
 
nevar:

Ciao Mladen,

Voglio fare un'analisi di similarità nei dati forex.

Voglio dire, voglio trovare la barra di 1 ora più correlata (stesso o più simile valore in OHLC) alla barra di ULTIMA 1 ora (OHLC) nella storia di 20.000 barre (OHLC).

Il coefficiente di correlazione di Pearson è sufficiente per scoprire la somiglianza del valore dell'ultima barra nella storia di 20.000 barre? È possibile fare questa analisi in metatrader con uno script (o EA)?

Mladen,

Qualche commento su questo?

 
nevar:

Mladen,

Qualche commento su questo?

Puoi farlo con Pearson e trovare semplicemente la barra con il valore massimo di Pearson - puoi farlo per qualsiasi time frame e qualsiasi numero di barre poiché Pearson non è pesante per la CPU. Meglio farlo da un indicatore però (per evitare alcune operazioni di array)
 
mladen:
Impostare la #proprietà indicator_color1 al colore desiderato (ora è impostato su Black)

signor mladen:

lo faccio ma ho solo un colore

ho bisogno di due colori per il mercato bull &bear

 
bilbao:

signor mladen:

lo faccio ma ho solo un colore

ho bisogno di due colori per il mercato bull &bear

Allora devi codificarlo diversamente (devi usare due buffer non uno solo per l'istogramma a due colori)
 
mladen:
Allora devi codificarlo in modo diverso (devi usare due buffer non solo uno per l'istogramma a due colori)

è corretto signore?

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

//| MTF_xb4d.mq4 |

//|------------------------------------------------------------------+


#proprietà indicator_separate_window

#proprietà indicator_buffers 2

#property indicator_color1 LimeGreen

#proprietà indicator_width1 2

#proprietà indicator_color2 PaleVioletRed

#proprietà indicator_width2 2

//---- parametri di ingresso

/*************************************************************************

PERIODO_M1 1

PERIODO_M5 5

PERIODO_M15 15

PERIODO_M30 30

PERIODO_H1 60

PERIODO_H4 240

PERIODO_D1 1440

PERIODO_W1 10080

PERIODO_MN1 43200

Devi usare il valore numerico del timeframe che vuoi usare

quando impostate il valore di "TimeFrame" con gli input dell'indicatore.

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

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

//|funzione di inizializzazione dell'indicatore personalizzata

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

int init()

{

//---- linea dell'indicatore

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore

switch(TimeFrame)

{

caso 1 : stringa TimeFrameStr="Period_M1"; break;

caso 5 : TimeFrameStr="Periodo_M5"; break;

caso 15 : TimeFrameStr="Periodo_M15"; break;

caso 30 : TimeFrameStr="Periodo_M30"; break;

caso 60 : TimeFrameStr="Periodo_H1"; break;

caso 240 : TimeFrameStr="Periodo_H4"; break;

caso 1440 : TimeFrameStr="Periodo_D1"; break;

caso 10080 : TimeFrameStr="Periodo_W1"; break;

caso 43200 : TimeFrameStr="Periodo_MN1"; break;

default : TimeFrameStr="Timeframe corrente";

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ");

return(0);

}

//----

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

//| |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Traccia il time frame definito sul time frame corrente

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limite;i++)

{

if (Time[i]<TimeArray[y]) y++;

/***********************************************************

Aggiungete il ciclo del vostro indicatore principale qui sotto. Potete fare riferimento a un

indicatore esistente con il suo iName o iCustom.

Regola 1: Aggiungi gli input esterni qui sopra per tutti i valori necessari

Regola 2: Usa 'TimeFrame' per il time frame dell'indicatore

Regola 3: Usa 'y' per il valore di spostamento del tuo indicatore

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Buy Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]);

return(0);

}

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

 
bilbao:

è corretto signore?

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

//| MTF_xb4d.mq4 |

//|------------------------------------------------------------------+


#proprietà indicator_separate_window

#proprietà indicator_buffers 2

#property indicator_color1 LimeGreen

#proprietà indicator_width1 2

#proprietà indicator_color2 PaleVioletRed

#proprietà indicator_width2 2

//---- parametri di ingresso

/*************************************************************************

PERIODO_M1 1

PERIODO_M5 5

PERIODO_M15 15

PERIODO_M30 30

PERIODO_H1 60

PERIODO_H4 240

PERIODO_D1 1440

PERIODO_W1 10080

PERIODO_MN1 43200

Devi usare il valore numerico del timeframe che vuoi usare

quando impostate il valore di "TimeFrame" con gli input dell'indicatore.

---------------------------------------*/

extern int TimeFrame=0;

extern int period = 10;

extern int AppliedPrice=0;

extern bool SoundAlerts=false;

double ExtMapBuffer1[];

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

//|funzione di inizializzazione dell'indicatore personalizzata

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

int init()

{

//---- linea dell'indicatore

SetIndexStyle(0, DRAW_HISTOGRAM);

SetIndexStyle(1, DRAW_HISTOGRAM);

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer1);

//---- nome per DataWindow e l'etichetta della sottofinestra dell'indicatore

switch(TimeFrame)

{

caso 1 : stringa TimeFrameStr="Period_M1"; break;

caso 5 : TimeFrameStr="Periodo_M5"; break;

caso 15 : TimeFrameStr="Periodo_M15"; break;

caso 30 : TimeFrameStr="Periodo_M30"; break;

caso 60 : TimeFrameStr="Periodo_H1"; break;

caso 240 : TimeFrameStr="Periodo_H4"; break;

caso 1440 : TimeFrameStr="Periodo_D1"; break;

caso 10080 : TimeFrameStr="Periodo_W1"; break;

caso 43200 : TimeFrameStr="Periodo_MN1"; break;

default : TimeFrameStr="Timeframe corrente";

}

IndicatorShortName(" MTF_xb4d ("+TimeFrameStr+" ) ");

return(0);

}

//----

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

//| |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Traccia il time frame definito sul time frame corrente

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= Bars-1;

for(i=0,y=0;i<limite;i++)

{

if (Time[i]<TimeArray[y]) y++;

/***********************************************************

Aggiungete il ciclo del vostro indicatore principale qui sotto. Potete fare riferimento a un

indicatore esistente con il suo iName o iCustom.

Regola 1: Aggiungi gli input esterni qui sopra per tutti i valori necessari

Regola 2: Usa 'TimeFrame' per il time frame dell'indicatore

Regola 3: Usa 'y' per il valore di spostamento del tuo indicatore

**********************************************************/

ExtMapBuffer1[i]=iCustom(Symbol(),TimeFrame, "xb4d",period,0,y);//iRSI(Symbol(),TimeFrame,period,AppliedPrice,y);

}

if(GlobalVariableGet(Symbol()+"previndicator")<0 && ExtMapBuffer1[0]>=0)

if(SoundAlerts){Alert("Buy Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

if(GlobalVariableGet(Symbol()+"previndicator")>=0 && ExtMapBuffer1[0]<0)

if(SoundAlerts){Alert("Sell Alert " + Symbol() + " [" + Period() + "] ");PlaySound("alert.wav");}

GlobalVariableSet(Symbol()+"previndicator",ExtMapBuffer1[0]);

return(0);

}

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

Sta mostrando i colori nel modo in cui volevi?
 
mladen:
Sta mostrando i colori nel modo in cui volevi?

caro mladen:

ho trovato mtf di esso a https://www.forex-tsd.com/forum/debates-discussions/1131-multi-timeframe-indicators/page762#comment_1831838

grazie mille per il tuo aiuto a tutti i membri

Dio benedica la tua vita