Comment coder ? - page 315

 

...

Si vous en avez besoin pour une valeur fixe de 0,5, vous pouvez utiliser MathSqrt(x).

Mais si vous avez besoin du calcul pour une partie variable de 0.5, vous pouvez utiliser MathPow(x,0.5) (la partie 0.5 peut aussi être modifiée).

dasio:
Bonjour.

Il existe une fonction qui me permet de calculer cette opération ?

x^0,5 (x= valeur connue)

Et une autre question.

J'ai un courtier à 5 chiffres. Est-il possible d'obtenir seulement les 4 premières décimales de la valeur connue ? Merci.

Merci à vous.
 
mladen:
Si vous en avez besoin pour une valeur fixe de 0,5, vous pouvez utiliser MathSqrt(x). Mais si vous avez besoin du calcul pour une partie variable de 0,5, vous pouvez utiliser MathPow(x,0.5) (la partie 0,5 peut aussi être modifiée).

Merci pour votre réponse. Cela fonctionne bien.

Pour la deuxième demande ?

Si j'ai un courtier à 5 chiffres, le code me donne un privilège avec un courtier à 5 chiffres mais j'en ai besoin à 4 chiffres. Comment puis-je transférer la valeur de 5 à 4 chiffres ?

Merci de votre compréhension.

 

dasio

Utilisez quelque chose comme ceci :

price4digit = NormalizeDouble(price,4);
dasio:
Merci pour votre réponse. Cela fonctionne bien.

Pour la deuxième demande ?

Si j'ai un courtier à 5 chiffres, le code me donne un privilège avec un courtier à 5 chiffres, mais j'en ai besoin à 4 chiffres. Comment puis-je transférer la valeur de 5 à 4 chiffres ?

Merci pour votre réponse.
 

Trouver le point d'intersection

Bonjour,

J'ai créé l'indicateur suivant :

#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

Utilisez quelque chose comme ceci :

price4digit = NormalizeDouble(price,4);

Salut mladen,

c'est bien comme ça que je le code ?

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

MathPow((MathPow(Pivot,0.5)+Nombre(defined)),2)

Merci

 

...

La première ligne est OK

Une question sur cette ligne :

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

Quelle est l'intention exacte de cette ligne ? Telle qu'elle est écrite, elle renvoie le carré de (racine carrée du pivot + augmentation définie). Est-ce que c'est ce que vous aviez à l'esprit ?

dasio:
Salut mladen,

C'est bien comme ça que je le code ?

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

MathPow((MathPow(Pivot,0.5)+Nombre(défini)),2)

Merci.
 
mladen:
La première ligne est correcte

Une question sur cette ligne :

MathPow((MathPow(Pivot,0.5)+Number(defined)),2);
Quelle est l'intention exacte de cette ligne ? Telle qu'elle est écrite, elle renvoie le carré de (racine carrée du pivot + augmentation définie). Est-ce bien ce que vous aviez en tête ?

Oui, elle calcule d'abord la valeur de MathPow(Pivot,0.5)+Number(defined) et ensuite je dois calculer le carré du résultat.

Un exemple.

10 = Pivot

1 = nombre défini

J'ai ((10^0,5)+1)^2 Le résultat est :

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

 

Ensuite, tout est OK.

dasio:
Oui, il calcule d'abord la valeur de MathPow(Pivot,0.5)+Number(defined) et ensuite je dois calculer le carré du résultat.
 
mladen:
Ensuite, tout est OK

Ok, merci.

Mais j'ai aussi besoin de cette opération

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

Mais cela me donne une valeur différente si je le calcule manuellement.

La différence est élevée.

Pour clarifier si j'ai 1,2989 comment pivot je dois faire l'opération comment 12989 et après toute l'opération je dois diviser le résultat pour 10000.

Je ne sais pas pourquoi il me donne une valeur différente.

 

dasio

Je ne connais pas l'"intention" de cette ligne. Mathématiquement, il n'y a rien d'anormal dans cette ligne (mettez le "nombre" à 0 et vous verrez qu'elle renverra exactement la même valeur que le Pivot, ce qui signifie qu'elle fonctionne correctement, donc si elle est différente de ce que vous attendez, la seule partie qui fait la différence est l'ajout du "nombre"). Qu'essayez-vous exactement de calculer avec cette ligne ?

dasio:
Ok merci.

Mais j'ai aussi besoin de cette opération

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

Mais cela me donne une valeur différente si je la calcule manuellement.

La différence est élevée.

Pour clarifier, si j'ai 1,2989 comme pivot je dois faire l'opération comme 12989 et après toutes les opérations je dois diviser le résultat pour 10000.

Je ne sais pas pourquoi il me donne une valeur différente.