Comment coder ? - page 39

 

mish

J'ai eu un moment de libre, et j'ai essayé de saisir votre intention telle que je l'ai comprise.

Dossiers :
advicerr.txt  2 kb
 

Merci

Merci ralph.ronnquist

ces fonctions sont exactement ce dont j'ai besoin et seraient utiles à d'autres personnes à la recherche d'une même fonction

J'ai été pris par le temps, sinon je vous aurais remercié plus tôt, surtout parce que cela m'a demandé un effort.

Il y a t-il un moyen simple de changer la fonction pour qu'elle fonctionne dans le testeur de stratégie? Je sais que les résultats de travailler avec une seule devise dans le testeur est presque inutile, mais il imite très grossièrement ce dont j'ai besoin afin d'obtenir le bon calcul, toute aide est appréciée et je n'aurais jamais travaillé le code en peu de temps, donc encore une fois merci !

 

EA basé sur DT_ZZ.mq4

J'ai un peu de mal avec celui-ci.

J'ai l'indicateur DT_ZZ.mq4 et d'après ce que je vois, il est très prometteur. Je sais que cet indicateur redessine et voici comment je le vois fonctionner.

Si une flèche et une section sont égales, alors attendez la fermeture de la barre, puis achetez/vendez en conséquence.

Quelqu'un pense pouvoir m'aider ? (Le code est affiché ci-dessous)

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

//| DT_ZZ.mq4 |

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

// Optimisé par Rosh

#property indicator_chart_window

#property indicator_buffers 3

#property indicator_color1 Green

#property indicator_color2 Blue

#property indicator_color3 Red

//---- paramètres de l'indicateur

extern int ExtDepth=12 ;

extern int calculateLevel=2 ;

//---- tampons de l'indicateur

double zzL[] ;

double zzH[] ;

double zz[] ;

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

//| Fonction d'initialisation de l'indicateur personnalisée |

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

int init()

{

// IndicatorBuffers(3) ;

//---- paramètres de dessin

SetIndexStyle(0,DRAW_SECTION) ;

SetIndexStyle(1,DRAW_ARROW) ;

SetIndexStyle(2,DRAW_ARROW) ;

SetIndexArrow(1,159) ;

SetIndexArrow(2,159) ;

//---- mappage des tampons d'indicateurs

SetIndexBuffer(0,zz) ;

SetIndexBuffer(1,zzH) ;

SetIndexBuffer(2,zzL) ;

SetIndexEmptyValue(0,0.0) ;

SetIndexEmptyValue(1,0.0) ;

SetIndexEmptyValue(2,0.0) ;

//---- nom court de l'indicateur

IndicatorShortName("DT_ZZ("+ExtDepth+")") ;

//---- initialisation effectuée

retour(0) ;

}

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

//| |

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

int start()

{

int i,shift,pos,lasthighpos,lastlowpos,curhighpos,curlowpos ;

double curlow,curhigh,lasthigh,lastlow ;

double min, max ;

int counted_bars=IndicatorCounted() ;

si (counted_bars==0)

{

ArrayInitialize(zz,0.0) ;

Tableau d'initialisation (zzL,0.0) ;

ArrayInitialize(zzH,0.0) ;

lasthighpos=Bars ; lastlowpos=Bars ;

lastlow=Low;lasthigh=High ;

Print("limite=",Bars-ExtDepth) ;

for(shift=Bars-ExtDepth ; shift>=0 ; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift) ;

curlow=Low[curlowpos] ;

curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift) ;

curhigh=High[curhighpos] ;

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

if( curlow>=lastlow ) { lastlow=curlow ; }

else

{

// ???? ? ???

si( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow ;

///*

min=100000 ; pos=lasthighpos ;

for(i=lasthighpos ; i>=curlowpos ; i--)

{

si (zzL==0.0) continuer ;

si (zzL<min) { min=zzL ; pos=i ; }

zz=0.0 ;

}

zz[pos]=min ;

//*/

}

lastlowpos=curlowpos ;

lastlow=curlow ;

}

//--- haut

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

sinon

{

// ? ??? ? ????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh ;

///*

max=-100000 ; pos=lastlowpos ;

for(i=lastlowpos ; i>=curhighpos ; i--)

{

si (zzH==0.0) continuer ;

si (zzH>max) { max=zzH ; pos=i ; }

zz=0.0 ;

}

zz[pos]=max ;

//*/

}

lasthighpos=curhighpos ;

lasthigh=curhigh ;

}

zz[0]=Close[0] ;

}

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

}

else

{

int pos2 ;

i=0 ;

while (pos2<calculateLevel && i<Bars-1)

{

si (zz!=0 && (zzH!=0||zzL!=0)) pos2++ ;

i++ ;

}

pos2=i-1 ;

for (i=pos2-1;i>=0;i--)

{

zzH=0 ;

zzL=0 ;

zz=0 ;

}

if (zzH[pos2]!=0)

{

lasthighpos=pos2 ;

lasthigh=High[pos2] ;

lastlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,pos2) ;

lastlow=Low[lastlowpos] ;

}

else

{

lastlowpos=pos2 ;

lastlow=Low[pos2] ;

lasthighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,pos2) ;

