Demandez ! - page 130

 
Dave137:

Actuellement, les deux couleurs 1 et 2 sont noires sur le graphique !

Un gourou expert peut-il m'aider à résoudre ce problème ?

Merci d'avance !

couleur Couleur1 ;

couleur Couleur2 ;

FerruFx

 

Quelqu'un peut-il m'expliquer comment me débarrasser du problème "OrderModify error 1" ? J'ai cherché et il semble que je doive utiliser NormalizeDouble(), mais j'ai tout normalisé d'ici à la lune et j'obtiens toujours l'erreur.

Une fois que j'aurai compris, je pense que je serai capable de le résoudre, s'il vous plaît, quelqu'un peut-il m'aider ?

J'obtiens également une erreur "unmatched data error(volume limit 31 at 2008.04.16 07:30 exceeded)" si quelqu'un sait de quoi il s'agit j'apprécierais l'aide.

 
FerruFx:
couleur Couleur1 ;

couleur Color2 ;

FerruFx

SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1) ;

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2) ;

J'ai essayé d'insérer de la couleur partout, une étape et un essai à la fois, et soit j'obtiens une erreur pour les deux déclarations ci-dessus -')' - virgule ou point-virgule attendu soit je n'obtiens pas d'erreur, mais alors tout est noir.

Cela me perturbe vraiment. Avez-vous d'autres suggestions ?

Dave

 

@xerof123 - cette erreur se produit lorsque vous essayez de modifier un ordre avec les mêmes valeurs que l'ordre ouvert possède déjà. L'autre problème est la mauvaise concordance des prix entre les différentes échéances - pour vous en débarrasser, supprimez et régénérez toutes les données tick via le menu du centre d'historique.

@Dave137 - par où commencer, vous avez défini color1, color2 comme type string, alors que ceux-ci sont de type color. Notez que le mot-clé 'color1' dans la définition des 'propriétés' ne fait qu'attribuer une valeur, donc lorsque vous définissez ultérieurement color1, color2, ils pourraient tout aussi bien être appelés c1, c2. Notez également que vous n'avez pas besoin d'utiliser "properties color1" pour commencer, puisque vous les définissez manuellement dans la fonction init() de toute façon. Consultez également d'autres indicateurs pour savoir comment utiliser '#property indicator buffers x' et 'indicatorbuffers(x)'...

 

Merci omelette,

J'ai essayé tout ce que j'ai pu, cela fait maintenant 6 jours que j'y travaille sans relâche et il m'a battu...

S'il vous plaît, pouvez-vous regarder le code ici et me dire pourquoi j'obtiens le misérable "OrderModify error 1".

J'ai essayé de normaliser, j'ai essayé une logique différente, j'ai même essayé de lui offrir une bière.

J'apprécie vraiment votre aide. Merci

for(int i=OrdersTotal()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

si(OrderType()<=OP_SELL) outotal++ ;

si(OrderType()==OP_BUY)

{

if(bep==true && Bid-OrderOpenPrice()>=Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()+7*Point,0,0,0)==true) bep=false ;

return(0) ;

}

if((NormalizeDouble( Bid, Digits)-OrderOpenPrice())>=TS_start*Point)

{

si((NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits)) > TS_start*Point &&

(NormalizeDouble( Bid, Digits)-NormalizeDouble( OrderStopLoss(), Digits) - TS_start*Point)>=(TrailEvery-1)*Point)

{

si (TS_start > OrderStopLoss()+Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask - Point*TS_start ,0,0,SkyBlue) ;

retour(0) ;

}

}

}

}

si(OrderType()==OP_SELL))

{

if(bep==true && OrderOpenPrice()-NormalizeDouble( Ask, Digits) >= Locked_at*Point)

{

if(OrderModify(OrderTicket(),0,OrderOpenPrice()-7*Point,0,0,0)==true) bep=false ;

return(0) ;

}

if((OrderOpenPrice()-NormalizeDouble( Ask, Digits)) >= TS_start*Point)

{

if((NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)) > TS_start*Point &&

(NormalizeDouble( OrderStopLoss(), Digits)-NormalizeDouble( Ask, Digits)-TS_start*Point)>=(TrailEvery-1)*Point)

{

si (TS_start > OrderStopLoss() +Point)

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask + Point*TS_start ,0,0,Orange) ;

retour(0) ;

}

}

}

}

}

}

 
Dave137:
SetIndexStyle(0,DRAW_ARROW,0,star_size,color Color1) ;

SetIndexStyle(1,DRAW_ARROW,0,star_size,color Color2) ;

J'ai essayé d'insérer de la couleur un peu partout, une étape et un essai à la fois, et soit j'obtiens une erreur pour les deux déclarations ci-dessus -')' - virgule ou point-virgule attendu soit je n'obtiens pas d'erreur, mais alors tout est noir.

