Aide au codage - page 202

 

Impossible de déplacer la sortie texte sur le graphique sans erreur ???

Le texte d'information actuel est couvert par les bougies de prix. Mes compétences en codage sont insuffisantes et chaque tentative se solde par des erreurs. J'essaie simplement de déplacer la sortie texte sur le graphique comme illustré. Quelqu'un peut-il m'aider ? Merci d'avance !!!ant-gubreakout.mq4

Dossiers :
 
daytrade5:
La sortie du texte d'information de la gamme actuelle est couverte par les bougies de prix. Mes compétences en codage sont insuffisantes et chaque tentative se solde par des erreurs. J'essaie simplement de déplacer la sortie texte sur le graphique comme illustré. Quelqu'un peut-il m'aider ? Merci d'avance !!!ant-gubreakout.mq4

daytrade5

Quand on utilise metatrader 4 on ne peut pas choisir l'ancre pour les objets de type texte (metatrader 4 utilise toujours une ancre fixe pour ces objets que l'on ne peut pas changer). Joindre une version qui modifie la position du texte (utiliser TEXT_OFFSET pour cela) mais parfois vous devrez changer sa valeur et l'alignement n'est pas parfait à 100%.

Dossiers :
 
mladen:
daytrade5 Quand on utilise metatrader 4 on ne peut pas choisir l'ancre pour les objets de type texte (metatrader 4 utilise toujours une ancre fixe pour ces objets que l'on ne peut pas changer). Je joins une version qui modifie la position du texte (utilisez TEXT_OFFSET pour cela) mais parfois vous devrez changer sa valeur et l'alignement n'est pas parfait à 100%.

OK.... merci beaucoup. Je ne l'aurais jamais compris.

 

Bon amarrage, s'il vous plaît aidez avec cette alerte d'ordre mq4 - quand un ordre est fermé il va envoyer une alerte mais maintenant il envoie pour chaque symbole par graphique ouvert sur le profil plutôt que juste le symbole pertinent actionné.

Cordialement,

Dossiers :
 
zigflip:
Bon amarrage, s'il vous plaît aidez avec cette alerte d'ordre mq4 - quand un ordre est fermé il enverra une alerte mais maintenant il envoie pour chaque symbole par graphique ouvert sur le profil plutôt que juste le symbole pertinent actionné. kind regards,

zigflip

Essayez-le maintenant

Dossiers :
 

je n'arrive pas à comprendre comment obtenir les valeurs de 4 cci

Bonjour,

j'ai une autre question, le premier problème a été résolu. merci pour cela mladen

j'ai trouvé le 4 cci ici par mladen et je l'aime beaucoup, je sais qu'il se repeint mais il fonctionne toujours très bien pour moi.

J'essaie d'intégrer les 4 valeurs dans un autre indicateur que j'ai créé moi-même, mais je n'arrive pas à trouver comment.

J'ai essayé la ligne bool de la page précédente avec les valeurs du 4cci mais ça n'a pas marché pour moi.

Je suppose qu'il y a une solution facile pour les codes expérimentés, mais j'ai déjà passé beaucoup de temps et je n'arrive pas à trouver la solution.

merci pour les conseils

Bob

//------------------------------------------------------------------

#property copyright "mladen"

#propriété lien "www.forex-tsd.cm"

//------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 8

#property indicator_color1 LimeGreen

#property indicator_color2 PaleVioletRed

#property indicateur_color3 LimeGreen

#property indicateur_color4 PaleVioletRed

#property indicateur_color5 LimeGreen

#property indicateur_color6 PaleVioletRed

#property indicateur_color7 LimeGreen

#property indicateur_color8 PaleVioletRed

#property indicator_minimum 0

#property indicator_maximum 5

//

//

//

//

//

extern string TimeFrame1 = "Cadre temporel actuel" ;

extern string TimeFrame2 = "next1" ;

extern string TimeFrame3 = "next2" ;

extern string TimeFrame4 = "next3" ;

extern int Period_CCI = 24 ;

extern string UniqueID = "4 Time CCI Slopes " ;

extern int LinesWidth = 0 ;

extern color LabelsColor = DarkGray ;

extern int LabelsHorizontalShift = 5 ;

extern double LabelsVerticalShift = 1.5 ;

extern bool alertsOn = false ;

extern int alertsLevel = 3 ;

extern bool alertsMessage = FALSE ;

bool externe alertsSound = false ;

extern bool alertsEmail = false ;

//

//

//

//

//

double gosc1u[] ;

double gosc1d[] ;

double gosc2u[] ;

double gosc2d[] ;

double gosc3u[] ;

double gosc3d[] ;

double gosc4u[] ;

double gosc4d[] ;

int timeFrames[4] ;

bool returnBars ;

string indicatorFileName ;

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

int init()

{

SetIndexBuffer(0,gosc1u) ;

SetIndexBuffer(1,gosc1d) ;

SetIndexBuffer(2,gosc2u) ;

SetIndexBuffer(3,gosc2d) ;

SetIndexBuffer(4,gosc3u) ;

SetIndexBuffer(5,gosc3d) ;

SetIndexBuffer(6,gosc4u) ;

SetIndexBuffer(7,gosc4d) ;

indicatorFileName = WindowExpertName() ;

returnBars = (TimeFrame1=="returnBars") ; if (returnBars) return(0) ;

//

//

//

//

//

for (int i=0 ; i<8 ; i++)

{

SetIndexStyle(i,DRAW_ARROW,EMPTY,LinesWidth) ; SetIndexArrow(i,110) ;

}

timeFrames[0] = stringToTimeFrame(TimeFrame1) ;

timeFrames[1] = stringToTimeFrame(TimeFrame2) ;

timeFrames[2] = stringToTimeFrame(TimeFrame3) ;

timeFrames[3] = stringToTimeFrame(TimeFrame4) ;

alertsLevel = MathMin(MathMax(alertsLevel,3),4) ;

IndicatorShortName(UniqueID) ;

retour(0) ;

}

int deinit()

{

for (int t=0 ; t<4 ; t++) ObjectDelete(UniqueID+t) ;

return(0) ;

}

//------------------------------------------------------------------

//

//------------------------------------------------------------------

//

//

//

//

//

double trend[][6] ;

#define _up 0

#define _dn 1

#define _hl1 2

#define _hl2 3

#define _hl3 4

#define _hl4 5

int start()

{

int i,r,count,counted_bars=IndicatorCounted() ;

si(barres_comptées < 0) retour(-1) ;

if(counted_bars>0) counted_bars-- ;

int limit = MathMin(Bars-counted_bars,Bars-1) ;

if (returnBars) { gosc1u[0] = limit+1 ; return(0) ; }

if (timeFrames[0] != Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrames[0],indicatorFileName, "returnBars",0,0)*timeFrames[0]/Period())) ;

if (timeFrames[1] != Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrames[1],indicatorFileName, "returnBars",0,0)*timeFrames[1]/Period())) ;

if (timeFrames[2] != Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrames[2],indicatorFileName, "returnBars",0,0)*timeFrames[2]/Period())) ;

if (timeFrames[3] != Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrames[3],indicatorFileName, "returnBars",0,0)*timeFrames[3]/Period()) ;)

si (ArrayRange(trend,0)!=Bars) ArrayResize(trend,Bars) ;

//

//

//

//

//

bool initialized = false ;

if (!initialized)

{

initialized = true ;

int window = WindowFind(UniqueID) ;

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

{

string label = timeFrameToString(timeFrames[t]) ;

ObjectCreate(UniqueID+t,OBJ_TEXT,window,0,0) ;

ObjectSet(UniqueID+t,OBJPROP_COLOR,LabelsColor) ;

ObjectSet(UniqueID+t,OBJPROP_PRICE1,t+LabelsVerticalShift) ;

ObjectSetText(UniqueID+t,label,8, "Arial") ;

}

}

for (t=0 ; t<4 ; t++) ObjectSet(UniqueID+t,OBJPROP_TIME1,Time[0]+Period()*LabelsHorizontalShift*60) ;

//

//

//

//

//

for(i = limite, r=Bars-i-1 ; i >= 0 ; i--,r++)

{

trend[r][_up] = 0 ;

trend[r][_dn] = 0 ;

trend[r][_hl1] = trend[r-1][_hl1] ;

trend[r][_hl2] = trend[r-1][_hl2] ;

trend[r][_hl3] = trend[r-1][_hl3] ;

trend[r][_hl4] = trend[r-1][_hl4] ;

for (int k=0 ; k<4 ; k++)

{

int y = iBarShift(NULL,timeFrames[k],Time) ;

double cciNow = iCCI(NULL, timeFrames[k], Period_CCI, PRICE_TYPICAL, y) ;

double cciPre = iCCI(NULL, timeFrames[k], Period_CCI, PRICE_TYPICAL, y+1) ;

si (cciNow>cciPre) trend[r][k+2] = 1 ;

si (cciNow<cciPre) trend[r][k+2] = -1 ;

switch (k)

{

cas 0 : si (trend[r][k+2]==1) { gosc1u = k+1 ; gosc1d = EMPTY_VALUE;} else { gosc1d = k+1 ; gosc1u = EMPTY_VALUE ; } break ;

cas 1 : si (trend[r][k+2]==1) { gosc2u = k+1 ; gosc2d = EMPTY_VALUE;} else { gosc2d = k+1 ; gosc2u = EMPTY_VALUE ; } break ;

cas 2 : si (trend[r][k+2]==1) { gosc3u = k+1 ; gosc3d = EMPTY_VALUE;} else { gosc3d = k+1 ; gosc3u = EMPTY_VALUE ; } break ;

cas 3 : if (trend[r][k+2]==1) { gosc4u = k+1 ; gosc4d = EMPTY_VALUE;} else { gosc4d = k+1 ; gosc4u = EMPTY_VALUE ; } break ;

}

si (trend[r][k+2]==1)

trend[r][_up] += 1 ;

sinon trend[r][_dn] += 1 ;

}

}