lasthigh=High[lasthighpos] ;

}

//------------------------- ? ???????? ? ?????

Print("limite=",pos2-1) ;

for(shift=pos2-1 ; shift>=0 ; shift--)

{

curlowpos=Lowest(NULL,0,MODE_LOW,ExtDepth,shift) ;

curlow=Low[curlowpos] ;

curhighpos=Highest(NULL,0,MODE_HIGH,ExtDepth,shift) ;

curhigh=High[curhighpos] ;

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

if( curlow>=lastlow ) { lastlow=curlow ; }

else

{

// ???? ? ???

si( lasthighpos>curlowpos )

{

zzL[curlowpos]=curlow ;

///*

min=100000 ; pos=lasthighpos ;

for(i=lasthighpos ; i>=curlowpos ; i--)

{

si (zzL==0.0) continuer ;

si (zzL<min) { min=zzL ; pos=i ; }

zz=0.0 ;

}

zz[pos]=min ;

//*/

}

lastlowpos=curlowpos ;

lastlow=curlow ;

}

//--- haut

if( curhigh<=lasthigh ) { lasthigh=curhigh;}

sinon

{

// ? ??? ? ????

if( lastlowpos>curhighpos )

{

zzH[curhighpos]=curhigh ;

///*

max=-100000 ; pos=lastlowpos ;

for(i=lastlowpos ; i>=curhighpos ; i--)

{

si (zzH==0.0) continuer ;

si (zzH>max) { max=zzH ; pos=i ; }

zz=0.0 ;

}

zz[pos]=max ;

//*/

}

lasthighpos=curhighpos ;

lasthigh=curhigh ;

}

}

//------------------------- ? ???????? ? ?????

zz[0]=Close[0] ;

}

return(0) ;

}

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

est-ce que cela peut être modifié 4 strategy tester?

ralph.ronnquist

m'a généreusement fourni une grande fonction dont beaucoup peuvent bénéficier et qui nécessite son utilisation.

Mon problème est que je suis tellement mauvais en programmation que je n'arrive pas à la modifier suffisamment.

Pour des raisons de test, une seule devise est satisfaisante, juste pour travailler sur les mathématiques des transactions dans différentes circonstances avec différentes devises.

Il est possible de modifier le travail de Ralph pour répondre à ce besoin.

Merci

Dossiers :
ralph.txt  2 kb
 

En principe, il suffirait de remplacer la chaîne "EURCHF" par "EURUSD". C'est-à-dire, pour travailler avec "EURUSD" long contre "EURUSD" court.

 

J'ai essayé

Merci pour votre réponse, mais j'ai essayé en vain. Le code que vous avez fourni nous a beaucoup appris, à moi et à ma copine, sur le peu que nous savons de la programmation !

Merci beaucoup !

 

Hmm. Le seul "inconvénient" que je vois d'emblée est le test "v == cut", qui compare l'égalité de deux nombres doubles. Peut-être est-il préférable de ne regarder que les montants complets en $, et donc de changer "euprofit", "ecprofit", "cut" et "v" pour qu'ils soient de type "int" ?

 
NTrader:
Question triviale : J'écris un nouvel Indicateur personnel pour la première fois. Je ne peux pas voir mes logs que je fais avec la commande Print ("...") dans la méthode start{}. Où puis-je les visualiser sur MetaTrader 4 ?

Ok, j'utilise la commande Comment()..

 

Dumbo ici

Bonjour à tous

C'est un excellent fil de discussion pour quelqu'un comme moi qui ne connaît rien à la programmation. Il contient beaucoup d'informations utiles et de nombreux petits morceaux de code que je pourrais copier et jouer avec.

J'espère que quelqu'un pourra m'aider sur ce point : je veux créer un EA basé sur le prix. Que dois-je entrer dans le code pour dire ce qui suit :

1) Je veux que l'EA regarde le prix à 20:00 sur le graphique horaire et voit quelle est sa relation avec le 100sma.

2) Si le prix est supérieur au 100sma, je veux qu'il ouvre 2 ordres d'achat à un certain niveau.

3) Ces niveaux sont basés sur le prix de clôture de la bougie de 16:00, donc si la bougie de 16:00 est à 1.2000, je veux qu'il ouvre un ordre d'achat à 1.1120 et 1.2080.

J'ai les stops, les stops suiveurs et les niveaux de profit, tous les codes proviennent de ce site. Je remercie donc ceux qui les ont postés. I

Je serai à jamais redevable si quelqu'un pouvait m'aider ici.

Cordialement

Susan

 

Aide

Bonjour à tous

J'ai essayé de créer un EA, et j'ai obtenu le message d'erreur suivant :

'\end_of_program' - parenthèse finale '}' attendu C:\...\My_First_EA.mq4(96,1)

J'ai double-cliqué dessus, je suis arrivé à la ligne, puis je l'ai vérifiée avec les crochets d'ouverture-fermeture qui la précèdent, et je ne sais toujours pas où j'ai fait l'erreur.

C'est le deuxième EA que j'ai essayé, avec le même message d'erreur, basé sur le même indicateur.

Merci.

Raison: