Come codificare? - pagina 315

 

...

Se ne avete bisogno per lo 0,5 fisso potete usare MathSqrt(x)

Ma se avete bisogno del calcolo anche per la parte variabile 0,5 allora potete usare MathPow(x,0,5) (anche la parte 0,5 può essere cambiata)

dasio:
Ciao.

C'è una funzione che mi permette di calcolare questa operazione?

x^0,5 (x= valore noto)

E un'altra domanda.

Ho un broker a 5 cifre. È possibile ottenere solo i primi 4 decimali del valore noto? Grazie a voi

Grazie a voi
 
mladen:
Se hai bisogno di un valore fisso di 0,5 puoi usare MathSqrt(x) Ma se hai bisogno del calcolo anche per la parte variabile di 0,5 puoi usare MathPow(x,0,5) (anche la parte di 0,5 può essere cambiata)

Grazie per la vostra risposta. Funziona bene.

Per la seconda richiesta?

Se ho un broker a 5 cifre, il codice mi dà il prive con un broker a 5 cifre, ma io ne ho bisogno a 4 cifre. Come posso trasfomare il valore da 5 a 4 cifre?

Grazie, grazie

 

dasio

Usa qualcosa del genere:

price4digit = NormalizeDouble(price,4);
dasio:
Grazie per la vostra risposta. Funziona bene.

Per la seconda richiesta?

Se ho un broker a 5 cifre, il codice mi dà il prive con un broker a 5 cifre, ma io ne ho bisogno a 4 cifre. Come posso trasferire il valore da 5 a 4 cifre?

Grazie a voi
 

Trovare il punto di intersezione

Salve,

Ho fondato il seguente indicatore:

#property copyright "Kalenzo"

#property link "bartlomiej.gorski@gmail.com"

#property indicator_color1 DodgerBlue

#property indicator_color2 Lime

#property indicator_buffers 2

extern int MoMPeriod = 14;

extern int MaType = MODE_EMA;

extern int MaPeriod = 50;

extern int TimeFrame = 60;

double mom[],

ema[],

momTF[],

emaTF[];

#property indicator_separate_window

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexBuffer(0,mom);

SetIndexBuffer(1,ema);

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);

SetIndexBuffer(2,momTF);

SetIndexBuffer(3,emaTF);

IndicatorShortName("MTF Momentum "+tf());

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

//----

int bbshift,limit,limitTF;

limit=Bars;

limitTF = iBars(Symbol(),TimeFrame);

for(int i=0; i<limitTF; i++) momTF = iMomentum(Symbol(),TimeFrame,MoMPeriod,PRICE_CLOSE,i);

for(int j=0; j<limitTF; j++) emaTF[j] = iMAOnArray(momTF,0,MaPeriod,0,MaType,j);

for(int t=0; t<limit; t++)

{

bbshift = iBarShift(Symbol(),TimeFrame,Time[t]);

mom[t] = momTF;

ema[t] = emaTF;

}

//----

return(0);

}

[/PHP]

But I can't get the intersection point from this two lines with my ea, even I can't get the right value from the indicator, which is displayed.

Why?

I tried this for example:

[PHP]

x1= iCustom(NULL,0,"MOM_EMA_MTF",14,MODE_EMA,50,60,0,1);

 
mladen:
dasio

Usa qualcosa del genere:

price4digit = NormalizeDouble(price,4);

Ciao mladen,

è giusto come lo codifico?

Pivot = NormalizeDouble(( PDayHigh + PDayLow + Close ) / 3,4)

MathPow((MathPow(Pivot,0.5)+Numero(definito)),2)

Grazie

 

...

La prima linea è OK

Una domanda su questa linea:

MathPow((MathPow(Pivot,0.5)+Number(defined)),2);

Qual è l'intenzione esatta di questa linea? Nel modo in cui è scritta restituisce il quadrato del (radice quadrata del pivot + aumento definito). È questo che avevi in mente?

dasio:
Ciao mladen,

È giusto come lo codifico?

Pivot = NormalizeDouble(( PDayHigh + PDayLow + Close ) / 3,4)

MathPow((MathPow(Pivot,0.5)+Numero(definito)),2)

grazie
 
mladen:
La prima linea è OK

Una domanda su questa linea:

MathPow((MathPow(Pivot,0.5)+Number(defined)),2);
Qual è l'intenzione esatta di quella linea? Per come è scritta restituisce il quadrato del (radice quadrata del pivot + aumento definito). È questo che avevi in mente?

Sì, calcola prima il valore di MathPow(Pivot,0.5)+Numero(definito) e dopo devo calcolare il quadrato del risultato.

Un esempio.

10 = Pivot

1 = numero definito

Ho ((10^0,5)+1)^2 Il risultato è:

((3,162)+1)^2 ----> (4,162)^2------>17,324

 

Allora è tutto OK

dasio:
Sì, calcola prima il valore di MathPow(Pivot,0.5)+Numero(definito) e dopo devo calcolare il quadrato del risultato.
 
mladen:
Allora è tutto OK

Ok grazie.

Ma ho bisogno anche di questa operazione

(MathPow((MathPow((Pivot*10000),0.5)+numero),2)/10000)

Ma mi dà un valore diverso se lo calcolo manualmente.

La differenza è alta.

Per chiarire se ho 1,2989 come pivot devo fare l'operazione come 12989 e dopo tutte le operazioni devo dividere il risultato per 10000.

Non so perché mi dà un valore diverso

 

dasio

Non conosco l'"intenzione" di quella linea. Matematicamente non c'è niente di sbagliato in quella linea (imposta il "numero" a 0 e vedrai che restituirà esattamente lo stesso valore del Pivot il che significa che funziona correttamente, quindi se è diverso da quello che ti aspetti, l'unica parte che fa la differenza è l'aggiunta di "numero"). Cosa stai cercando di calcolare esattamente con quella linea?

dasio:
Ok grazie.

Ma ho bisogno anche di questa operazione

(MathPow((MathPow((Pivot*10000),0.5)+numero),2)/10000)

Ma mi dà un valore diverso se lo calcolo manualmente.

La differenza è alta.

Per chiarire se ho 1,2989 come pivot devo fare l'operazione come 12989 e dopo tutte le operazioni devo dividere il risultato per 10000.

Non so perché mi dà un valore diverso