Cela me perturbe vraiment. Avez-vous d'autres suggestions ?

Dave

Non, vous faites les mauvaises modifications.

Vous devez changer ceci :

string Couleur1 ;

string Color2 ;

par ceci :

couleur Color1 ;

couleur Couleur2 ;

C'est tout.

FerruFx

 

Comment puis-je faire en sorte que cet indicateur m'alerte lorsque la bougie touche la ligne supérieure ou inférieure et que la pente passe de la hausse à la baisse ou vice versa ?

#property copyright "ANG3110@latchess.com"

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

#property indicator_chart_window

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

extern int Hours=24 ;

extern color col=Aqua ;

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

double lr,lr0,lrp ;

double sx,sy,sxy,sx2,aa,bb ;

int p,sName,fs ;

int f,f0,f1 ;

double dh,dl,dh_1,dl_1,dh_2,dl_2 ;

int ai_1,ai_2,bi_1,bi_2 ;

double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap ;

double price_p1,price_p0,price_p2,price_01,price_00,price_02 ;

int p1,p0,p2,fp ;

//*****************************************

int init() {

p=Heures*60/Période() ;

if (fs==0) {sName=CurTime() ; fs=1;}

return(0);}

//*******************************

int deinit() {

ObjectDelete("1"+sName) ;

ObjectDelete("0"+sName) ;

ObjectDelete("2"+sName) ; }

//*******************************

int start() {

int i,n ;

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

if (f==1) {

p1=iBarShift(Symbol(),Period(),ObjectGet("1"+sName,OBJPROP_TIME1)) ;

p0=iBarShift(Symbol(),Period(),ObjectGet("0"+sName,OBJPROP_TIME1)) ;

p2=iBarShift(Symbol(),Period(),ObjectGet("2"+sName,OBJPROP_TIME1)) ;

if (fp==0 && p!=p1) {p=p1 ; fp=1;}

if (fp==0 && p!=p0) {p=p0 ; fp=1;}

if (fp==0 && p!=p2) {p=p2 ; fp=1;}

}

//====================================================

sx=0 ; sy=0 ; sxy=0 ; sx2=0 ;

for (n=0 ; n<=p ; n++) {sx+=n ; sy+=Close[n] ; sxy+=n*Close[n] ; sx2+=MathPow(n,2);}

aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2) ; bb=(sy-aa*sx)/(p+1) ;

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

for (i=0 ; i<=p ; i++) {

lr=bb+aa*i ;

dh=High-lr ; dl=Low-lr ;

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

if (i<p/2) {si (i==0) {dh_1=0.0 ; dl_1=0.0 ; ai_1=i ; bi_1=i;}

if (dh>=dh_1) {dh_1=dh ; ai_1=i;}

if (dl<=dl_1) {dl_1=dl ; bi_1=i;}}

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

if (i>=p/2) {si (i==p/2) {dh_2=0.0 ; dl_2=0.0 ; ai_2=i ; bi_2=i;}

if (dh>=dh_2) {dh_2=dh ; ai_2=i;}

if (dl<=dl_2) {dl_2=dl ; bi_2=i;}}}

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

lr0=bb ; lrp=bb+aa*(i+p) ;

//===================================================

si (MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1 ;

si (MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2 ;

si (MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2)) {si (MathAbs(dh_1-dh_2)=MathAbs(dl_1-dl_2)) f=2;}

//=================================================

if (f==1) {

for (n=0 ; n<=20 ; n++) { f1=0 ;

for (i=0 ; i<=p ; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1) ;

si (i==0 || i==p/2) dhm=0.0 ;

si (High-hai>dhm && i<p/2) {ai_1=i ; f1=1;}

si (High-hai>dhm && i>=p/2) {ai_2=i ; f1=1;} }

si (f==0) break;}

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

for (i=0 ; i<=p ; i++) {hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1) ;

dli=Low-hai ;

if (i==0) dlm=0.0 ; if (dli<dlm) dlm=dli;}

ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);

hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);

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

prix_p1=hap ;

prix_p0=hap+dlm/2 ;

prix_p2=hap+dlm ;

prix_01=ha0 ;

prix_00=ha0+dlm/2 ;

prix_02=ha0+dlm ;

}

//=================================================

if (f==2) {

for (n=0 ; n<=20 ; n++) {f1=0 ;

for (i=0 ; i<=p ; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1) ;

si (i==0 || i==p/2) dlm=0.0 ;

si (Low-lai<dlm && i<p/2) {bi_1=i ; f1=1;}

si (Low-lai=p/2) {bi_2=i ; f1=1;}}

si (f==0) break;}

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

for (i=0 ; i<=p ; i++) {lai=Low*(i-bi_2)/(bi_1-bi_2)+Low*(i-bi_1)/(bi_2-bi_1) ;

dhi=High-lai ;

if (i==0) dhm=0.0 ; if (dhi>dhm) dhm=dhi;}