manageAlerts() ;

retour(0) ;

}

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

//|

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

//

//

//

//

//

void manageAlerts()

{

if (alertsOn)

{

int whichBar = Bars-1 ;

si (trend[whichBar][_up] >= alertsLevel || trend[whichBar][_dn] >= alertsLevel)

{

si (trend[whichBar][_up] >= alertsLevel) doAlert("up" ,trend[whichBar][_up]) ;

si (trend[whichBar][_dn] >= alertsLevel) doAlert("down",trend[whichBar][_dn]) ;

}

}

}

//

//

//

//

//

void doAlert(string doWhat, int howMany)

{

static string previousAlert="rien" ;

static datetime previousTime ;

message de type chaîne de caractères ;

if (previousAlert != doWhat || previousTime != Time[0]) {

previousAlert = doWhat ;

previousTime = Time[0] ;

//

//

//

//

//

message = Symbol()+" at "+TimeToStr(TimeLocal(),TIME_SECONDS)+" "+howMany+" time frames of MA trends are aligned "+doWhat ;

if (alertsMessage) Alert(message) ;

if (alertsEmail) SendMail(Symbol()+" 4 time frame MA trends",message) ;

if (alertsSound) PlaySound("alert2.wav") ;

}

}

//-------------------------------------------------------------------

//

//-------------------------------------------------------------------

//

//

//

//

//

string sTfTable[] = {"M1", "M5", "M15", "M30", "H1", "H4", "D1", "W1", "MN"} ;

int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200} ;

//

//

//

//

//

int toInt(double valeur) { return(valeur) ; }

int stringToTimeFrame(string tfs)

{

tfs = stringUpperCase(tfs) ;

int max = ArraySize(iTfTable)-1, add=0 ;

int nxt = (StringFind(tfs, "NEXT1")>-1) ; if (nxt>0) { tfs = ""+Period() ; add=1 ; }

nxt = (StringFind(tfs, "NEXT2")>-1) ; if (nxt>0) { tfs = ""+Period() ; add=2 ; }

nxt = (StringFind(tfs, "NEXT3")>-1) ; if (nxt>0) { tfs = ""+Period() ; add=3 ; }

//

//

//

//

//

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

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable[toInt(MathMin(max,i+add))],Period()) ;)

return(Période()) ;

}

string timeFrameToString(int tf)

{

for (int i=ArraySize(iTfTable)-1 ; i>=0 ; i--)

if (tf==iTfTable) return(sTfTable) ;

return("") ;

}

//

//

//

//

//

string stringUpperCase(string str)

{

string s = str ;

for (int length=StringLen(str)-1 ; length>=0 ; length--)

{

int char = StringGetChar(s, length) ;

if((char > 96 && char 223 && char < 256))

s = StringSetChar(s, length, char - 32) ;

sinon si(char > -33 && char < 0))

s = StringSetChar(s, length, char + 224) ;

}

return(s) ;

}
 
BobMorane1000:
bonjour,

j'ai une autre question, le premier problème a été résolu. merci pour cela mladen

j'ai trouvé le 4 cci ici par mladen et je l'aime beaucoup, je sais qu'il se repeint mais il fonctionne toujours très bien pour moi.

J'essaie d'intégrer les 4 valeurs dans un autre indicateur que j'ai créé moi-même, mais je n'arrive pas à trouver comment.

J'ai essayé la ligne bool de la page précédente avec les valeurs du 4cci mais ça n'a pas marché pour moi.

Je suppose qu'il y a une solution facile pour les codes expérimentés, mais j'ai déjà passé beaucoup de temps et je n'arrive pas à trouver la solution.

merci pour les conseils

Bob

BobMorane1000

Pourquoi ne pas simplement utiliser l 'appel iCCI() à la place 4 fois (ce sera beaucoup plus simple même au niveau du code) ?

 

Vous avez raison, je vais le faire.

Merci encore

 

Quelqu'un peut-il m'aider à ajouter des flèches à la croix de cette stochastique ?

Dossiers :
 

[ATTACH]187655

Bonjour, j'ai besoin d'aide :

J'ai une belle Trendindicatoe qui colore les bougies en vert et les lit pour la tendance. Mais il a un bug : il n'est pas capable de faire en sorte que les couleurs restent les mêmes lorsque l'on change d'horizon temporel. Mais le pire est le fait que les perruques sont à peine visibles et je ne peux pas changer cela.

Quelqu'un pourrait-il y jeter un coup d'œil ?

Merci beaucoup. Je joins l'indicateur

Dossiers :
t3_thv.ex4  5 kb