Aiuto per la codifica - pagina 167

 

Voglio usare " CLOSE PRICE" invece di Median price nel seguente codice .... Plz aiuto:

Grazie mille

int start()

{

double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

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--;

limite=Bars-1-counted_bars;

//Stampa(limite);

//----

for (i = Bars; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Stampa("atr: "+atr);

medianPrice = (High+Low)/2;

//Stampa("medianPrice: "+medianPrice);

up=medianPrice+(Multiplier*atr);

//Stampa("up: "+up);

dn=medianPrice-(Multiplier*atr);

//Stampa("dn: "+dn);

tendenza=1;

se (Close>up) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Stampa("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

if (trend == 1) changeOfTrend = 1;

//Stampa("trend: "+trend);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

se (trend0) {

flag=1;

//Print("flag: "+flag);

}

altrimenti {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

flagh=1;

//Print("flagh: "+flagh);

}

altrimenti {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

se (trenddup)

up=up;

se (flag==1)

up=medianPrice+(Multiplier*atr);

se (flagh==1)

dn=medianPrice-(Multiplier*atr);

//-- Disegna l'indicatore

se (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=up;

se (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point);

}

}

WindowRedraw();

//----

return(0);

}

 
rpasupathy:
Voglio usare " CLOSE PRICE" invece di Median price nel seguente codice .... Plz aiuto:

Grazie mille

int start()

{

double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000], dn[5000], medianPrice, atr;

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--;

limite=Bars-1-counted_bars;

//Stampa(limite);

//----

for (i = Bars; i >= 1; i--) {

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Stampa("atr: "+atr);

medianPrice = (High+Low)/2;

//Stampa("medianPrice: "+medianPrice);

up=medianPrice+(Multiplier*atr);

//Stampa("up: "+up);

dn=medianPrice-(Multiplier*atr);

//Stampa("dn: "+dn);

tendenza=1;

se (Close>up) {

trend=1;

if (trend == -1) changeOfTrend = 1;

//Stampa("trend: "+trend);

}

else if (Close<dn) {

trend=-1;

if (trend == 1) changeOfTrend = 1;

//Stampa("trend: "+trend);

}

else if (trend==1) {

trend=1;

changeOfTrend = 0;

}

else if (trend==-1) {

trend=-1;

changeOfTrend = 0;

}

se (trend0) {

flag=1;

//Print("flag: "+flag);

}

altrimenti {

flag=0;

//Print("flagh: "+flag);

}

if (trend>0 && trend<0) {

flagh=1;

//Print("flagh: "+flagh);

}

altrimenti {

flagh=0;

//Print("flagh: "+flagh);

}

if (trend>0 && dn<dn)

dn=dn;

se (trenddup)

up=up;

se (flag==1)

up=medianPrice+(Multiplier*atr);

se (flagh==1)

dn=medianPrice-(Multiplier*atr);

//-- Disegna l'indicatore

se (trend==1) {

TrendUp=dn;

if (changeOfTrend == 1) {

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (trend==-1) {

TrendDown=up;

se (changeOfTrend == 1) {

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (trend==1 && trend==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (trend==-1 && trend==1) {

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point);

}

}

WindowRedraw();

//----

return(0);

}

Puoi sostituire :

(Alto+Basso)/2

con

Close

 
mladen:
kenwa

Di quale funzionalità del simbolo autocheck stai parlando? Non c'è una cosa del genere in quel codice

Tutto quello che devi fare è inserire il simbolo nell'apposito campo dei parametri e funzionerà (su qualsiasi simbolo, purché il nome del simbolo sia corretto) Usa l'indicatore che ti ha fornito fareastol poiché fa tutto quello di cui stavi parlando che ti serve

ciao mladen

vedo questi all'interno:

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

se (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

alcune parti:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limite = MathMax(limite,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period());

for (int i=limite; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

non posso sapere esattamente cosa sta facendo, come la mia capacità non può conoscere il suo scopo esatto, ma dalla mia ipotesi grezza, sembra che il codice è auto rilevare se abbiamo input esterno un simbolo, quindi mostrare sul grafico, se nessuno è di ingresso, mostrerà il grafico locale Null. poi penserò se io intenzionalmente lasciare diversi input esterno stringa a vuoto fuori (riempimento nulla lì), l'indicatore ripetutamente (almeno sovrapporre) mostrano il grafico locale Null più volte? anche come il codice si adatta ai simboli interni preimpostati? non so come fare esattamente, ma ci provo, è come il modo allegato a fare (per desensibilizzare la funzione di input esterno simbolo / riconoscimento)? o come adattare modificare i simboli interni preimpostati?

a proposito, perché la versione che ho fatto prima della pagina 166 #1660, continua a ridipingere in live? quali ragioni di base causano tale ridipintura? Grazie per i consigli.

 
kenwa:
Ciao mladen,

vedo questi all'interno

if (ForSymbol1=="") ForSymbol1 = Symbol();

if (ForSymbol2=="") ForSymbol2 = Symbol();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

se (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

alcune parti:

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limite = MathMax(limite,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period());

for (int i=limite; i>=0; i--)

{

int y = iBarShift(ForSymbol,timeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

non posso sapere esattamente cosa sta facendo, come la mia capacità non può conoscere il suo scopo esatto, ma dalla mia ipotesi grezza, sembra che il codice è auto rilevare se abbiamo input esterno un simbolo, quindi mostrare sul grafico, se nessuno è di ingresso, mostrerà il grafico locale Null. poi penserò se io intenzionalmente lasciare diversi input esterno stringa a vuoto fuori (riempimento nulla lì), l'indicatore ripetutamente (almeno sovrapporre) mostrano il grafico locale Null più volte? Inoltre, come il codice si adatta ai simboli interni preimpostati? Non so come fare esattamente, ma ci provo, è come il modo di fare l'allegato (per desensibilizzare la funzione di ingresso esterno simbolo / riconoscimento)? o come adattare modificare i simboli interni preimpostati?

a proposito, perché la versione che ho fatto prima della pagina 166 #1660, continua a ridipingere in live? quali ragioni di base causano tale ridipintura? Grazie per i consigli.

Puoi controllare l'indicatore da questo post: https: //www.mql5.com/en/forum/178416/page19 per vedere come alcuni controlli aggiuntivi possono essere fatti

 

per #1664, leggere e scaricare prima, non posso adattare i codici, troppo avanzati e complessi per me.

 
kenwa:
per #1664, leggere e scaricare prima, non posso adattare i codici, troppo avanzati e complessi per me.

Non tutto può essere scritto in due righe. In alcuni casi è impossibile

 
fareastol:
Ciao Mladen

In relazione alla mia richiesta di calcolare POC e VA per una fascia target basata su un dato profilo di mercato, ho cercato il più possibile. Sfortunatamente, ho ottenuto solo il valore POC. Ottenere i valori VA Alto/Basso è al di là delle mie capacità attuali.

Inoltre, all'inizio della settimana, l'indicatore originale Level Sensor sembra avere un errore nel suo codice, causando una visualizzazione terribile come si può vedere nella foto allegata. Non riesco a capire quale sia la ragione, supponendo che si riferisca a conflitti tra la visualizzazione predefinita di MT4 e i dati del timeframe inferiore (<W1).

Per favore dai un'occhiata e dammi un consiglio per andare avanti.

Grazie profondamente,

fareastol

fareastol

Quella cosa sullo schermo sta accadendo perché c'è un gap temporale sul grafico tra i dati dell'ultimo venerdì e i primi dati di domenica o lunedì e quando il tempo xshift viene aggiunto ai tempi della linea.

Una possibile soluzione è quella di questa versione: invertire la visualizzazione e invece di visualizzarla da destra a sinistra visualizzarla da sinistra a destra (come nell'immagine). Finora non ho trovato una soluzione per la visualizzazione da destra a sinistra

 

A volte basta pensare un po' (appena ho finito il post precedente l'idea era lì )

Ecco la soluzione "da destra a sinistra" (per quanto ho testato funziona bene ora)

 

Ciao,

Ho calcolato la linea di deviazione standard "a mano".

Ora voglio disegnare un canale come l'originale Deviation Channel di metatrader.

Ma non so come calcolare il fattore = 0.618 alla mia linea di deviazione normale in modo che funzioni come il canale originale ...OBJPROP_DEVIATION,0.618)

 

Ciao Mladen,

Mi ricordi molte cose significative e mi motivi molto.

Grazie per tutti

fareastol