Aide au codage - page 167

 

Je veux utiliser le "CLOSE PRICE" au lieu du prix médian dans le codage ci-dessous ..... Merci de m'aider :

Merci beaucoup

int start()

{

double ClosePrice=Close[0] ;

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

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

int counted_bars = IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if(counted_bars < 0) return(-1) ;

//---- dernière barre comptée sera recomptée

if(counted_bars > 0) counted_bars-- ;

limit=Bars-1-counted_bars ;

//Print(limite) ;

//----

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

TrendUp = EMPTY_VALUE ;

TrendDown = EMPTY_VALUE ;

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

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

medianPrice = (High+Low)/2 ;

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

up=medianPrice+(Multiplier*atr) ;

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

dn=médianPrix-(Multiplicateur*atr) ;

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

trend=1 ;

if (Close>up) {

trend=1 ;

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

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

}

else if (Close<dn) {

trend=-1 ;

si (trend == 1) changeOfTrend = 1 ;

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

}

else if (trend==1) {

trend=1 ;

changeOfTrend = 0 ;

}

else if (trend==-1) {

trend=-1 ;

changeOfTrend = 0 ;

}

si (trend0) {

flag=1 ;

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

}

else {

flag=0 ;

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

}

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

flagh=1 ;

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

}

else {

flagh=0 ;

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

}

si (trend>0 && dn<dn)

dn=dn ;

si (trendup)

up=up ;

si (flag==1)

up=médianPrix+(Multiplicateur*atr) ;

si (flagh==1)

dn=médianPrix-(Multiplicateur*atr) ;

//-- Dessinez l'indicateur

if (trend==1) {

TrendUp=dn ;

si (changeOfTrend == 1) {

TrendUp = TrendDown ;

changeOfTrend = 0 ;

}

}

else if (trend==-1) {

TrendDown=up ;

si (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:
Je veux utiliser "CLOSE PRICE" au lieu de Median price dans le codage ci-dessous .... Merci de m'aider :

Merci beaucoup

int start()

{

double ClosePrice=Close[0] ;

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

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

int counted_bars = IndicatorCounted() ;

//---- vérifier les erreurs éventuelles

if(counted_bars < 0) return(-1) ;

//---- dernière barre comptée sera recomptée

if(counted_bars > 0) counted_bars-- ;

limit=Bars-1-counted_bars ;

//Print(limite) ;

//----

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

TrendUp = EMPTY_VALUE ;

TrendDown = EMPTY_VALUE ;

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

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

medianPrice = (High+Low)/2 ;

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

up=medianPrice+(Multiplier*atr) ;

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

dn=médianPrix-(Multiplicateur*atr) ;

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

trend=1 ;

if (Close>up) {

trend=1 ;

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

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

}

else if (Close<dn) {

trend=-1 ;

si (trend == 1) changeOfTrend = 1 ;

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

}

else if (trend==1) {

trend=1 ;

changeOfTrend = 0 ;

}

else if (trend==-1) {

trend=-1 ;

changeOfTrend = 0 ;

}

si (trend0) {

flag=1 ;

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

}

else {

flag=0 ;

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

}

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

flagh=1 ;

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

}

else {

flagh=0 ;

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

}

si (trend>0 && dn<dn)

dn=dn ;

si (trendup)

up=up ;

si (flag==1)

up=médianPrix+(Multiplicateur*atr) ;

si (flagh==1)

dn=médianPrix-(Multiplicateur*atr) ;

//-- Dessinez l'indicateur

if (trend==1) {

TrendUp=dn ;

si (changeOfTrend == 1) {

TrendUp = TrendDown ;

changeOfTrend = 0 ;

}

}

else if (trend==-1) {

TrendDown=up ;

si (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) ;

}

Vous pouvez remplacer :

(High+Low)/2

par

Fermer

 
mladen:
kenwa

De quelle fonctionnalité du symbole autocheck parlez-vous ? Il n'y a rien de tel dans ce code

Tout ce que vous avez à faire est d'entrer le symbole dans le champ de paramètre approprié et cela fonctionnera (sur n'importe quel symbole, tant que le nom du symbole est correct) Utilisez l'indicateur que le fareastol a fourni puisqu'il fait tout ce dont vous parliez que vous en avez besoin

Salut mladen,

Je vois ceci à l'intérieur :

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

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

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

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

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol() ;

quelques parties :

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

{

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

for (int i=limit ; 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) ;

}

}

