![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Besoin d'aide
................
Bonjour,
Pouvez-vous s'il vous plaît donner le code pour la barre précédente.
Cela peut être utilisé dans l'EA pour limiter le placement des ordres lorsque la barre précédente est supérieure à une certaine hauteur.
Merci,
SIDDESHSiddesh et tous ceux qui peuvent vous aider :
Le code pour la barre précédente est ci-dessous :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]indicateurnow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL() ;
mais avec ce satatement, l'expert ouvre des positions non seulement quand le prix traverse l'indicateur, il ouvre des positions au dessus de l'indicateur aussi. Je veux que l'expert ouvre une position UNIQUEMENT quand le prix traverse l'indicateur, donc j'ai essayé cela :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL() ;
Mais cette instruction ne fonctionne pas.
Savez-vous ce qui se passe ? Parce que je pense qu'il n'y a pas d'erreurs dans l'instruction.
La question est de savoir pourquoi l'ouverture ne se fait pas au point exact du croisement lorsque close[0]==Indicatornow? Si la fonction était avec ==, nous empêcherions l'ouverture des ordres au-dessus du point de croisement entre l'indicateur et la clôture de la barre actuelle, mais elle ne fonctionne pas avec ce type de relation entre les variables.
Les personnes qui peuvent aider :
Le code pour la barre précédente est ci-dessous :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]indicateurnow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL() ;
mais avec ce satatement, l'expert ouvre des positions non seulement quand le prix traverse l'indicateur, il ouvre des positions au dessus de l'indicateur aussi. Je veux que l'expert ouvre une position UNIQUEMENT quand le prix traverse l'indicateur, donc j'ai essayé cela :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL() ;
Mais cette instruction ne fonctionne pas.
Savez-vous ce qui se passe ? Parce que je pense qu'il n'y a pas d'erreurs dans l'instruction.
La question est de savoir pourquoi l'ouverture ne se fait pas au point exact de la croix lorsque close[0]==Indicatornow? Si la fonction était avec ==, nous empêcherions l'ouverture d'ordres au-dessus du point de croisement entre l'indicateur et la clôture de la barre actuelle, mais cela ne fonctionne pas avec ce type de relation entre les variables.
Avez-vous expérimenté le même problème ? Quelqu'un sait-il comment le résoudre ?
Merci encore.
Les personnes qui peuvent vous aider :
Le code de la barre précédente est le suivant :
//à l'achat
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]indicateurnow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL() ;
mais avec ce satatement, l'expert ouvre des positions non seulement quand le prix traverse l'indicateur, il ouvre des positions au dessus de l'indicateur aussi. Je veux que l'expert ouvre une position UNIQUEMENT quand le prix traverse l'indicateur, donc j'ai essayé cela :
//pour acheter
double indicatorpast = icustom(....................,1) ;
double indicatornow = icustom(....................,0) ;
si (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY() ;
si (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL() ;
Mais cette instruction ne fonctionne pas.
Savez-vous ce qui se passe ? Parce que je pense qu'il n'y a pas d'erreurs dans l'instruction.
La question est de savoir pourquoi l'ouverture ne se fait pas au point exact du croisement lorsque close[0]==Indicatornow? Si la fonction était avec ==, nous empêcherions l'ouverture d'ordres au-dessus du point de croisement entre l'indicateur et la clôture de la barre actuelle, mais cela ne fonctionne pas avec ce type de relation entre les variables.
Avez-vous expérimenté le même problème ? Quelqu'un sait-il comment le résoudre ?
Merci, encore une fois.Parce que vous recherchez une correspondance exacte entre une valeur à virgule flottante à 8 chiffres et le prix - ils ne seront presque jamais égaux avec des résolutions comme celle-ci. Il suffit de vérifier si la valeur est supérieure ou inférieure à la condition.
logiciel de swicthing
Bonjour les gars, j'aurais besoin de transformer cet indicateur ou le système de trading relatif en langage mql car cela fonctionne sur metatrader 4. Est-ce que je change de courtier et de logiciel, est-ce que quelqu'un peut' m'aider ?
{Calcul de la moyenne mobile à régression élargie}
{DÉBUT}
{"-HShift" - BARRES EN AVANT}
DataBars:= Ref(Price,- HShift) ;
e1:= Mov(DataBars,PeriodMA,TypeMA) ;
e2:= Mov(e1,PeriodMA,TypeMA) ;
e3:= Mov(e2,PeriodMA,TypeMA) ;
e4:= Mov(e3,PeriodMA,TypeMA) ;
e5:= Mov(e4,PériodeMA,TypeMA) ;
e6:= Mov(e5,PériodeMA,TypeMA) ;
c1:= -b*b*b ;
c2:= 3*b*b+3*b*b*b ;
c3:= -6*b*b-3*b-3*b*b*b ;
c4:= 1+3*b+b*b*b+3*b*b ;
MV:= c1*e6+c2*e5+c3*e4+c4*e3 ;
{Calcul de la durée de vie de MV
pour éliminer la distorsion des valeurs initiales}
{Moyenne mobile T3}
e1:= Mov(Pr,PeriodMA1,TypeMA1) ;
e2:= Mov(e1,PeriodMA1,TypeMA1) ;
e3:= Mov(e2,PeriodMA1,TypeMA1) ;
e4:= Mov(e3,PériodeMA1,TypeMA1) ;
e5:= Mov(e4,PériodeMA1,TypeMA1) ;
e6:= Mov(e5,PériodeMA1,TypeMA1) ;
c1:= -b1*b1*b1 ;
c2:= 3*b1*b1+3*b1*b1*b1 ;
c3:= -6*b1*b1-3*b1-3*b1*b1*b1 ;
c4:= 1+3*b1+b1*b1*b1*b1+3*b1*b1 ;
MA1:= c1*e6+c2*e5+c3*e4+c4*e3 ;
{Tendance à la hausse et à la baisse}
Tendance à la hausse:=Mv>=MA1 ;
Tendance à la baisse:=MA1>=Mv ;
{Signal Long et Short}
Long:= cross(Mv,MA1) et Mv>=MA1 ;
Short:= cross(MA1,Mv) et MA1>=Mv ;
{OpenBuy et CloseBuy}
OpenBuy:= cross(Mv,MA1) et Mv>=MA1 ;
CloseBuy:= cross(MA1,Mv) et MA1>=Mv ;
{OpenSell et CloseSell}
OpenSell:= croisement(MA1,Mv) et MA1>=Mv ;
CloseSell:= cross(Mv,MA1) et Mv>=MA1 ;
Bonjour les gars, j'aurais besoin de transformer cet indicateur ou le système de trading relatif en langage mql car il fonctionne sur metatrader 4. Est-ce que je change de courtier et de logiciel, est-ce que quelqu'un peut m'aider ?
{Moyenne mobile T3}
e1:= Mov(Pr,PeriodMA1,TypeMA1) ;
e2:= Mov(e1,PeriodMA1,TypeMA1) ;
e3:= Mov(e2,PeriodMA1,TypeMA1) ;
e4:= Mov(e3,PériodeMA1,TypeMA1) ;
e5:= Mov(e4,PériodeMA1,TypeMA1) ;
e6:= Mov(e5,PériodeMA1,TypeMA1) ;
c1:= -b1*b1*b1 ;
c2:= 3*b1*b1+3*b1*b1*b1 ;
c3:= -6*b1*b1-3*b1-3*b1*b1*b1 ;
c4:= 1+3*b1+b1*b1*b1*b1+3*b1*b1 ;
MA1:= c1*e6+c2*e5+c3*e4+c4*e3 ;
Tous ces codes sont similaires, vous pourriez commencer par regarder le code T3
Global, mettez ceci avant init()
In the order placement and/or order close stuff, wrap it in this:
{
if blah blah blah, gimme pips // not actual functions but you get the idea
if blah blah blah, close orders // um
}Common function outside main loop:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}Merci nitty1 pour l'aide. Je vais l'essayer.
Merci également à waltini et devil2000. Je devrais être capable de le comprendre maintenant.![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
Code de compte pour fonctionner sur Demo librement
Bonjour :
Quelqu'un peut-il me dire quel code pourrait être inséré pour permettre à un EA qui contient un code de sécurité de compte de fonctionner librement sur un compte de démonstration afin que les utilisateurs puissent le tester avant de le mettre en ligne ?
Est-ce même possible ?
Merci
Bonjour :
Quelqu'un peut-il me dire quel code pourrait être inséré pour permettre à un EA qui contient un code de sécurité de compte de fonctionner librement sur un compte de démonstration afin que les utilisateurs puissent le tester avant de le mettre en ligne ?
Est-ce même possible ?
MerciDepuis le métaéditeur :
Renvoie VRAI si l'expert fonctionne sur un compte de démonstration, sinon renvoie FAUX.
Codage de la "condition de tendance" avec StepMA
Condition d'achat :
StepMA (avec Mode Couleur : 2) est "long".
Lestochastique traverse 20 de bas en haut
Condition de vente :
StepMA (avec Mode Couleur : 2) est "court".
Le stochastique traverse 80 de haut en bas
double StochCurrent = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 0) ;
double StochPrevious = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 1) ;
double TrendLong = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0.0, false, 2, 0, 1, Bar + 0) ;
double TrendShort = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0, 0.0, false, 2, 0, 2, Bar + 0) ;
Acheter si :
TrendLong && StochCurrent > 20 && StochPrevious < 20
Vendez si :
TrendShort && StochCurrent 80
Quelqu'un peut-il m'aider avec le code de la "Trend Condition" dans l'exemple ci-dessus, cela ne fonctionne pas. J'ai essayé d'appeler le tampon 1 et le tampon 2 pour le mode long et court mais je ne comprends pas le code de cet indicateur. Merci d'avance !