Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
mish
J'ai eu un moment de libre, et j'ai essayé de saisir votre intention telle que je l'ai comprise.
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
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" ?
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.