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
Bonjour,
J'ai modifié l'indicateur standard stepMA 9 en celui-ci dans une fenêtre séparée comme histogramme mais je ne sais pas pourquoi les signaux d'achat ne sont pas synchronisés avec l'indicateur standard (les signaux de vente le sont). Avec le nouvel indicateur, ils se produisent une barre plus loin que l'indicateur original. Pourquoi ? J'ai modifié uniquement la partie du code qui détermine l'aspect graphique de l'indicateur.
stepma_9_histo_mtf.mq4
stepma_9.0.mq4
Bonjour,
J'ai modifié l'indicateur standard stepMA 9 en celui-ci dans une fenêtre séparée comme histogramme mais je ne sais pas pourquoi les signaux d'achat ne sont pas synchronisés avec l'indicateur standard (les signaux de vente le sont). Avec le nouvel indicateur, ils apparaissent une barre plus loin que l'indicateur original. Pourquoi ? J'ai modifié uniquement la partie du code qui détermine l'aspect graphique de l'indicateur.
stepma_9_histo_mtf.mq4
stepma_9.0.mq4
thefxpros
C'est le résultat de la façon dont les lignes sont dessinées.
Lorsque vous dessinez une ligne, vous devez commencer à dessiner la ligne 1 barre en arrière afin de la rendre visible (sinon ce serait un point et elle ne serait pas du tout visible sur le graphique). Essayez ces deux exemples et comparez-les maintenant
Bonjour,
J'ai cherché un EA qui ouvrirait une transaction de la même manière qu'un stop suiveur.
Disons que j'attends un retracement sur un instrument. Je voudrais ouvrir ma position aussi haut (ou bas) que possible sur le prix. Avec un EA comme celui-ci, je pourrais définir mes paramètres de transaction et cet EA continuerait à suivre le prix de la même manière qu'un trailing stop. Lorsqu'il y a un renversement, la transaction est frappée et ouverte.
Avez-vous déjà vu un tel EA ?
Merci
Bonjour à tous
J'ai essayé de faire le code, mais je ne peux pas ouvrir le commerce.
for (int iTS = 0; iTS < 2000; iTS++) {
int varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");
int varZonEnd = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "10:00");
int JamStart=TimeHour(varZonStart);
int JamEnd=TimeHour(varZonEnd);
if (JamStart>JamEnd) {
varCurrentTime = decDateTradeDay(varCurrentTime);
//if (TimeDayOfWeek(varCurTime) < 1) varCurTime = decDateTradeDay(varCurTime);
if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime);
}
varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");
int varShiftStart = iBarShift(NULL, 0, varZonStart - 60 * Period());
int varShiftEnd = iBarShift(NULL, 0, varZonEnd);
varHighest = High;
varLowest = Low;
varCurrentTime = decDateTradeDay(varCurrentTime); //set 1 hari kebelakang
if (TimeDayOfWeek(varCurrentTime) < 1) varCurrentTime = decDateTradeDay(varCurrentTime); //jika minggu mundur lagi
if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime); //jika sabtu mundur lagi
}
for (int iTSh = 0; iTSh < 2000; iTSh++) {
for (int iTSl = 0; iTSl < 2000; iTSl++) {
if(((varHighest-varLowest)/Pip)<=5) varHL=(varHighest+varLowest)/2;
}
}
double isg10a = iOpen(Symbol(),PERIOD_M15,1);
double isg10b = iClose(Symbol(),PERIOD_M15,1);
int static isg10c = -1;
for (iTS = 0; iTS < 2000; iTS++) {
if(isg10avarHL)isg10c =0;
if(isg10a>varHL&&isg10b<varHL)isg10c =1;
}
if (isg10c==0) To code Buy
else if (isg10c==1) To code Sel
else no trade
Jim Au lieu de réécrire le tout, j'ai ajouté une limite pour calculer les barres et ensuite toutes ces barres sont recalculées. Cela devrait résoudre le problème de rafraîchissement (il suffit de garder le BarsTocalculate à une valeur raisonnable - pas trop grande ni trop petite. J'ai utilisé 1000 comme valeur par défaut et ça semble aller comme ça). Essayez-le
Cher mladen,
Merci beaucoup pour votre effort et votre aide très rapide.
Je vais faire des essais.
Cordialement, de Munich
S'il vous plaît aidez-moi à mettre à jour cet indicateur de volume pour l'attacher sur mon mt4
Bonjour gourous, s'il vous plaît aidez-moi à réparer les erreurs dans cet indicateur de volume. Je viens de remarquer qu'il n'a pas pu être attaché à mon graphique mt4 récemment. J'ai fait tout ce qui était possible pour corriger les erreurs dans le fichier mais en vain. Je soupçonne que c'est à cause de l'énorme mise à jour de mt4. Tous les autres indicateurs de mon dossier mt4, tant les anciennes que les nouvelles versions, fonctionnent bien. Il fonctionnait il y a un an, la dernière fois que je l'ai utilisé. Je ne suis pas encore un programmeur.
Veuillez trouver le fichier joint
Bonjour MLaden et Mrtools,
J'espère que vous allez bien
J'ai besoin d'une confirmation de votre part concernant le RSX.
Je vois que vous utilisez une formule plus simple pour calculer le RSX :
__________________________
double Kg = (3.0)/(2.0+Longueur) ;
double Hg = 1.0-Kg ;
if (slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb) ;
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars) ;
for(i=limit, r=Bars-i-1 ; i>=0 ; i--, r++)
{
wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Price,i) ;
if (i==(Bars-1)) { for (int c=0 ; c<12 ; c++) wrkBuffer[r][c] = 0 ; continue ; }
//
//
//
//
//
double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;
double moa = MathAbs(mom) ;
for (int k=0 ; k<3 ; k++)
{
int kk = k*2 ;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] ;
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1] ; mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] ;
wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6] ;
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7] ; moa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7] ;
}
if (moa != 0)
rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00),0.00) ;
sinon rsx = 50 ;
____________________________________
Juste pour être sûr de bien comprendre comment le RSX est calculé avec cette formule
Tout d'abord avec la ligne
mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;
en fait wrkBuffer[r][12] est la moyenne mobile simple du prix, notez la prise comme avec un RSI habituel ?
N'est-ce pas ? Mais je ne comprends pas quelle est la période de cette SMA (Probablement pas la longueur) ?
Et après, si j'ai bien compris avec les lignes :
for (int k=0 ; k<3 ; k++)
{
int kk = k*2 ;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] ;
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1] ;
mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] ;
En fait il calcule 3 fois le mom (l'un après l'autre), avec le premier mom ci-dessus (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;)
C'est bien ça ?
Et après cela, c'est "classique" avec RSX=((mom/moa)+1)*50
Merci pour votre prochaine réponse, en tant que codeur (sur une autre plateforme), vous savez que j'aime comprendre le fonctionnement des codes.
Passez une belle journée
Zilliq
Bonjour MLaden et Mrtools,
J'espère que tu vas bien
J'ai besoin d'une confirmation de votre part concernant le RSX.
Je vois que vous utilisez une formule plus simple pour calculer le RSX :
__________________________
double Kg = (3.0)/(2.0+Longueur) ;
double Hg = 1.0-Kg ;
if (slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb) ;
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars) ;
for(i=limit, r=Bars-i-1 ; i>=0 ; i--, r++)
{
wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Price,i) ;
if (i==(Bars-1)) { for (int c=0 ; c<12 ; c++) wrkBuffer[r][c] = 0 ; continue ; }
//
//
//
//
//
double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;
double moa = MathAbs(mom) ;
for (int k=0 ; k<3 ; k++)
{
int kk = k*2 ;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] ;
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1] ; mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] ;
wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6] ;
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7] ; moa = 1.5*wrkBuffer[r][kk+6] - 0.5 * wrkBuffer[r][kk+7] ;
}
if (moa != 0)
rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00),0.00) ;
sinon rsx = 50 ;
____________________________________
Juste pour être sûr de bien comprendre comment le RSX est calculé avec cette formule
D'abord avec la ligne
mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;
en fait wrkBuffer[r][12] est la moyenne mobile simple du prix, notez la prise comme avec un RSI habituel ?
N'est-ce pas ? Mais je ne comprends pas quelle est la période de cette SMA (Probablement pas la longueur) ?
Et après, si j'ai bien compris avec les lignes :
for (int k=0 ; k<3 ; k++)
{
int kk = k*2 ;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0] ;
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1] ;
mom = 1.5*wrkBuffer[r][kk+0] - 0.5 * wrkBuffer[r][kk+1] ;
En fait il calcule 3 fois le mom (l'un après l'autre), avec le premier mom ci-dessus (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12] ;)
C'est bien ça ?
Et après cela, c'est "classique" avec RSX=((mom/moa)+1)*50
Merci pour votre prochaine réponse, en tant que codeur (sur une autre plateforme), vous savez que j'aime comprendre le fonctionnement des codes.
Passez une belle journée
Zilliq"En fait wrkBuffer[r][12] est la moyenne mobile simple du prix, notez la prise comme avec un RSI habituel ?"
Non. La période de calcul de cette moyenne est de 1, ce qui signifie qu'elle est égale au prix de la "moyenne" utilisée. Dans metatader c'est la manière la plus rapide d'obtenir le prix désiré (si vous essayez d'écrire la structure "case" faisant la même chose vous verrez que c'est beaucoup plus lent que la manière utilisée dans le code rsx).
"En fait il calcule 3 fois le mom (l'un après l'autre), avec le premier mom au-dessus"
Non. Regardez quelles valeurs il utilise à chaque nouvelle itération. mom et moa sont constamment modifiés et réutilisés (sous cette forme modifiée) pendant le processus de bouclage.
Merci beaucoup Mladen,
C'est très étrange, si j'ai bien compris wrkBuffer[r][12] est égal au prix, mais vous utilisez une moyenne mobile avec une période de 1 pour accélérer le calcul. C'est très curieux...
Pour la deuxième chose, je pense/suppose que c'est ce que j'essaie de dire
il calcule le mom comme un momentum du prix
Et il calcule une autre maman avec Kg et Hg. Il donne une nouvelle maman, qui est habituée à créer une nouvelle maman, et ainsi de suite, 3 fois
Quelque chose de plus "facile" (pour faciliter la compréhension) comme ça
maman
maman1=kg*maman
mom2=kg*mom1
mom3=kg*mom2
Et à la fin il utilise mom3, et moa3
J'ai raison ?
Merci beaucoup Mladen,
C'est très étrange, si j'ai bien compris wrkBuffer[r][12] est égal au prix, mais vous utilisez une moyenne mobile avec une période de 1 pour accélérer le calcul. C'est très curieux...
Pour la deuxième chose, je pense/suppose que c'est ce que j'essaie de dire
il calcule le mom comme un momentum du prix
Et il calcule une autre maman avec Kg et Hg. Il donne une nouvelle maman, qui est habituée à créer une nouvelle maman, et ainsi de suite, 3 fois
Quelque chose de plus "facile" (pour faciliter la compréhension) comme ça
maman
maman1=kg*maman
mom2=kg*mom1
mom3=kg*mom2
Et à la fin, il utilise mom3, et moa3.
J'ai raison ?Zilliq,
oui, c'est comme ça que ça se passe