je ne peux pas savoir exactement ce qu'il fait, car ma capacité ne peut pas connaître son but exact, mais d'après ma supposition brute, il semble que le code détecte automatiquement si nous entrons un symbole en externe, puis l'affiche sur le graphique, si aucun symbole n'est entré, il affichera le graphique local Null. alors je pense que si je laisse intentionnellement plusieurs chaînes d'entrée externe en blanc à l'extérieur (en ne remplissant rien), l'indicateur affichera-t-il plusieurs fois (au moins en superposition) le graphique local Null ? Je ne sais pas comment faire exactement, mais j'essaie, est-ce que c'est comme l'attachement (pour désensibiliser la fonction/reconnaissance du symbole d' entrée externe) ? ou comment adapter la modification aux symboles internes préétablis ?

D'ailleurs, pourquoi la version que j'ai faite avant la page 166 #1660, se repeint toujours en direct ? quelles sont les raisons de cette repeinture ? Merci pour vos conseils.

 
kenwa:
Salut mladen,

Je vois ceci à l'intérieur :

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

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

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

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

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbole() ;

quelques parties :

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

{

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

for (int i=limit ; 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) ;

}

}

je ne peux pas savoir exactement ce qu'il fait, car ma capacité ne peut pas connaître son but exact, mais d'après ma supposition brute, il semble que le code détecte automatiquement si nous entrons un symbole en externe, puis l'affiche sur le graphique, si aucun symbole n'est entré, il affichera le graphique local Null. alors je pense que si je laisse intentionnellement plusieurs chaînes d'entrée externe en blanc à l'extérieur (en ne remplissant rien), l'indicateur affichera-t-il plusieurs fois (au moins en superposition) le graphique local Null ? Je ne sais pas comment faire exactement, mais j'essaie, est-ce que c'est comme l'attachement à faire (pour désensibiliser la fonction/reconnaissance du symbole d'entrée externe) ? ou comment adapter la modification aux symboles internes prédéfinis ?

Au fait, pourquoi la version que j'ai faite avant la page 166 #1660, se repeint-elle toujours en direct ? Quelles sont les raisons de cette repeinture ? Merci pour vos conseils.

Vous pouvez consulter l'indicateur de ce post : https://www.mql5.com/en/forum/178416/page19 pour voir comment certains contrôles supplémentaires peuvent être effectués.

 

pour le #1664, lire et télécharger avant, je ne peux pas adapter les codes, trop avancé et complexe pour moi.

 
kenwa:
pour #1664, lu et téléchargé avant, je ne peux pas adapter les codes, trop avancés & complexes pour moi.

Tout ne peut pas être écrit en deux lignes. Dans certains cas, c'est impossible

 
fareastol:
Bonjour Mladen

En ce qui concerne ma demande de calculer le pourcentage d'avancement et la valeur ajoutée pour une bande cible en fonction d'un profil de marché donné, j'ai fait tout mon possible. Malheureusement, je n'ai obtenu que la valeur POC. Obtenir les valeurs VA High/Low est au-delà de mes capacités actuelles.

De plus, au début de la semaine, l'indicateur original Level Sensor semble avoir une erreur dans son code, provoquant un affichage terrible comme vous pouvez le voir sur la photo ci-jointe. Je n'arrive pas à comprendre la raison de cette erreur, mais je suppose qu'elle est liée à des conflits entre l'affichage par défaut de MT4 et les données de l'échelle de temps inférieure (<W1).

S'il vous plaît, jetez un coup d'œil et donnez-moi des conseils pour avancer.

Merci beaucoup,

fareastol

fareastol

Cette chose à l'écran se produit parce qu'il y a un écart de temps sur le graphique entre les données du dernier vendredi et les données du premier dimanche ou lundi et lorsque le temps xshift est ajouté aux temps de la ligne.

Une solution possible est celle de cette version : inverser l'affichage et au lieu de l'afficher de droite à gauche, l'afficher de gauche à droite (comme sur l'image). Jusqu'à présent, je n'ai pas trouvé de solution pour un affichage de droite à gauche.

Dossiers :
 

Parfois il suffit de réfléchir un peu (dès que j'ai terminé le post précédent l'idée était là )

Voici la solution "de droite à gauche" (pour autant que je l'ai testée, elle fonctionne bien maintenant)

Dossiers :
 

Bonjour,

J'ai calculé la ligne de déviation standard "à la main".

Maintenant je veux dessiner un canal comme le canal de déviation original du metatrader.

Mais je ne sais pas comment calculer le facteur = 0.618 à ma ligne de déviation normale pour qu'elle fonctionne comme le canal original ...OBJPROP_DEVIATION,0.618)

 

Salut Mladen,

Vous me rappelez beaucoup de choses significatives et me motivez beaucoup.

Merci pour tout

fareastol