la0=Low*(0-bi_2)/(bi_1-bi_2)+Low*(0-bi_1)/(bi_2-bi_1);

lap=Low*(p-bi_2)/(bi_1-bi_2)+Low*(p-bi_1)/(bi_2-bi_1);

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

prix_p1=lap ;

prix_p0=lap+dhm/2 ;

prix_p2=lap+dhm ;

prix_01=la0 ;

prix_00=la0+dhm/2 ;

price_02=la0+dhm ;

}

//===================================================================================

ObjectCreate("1"+sName,2, 0,Time[p],price_p1,Time[0],price_01) ;

ObjectCreate("0"+sName,2, 0,Time[p],price_p0,Time[0],price_00) ;

ObjectCreate("2"+sName,2, 0,Time[p],price_p2,Time[0],price_02) ;

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

ObjectSet("1"+sName,OBJPROP_COLOR,col) ;

ObjectSet("1"+sName,OBJPROP_STYLE,STYLE_SOLID) ;

ObjectSet("0"+sName,OBJPROP_COLOR,col) ;

ObjectSet("0"+sName,OBJPROP_STYLE,STYLE_DOT) ;

ObjectSet("2"+sName,OBJPROP_COLOR,col) ;

ObjectSet("2"+sName,OBJPROP_STYLE,STYLE_SOLID) ;

ObjectSet("0"+sName,OBJPROP_WIDTH,1) ; // contrôle la largeur de la ligne

ObjectSet("1"+sName,OBJPROP_WIDTH,2) ;

ObjectSet("2"+sName,OBJPROP_WIDTH,2) ;

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

ObjectSet("1"+sName,OBJPROP_TIME1,Time[p]) ;

ObjectSet("1"+sName,OBJPROP_PRICE1,price_p1) ;

ObjectSet("1"+sName,OBJPROP_TIME2,Time[0]) ;

ObjectSet("1"+sName,OBJPROP_PRICE2,price_01) ;

ObjectSet("0"+sName,OBJPROP_TIME1,Time[p]) ;

ObjectSet("0"+sName,OBJPROP_PRICE1,price_p0) ;

ObjectSet("0"+sName,OBJPROP_TIME2,Time[0]) ;

ObjectSet("0"+sName,OBJPROP_PRICE2,price_00) ;

ObjectSet("2"+sName,OBJPROP_TIME1,Time[p]) ;

ObjectSet("2"+sName,OBJPROP_PRICE1,price_p2) ;

ObjectSet("2"+sName,OBJPROP_TIME2,Time[0]) ;

ObjectSet("2"+sName,OBJPROP_PRICE2,price_02) ;

//==================================================================

f=1 ; p1=p ; p0=p ; p2=p ; fp=0 ;

//*************************************************************************************

return(0);}

//=====================================================================================

 
xerof123:
Merci omelette,

J'ai essayé tout ce que j'ai pu, cela fait maintenant 6 jours que j'y travaille sans relâche et il m'a battu...

S'il vous plaît, pouvez-vous regarder le code ici et me dire pourquoi j'obtiens le misérable "OrderModify error 1".

J'ai essayé de normaliser, j'ai essayé une logique différente, j'ai même essayé de lui offrir une bière.

J'apprécie vraiment votre aide. Merci

Relisez ce que j'ai écrit - vous appelez la fonction Modify() sans vérifier d'abord si le(s) prix doivent être modifiés...

 

omelette a très bien répondu à votre question. Je dois dire que ce type a la patience d'un saint, je le félicite.

Pour mieux illustrer son propos, que dire de ceci.

Ce que vous êtes en train de dire, c'est que si 2 > 1, alors modifiez (changez) X=2, mais le problème que vous rencontrez est que X est déjà égal à 2, donc demander de le modifier (changer) est incorrect car il est déjà égal à ce que vous essayez de modifier.

Vous devez simplement vérifier qu'il n'est pas égal à ce que vous essayez de modifier et n'essayer de le modifier que si ce n'est pas le cas.

Est-ce plus clair ?

Bonne chance

Lux

 

Première fois que j'utilise EA, j'ai besoin d'aide.

Cher codersguru,

J'ai copié le fichier .mql4 dans le dossier expert et j'ai activé l'Auto trading dans la section Option, mais lorsque je fais le back test il ne génère aucun trade. J'ai essayé quelques EAs gratuits sur le net, le problème s'est produit à chaque fois. Je peux voir que les données du back test ont été chargées dans le graphique, mais pas de transaction, donc dans le rapport tous les chiffres sont 0. Je dois avoir fait quelque chose de mal, j'espère que vous pouvez m'aider. Merci d'avance.

Merci d'avance,

jzhai1994

Raison: