Ciao ragazzi, mi è piaciuto molto questo indicatore, ho studiato il profilo di mercato per un po' e questo è il migliore che ho trovato.
Ho appena apportato una modifica al metodo di calcolo del profilo, ho usato il tick del volume invece di verificare solo se il prezzo è passato nel punto. Ho fatto questo perché se vedete, gli scambi e i tempi diversi hanno libbre diverse, si può vedere nell'istogramma del volume. Quindi non possiamo contare solo se il prezzo è lì aggiungere uno.
Siete d'accordo?
La modifica che ho apportato ha mostrato le differenze tra i due metodi
Ciao Qualcuno sa se è possibile fare un robot che tradisce solo in queste righe del POC? Se sì, come posso fare? Perché sto testando tutte le variabili nel file ClassPriceHistogram e i valori sono tutti a zero, qualcuno può aiutarmi?
Ciao Luiz@Luiz Vinicius Pereira Rocha - allora amico, sono nuovo nella programmazione, e stavo lavorando su un EA che traccia solo i POC, le valutazioni alte e basse, e ho finito per trovare questo indicatore. Tuttavia, non sono riuscito a trovare il luogo in cui memorizza i punti Poc, quando uso la funzione di stampa su alcune variabili dell'autore come: Poc_value, appaiono valori zero. puoi aiutarmi?
prima di tutto: Grazie per il tuo grande articolo e lavoro!
Anche se è passato molto tempo da quando l'hai pubblicato, funziona bene.
Quello che ho qui per te e per la comunità è un aggiornamento, in modo che l'istogramma utilizzi il tickvolume, perché utilizzare solo l'azione del prezzo in aree temporali, dove il volume è quasi nullo, non aiuta molto.
Sostituire il codice corrispondente nel file ClassPriceHistogram.mqh
bool CPriceHistogram::calculationPOCs()
{
int rates_total,rates_high,rates_time,rates_tv,index;
doubleiHigh[],iLow[];
long iTV[];
datetimeiTime[];
// Ïîëó÷àåì äàííûå çà ïåðèîä ñ time_start äî time_end / Otteniamo i dati da time_start a time_endint err=0;
do
{
rates_time=CopyTime(NULL,PERIOD_M1,time_start,time_end,iTime);
rates_high=CopyHigh(NULL,PERIOD_M1,time_start,time_end,iHigh);
rates_total=CopyLow(NULL,PERIOD_M1,time_start,time_end,iLow);
rates_tv=CopyTickVolume(NULL,PERIOD_M1,time_start,time_end,iTV);
err++;
}
while((rates_time<=0 || (rates_total!=rates_high || rates_total!=rates_time || rates_tv!=rates_time)) && err<AMOUNT_OF_ATTEMPTS);
if(err>=AMOUNT_OF_ATTEMPTS)
{
return(false);
}
poc_start_time=iTime[0];
high_day=iHigh[ArrayMaximum(iHigh,0,rates_total)];
low_day=iLow[ArrayMinimum(iLow,0,rates_total)];
int count=int((high_day-low_day)/_Point)+1;
// Ïîäñ÷åò äëèòåëüíîñòè íàõîæäåíèÿ öåíû íà êàæäîì óðîâíå / Conteggio della durata di una rilevazione del prezzo ad ogni livelloint ThicknessOfLevel[]; // ñîçäàåì ìàññèâ äëÿ ïîäñ÷åòà òèêîâ / creiamo un array per il conteggio dei ticArrayResize(ThicknessOfLevel,count);
ArrayInitialize(ThicknessOfLevel,0);
for(int i=0;i<rates_total;i++)
{
double C=iLow[i];
long CTV=iTV[i];
// Distribuire il tickvolume della barra dei minuti su tutti i punti possibili della barra.// Quindi l'incremento per punto sarà questo ...int CInc=int(((iHigh[i]-iLow[i])/_Point));
while(C<iHigh[i])
{
int Index=int((C-low_day)/_Point);
ThicknessOfLevel[Index]+=CInc;
C+=_Point;
}
}
Ammetto che si tratta di un hack veloce e che non ho testato tutti i pezzi di codice, ma finora funziona bene.
Solo un'avvertenza... Ho scaricato tutti i file nelle rispettive directory, ho compilato e ho ricevuto un errore relativo a ClassPriceHistogram.mqh. Alla riga 375, ho semplicemente sostituito
CPriceHistogram::Delete()
con
void CPriceHistogram::Delete()
Ora funziona bene nella versione 5.00 Build 3661 di MT5 di AMP Futures.
@Oleksandr, questo "indicatore" è tecnicamente un Expert. I buffer degli indicatori non sono disponibili negli Expert. I buffer possono essere ricreati efficacemente utilizzando gli array negli Expert, ma solo i buffer degli indicatori veri e propri possono essere richiamati da iCustom, quindi a tale scopo è necessario codificare da zero un nuovo indicatore personalizzato. Purtroppo entrambe le opzioni sono al di là delle mie capacità di codifica. Vi auguro di trovare un aiuto migliore.
Rimuovete il comando "Delete()" e funzionerà.
Ciao ragazzi, mi è piaciuto molto questo indicatore, ho studiato il profilo di mercato per un po' e questo è il migliore che ho trovato.
Ho appena apportato una modifica al metodo di calcolo del profilo, ho usato il tick del volume invece di verificare solo se il prezzo è passato nel punto. Ho fatto questo perché se vedete, gli scambi e i tempi diversi hanno libbre diverse, si può vedere nell'istogramma del volume. Quindi non possiamo contare solo se il prezzo è lì aggiungere uno.
Siete d'accordo?
La modifica che ho apportato ha mostrato le differenze tra i due metodi
Ciao Dmitry,
prima di tutto: Grazie per il tuo grande articolo e lavoro!
Anche se è passato molto tempo da quando l'hai pubblicato, funziona bene.
Quello che ho qui per te e per la comunità è un aggiornamento, in modo che l'istogramma utilizzi il tickvolume, perché utilizzare solo l'azione del prezzo in aree temporali, dove il volume è quasi nullo, non aiuta molto.
Sostituire il codice corrispondente nel file ClassPriceHistogram.mqh
Ammetto che si tratta di un hack veloce e che non ho testato tutti i pezzi di codice, ma finora funziona bene.
Ecco un esempio con l'indice SP500:
Caro Dmitry
Spero che tu stia bene.
Sarebbe possibile implementare dei buffer per le linee?
Per ogni POC, magari un Vwap e una Mediana?
Grazie mille in anticipo
con
void CPriceHistogram::Delete()Ora funziona bene nella versione 5.00 Build 3661 di MT5 di AMP Futures.
@Oleksandr, questo "indicatore" è tecnicamente un Expert. I buffer degli indicatori non sono disponibili negli Expert. I buffer possono essere ricreati efficacemente utilizzando gli array negli Expert, ma solo i buffer degli indicatori veri e propri possono essere richiamati da iCustom, quindi a tale scopo è necessario codificare da zero un nuovo indicatore personalizzato. Purtroppo entrambe le opzioni sono al di là delle mie capacità di codifica. Vi auguro di trovare un aiuto migliore.
GRAZIE