[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 141
![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
C'est ça, ça a marché. Il semble que ce soit parce que j'ai mis un tampon.
#property indicator_buffers 1
Vous avez tout fait correctement. Je l'ai vérifié - il sort comme il le devrait (je peux vous donner une capture d'écran).
J'ai juste ajouté par-dessus
Помогите, плиз!!!
Messieurs, lorsque le journal du testeur indique "Fonction non autorisée en mode test", comment puis-je savoir quelle fonction n'est pas autorisée ?
Caractéristiques et limites des tests de stratégies de trading dans MetaTrader 4'.
Caractéristiques et limites des tests de stratégies de trading dans MetaTrader 4'.
Merci.
Bonjour, j'ai vraiment besoin d'aide ! Je veux faire un EA basé sur un indicateur. Au début, comme dans tout indicateur, il y a ces lignes :
SetIndexBuffer(0,ExtBullBuffer) ;
SetIndexBuffer(1,ExtBull1Buffer) ;
SetIndexBuffer(2,ExtBull2Buffer) ;
SetIndexBuffer(3,ExtBull3Buffer) ;
SetIndexBuffer(4,ExtBull4Buffer) ;
SetIndexBuffer(5,ExtBull5Buffer) ;
SetIndexBuffer(6,ExtBull6Buffer) ;
SetIndexBuffer(7,ExtBull7Buffer) ;
Puis vient le corps du programme (int start()...) où les variables ExtBullBuffer sont calculées... Je veux faire un EA, donc je n'ai pas besoin de SetIndexBuffer, mais si je le supprime, pendant le test les variables ExtBullBuffer ne sont pas calculées (pour toutes les périodes de test, pour toutes les périodes il génère 0, bien que ce ne soit pas vrai)... Pouvez-vous me conseiller sur ce qu'il faut faire ? Merci.
Bonjour, j'ai vraiment besoin d'aide ! Je veux faire un EA basé sur un indicateur. Au début, comme dans tout indicateur, il y a ces lignes :
SetIndexBuffer(0,ExtBullBuffer) ;
Puis vient le corps du programme (int start()...), qui calcule les variables ExtBullBuffer... Je veux faire un EA, donc je n'ai pas besoin de SetIndexBuffer, mais si je le supprime, pendant le test les variables ExtBullBuffer ne sont pas calculées (pour toutes les périodes de test, pour toutes les périodes il génère 0, bien que ce ne soit pas vrai)... Pouvez-vous me conseiller sur ce qu'il faut faire ? >> Merci.
Dans les tampons indicateurs, le tampon est initialisé automatiquement dès que vous déclarez le tampon comme indicateur (et non auxiliaire),
dans d'autres programmes (pas les indicateurs), les tampons doivent être initialisés avec la fonction ArrayResize(ExtBullBuffer,Bars) ;
(si le tampon n'est pas explicitement nommé double ExtBullBuffer[1000] ; )
Et l'initialisation doit être faite dans la fonction où elle est censée affecter des valeurs au tampon. Dans votre cas, dans int start().
Bonjour à tous. Pouvez-vous me dire comment corriger le code de l'indicateur, pour que le bip ne soit pas émis une fois, mais 10 fois, ou comme il y a des inductions où le signal est jusqu'à l'apparition du prochain chandelier. C'est-à-dire que le signal va tout le temps la bougie dans laquelle il s'est produit. J'ai un bon signal, mais seulement une fois... Malheureusement, je ne peux pas l'entendre la nuit(((( Je vous remercie d'avance pour vos commentaires.
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Yellow
#propriété indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomate
#propriété indicator_width3 2
#property indicator_color4 Blue
#property indicator_color5 Red
#propriété indicator_width4 1
#propriété indicator_width5 1
//---- paramètres d'entrée
extern int Price = 0 ; //Application au prix(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close)
extern int Length = 15 ; //Période de NonLagMA
extern inttern Displace = 0 ; //DispLace ou Shift
extern double PctFilter = 0 ; //Filtre dynamique en décimal
extern string note1 = "turn on Color : ln=1 ln&dot=2 ; off=0" ;
extern int Color = 2 ; //Changement du mode de couleur (1-couleur)
extern int ColorBarBack = 0 ; //Barre de retour pour le mode couleur
extern double Deviation = 0 ; //Déviation vers le haut/bas
extern string note2 = "turn on = 1 ; turn off = 0" ;
extern int AlertMode = 0 ; //interrupteur d'alerte de la boîte (0-off,1-on)
extern int WarningMode = 0 ; //Alerte sonore switch(0-off,1-on)
extern int SendEmail = 0 ;
chaîne externe soundfile = "news.wav" ;
//---- tampons indicateurs
double MABuffer[] ;
double UpBuffer[] ;
double DnBuffer[] ;
double tendance[] ;
double Del[] ;
double AvgDel[] ;
double updbuffer[] ;
double dndbuffer[] ;
double alfa[] ;
int i, Phase, Len, Cycle=4 ;
double Coeff, beta, t, Sum, Weight, g ;
double pi = 3,1415926535 ;
bool UpTrendAlert=false, DownTrendAlert=false ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(8) ;
SetIndexStyle(0,DRAW_LINE) ;
SetIndexBuffer(0,MABuffer) ;
SetIndexStyle(1,DRAW_LINE) ;
SetIndexBuffer(1,UpBuffer) ;
SetIndexStyle(2,DRAW_LINE) ;
SetIndexBuffer(2,DnBuffer) ;
SetIndexBuffer(5,trend) ;
SetIndexBuffer(6,Del) ;
SetIndexBuffer(7,AvgDel) ;
SetIndexStyle(3,DRAW_ARROW) ; SetIndexArrow(3,159) ; SetIndexBuffer(3,updbuffer) ; SetIndexEmptyValue(3,EMPTY_VALUE) ;
SetIndexStyle(4,DRAW_ARROW) ; SetIndexArrow(4,159) ; SetIndexBuffer(4,dndbuffer) ; SetIndexEmptyValue(4,EMPTY_VALUE) ;
string short_name ;
//---- ligne d'indicateurs
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)) ;
//---- nom pour le DataWindow et l'étiquette de la sous-fenêtre de l'indicateur
short_name="NonLagMA("+Length+")" ;
IndicatorShortName(nom_court) ;
SetIndexLabel(0, "NonLagMA") ;
SetIndexLabel(1, "Up") ;
SetIndexLabel(2, "Dn") ;
//----
SetIndexShift(0,Displace) ;
SetIndexShift(1,Displace) ;
SetIndexShift(2,Displace) ;
SetIndexShift(3,Displace) ;
SetIndexShift(4,Displace) ;
SetIndexEmptyValue(0,EMPTY_VALUE) ;
SetIndexEmptyValue(1,EMPTY_VALUE) ;
SetIndexEmptyValue(2,EMPTY_VALUE) ;
SetIndexDrawBegin(0,Length*Cycle+Length+1) ;
SetIndexDrawBegin(1,Length*Cycle+Length+1) ;
SetIndexDrawBegin(2,Length*Cycle+Length+1) ;
//----
Coeff = 3*pi ;
Phase = Longueur-1 ;
Len = Longueur*4 + Phase ;
ArrayResize(alfa,Len) ;
Poids=0 ;
pour (i=0;i<Len-1;i++)
{
si (i<=Phase-1) t = 1.0*i/(Phase-1) ;
sinon t = 1,0 + (i-Phase+1)*(2,0*Cycle-1,0)/(Cycle*Longueur-1,0) ;
bêta = MathCos(pi*t) ;
g = 1,0/(Coeff*t+1) ;
si (t <= 0.5 ) g = 1 ;
alfa[i] = g * beta ;
Poids += alfa[i] ;
}
retour(0) ;
}
//+------------------------------------------------------------------+
//| NonLagMA_v7.1 | |
//+------------------------------------------------------------------+
int start()
{
int i,shift, counted_bars=IndicatorCounted(),limit ;
double prix ;
si ( counted_bars > 0 ) limit=Bars-counted_bars ;
si ( counted_bars < 0 ) return(0) ;
si ( counted_bars ==0 ) limit=Bars-Len-1 ;
si ( counted_bars < 1 )
for(i=1;i<Longueur*Cycle+Longueur;i++)
{
MABuffer[Bars-i]=0 ;
UpBuffer[Bars-i]=0 ;
DnBuffer[Bars-i]=0 ;
}
for(shift=limite;shift>=0;shift--)
{
Somme = 0 ;
pour (i=0;i<=Len-1;i++)
{
prix = iMA(NULL,0,1,0,3,Prix,i+shift) ;
Somme += alfa[i]*prix ;
}
if (Weight > 0) MABuffer[shift] = (1.0+Deviation/100)*Sum/Weight ;
si (PctFilter>0)
{
Del[shift] = MathAbs(MABuffer[shift] - MABuffer[shift+1]) ;
double sumdel=0 ;
for (i=0;i<=Length-1;i++) sumdel = sumdel+Del[shift+i] ;
AvgDel[shift] = sumdel/Length ;
double sumpow = 0 ;
for (i=0;i<=Length-1;i++) sumpow+=MathPow(Del[shift+i]-AvgDel[shift+i],2) ;
double StdDev = MathSqrt(sumpow/Length) ;
double Filter = PctFilter * StdDev ;
if( MathAbs(MABuffer[shift]-MABuffer[shift+1]) < Filter ) MABuffer[shift]=MABuffer[shift+1] ;
}
sinon
Filtre=0 ;
si (Couleur>0)
{
trend[shift]=trend[shift+1] ;
si (MABuffer[shift]-MABuffer[shift+1] > Filtre) trend[shift]= 1 ;
si (MABuffer[shift+1]-MABuffer[shift] > Filter) trend[shift]=-1 ;
updbuffer[shift] = EMPTY_VALUE ; dndbuffer[shift] = EMPTY_VALUE ;
si (trend[shift]>0)
{
UpBuffer[shift] = MABuffer[shift] ;
si (trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack] ;
DnBuffer[shift] = EMPTY_VALUE ;
si (trend[shift+1]<0&Color>1) updbuffer[shift]= MABuffer[shift] ;
}
si (trend[shift]<0)
{
DnBuffer[shift] = MABuffer[shift] ;
si (trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack] ;
UpBuffer[shift] = EMPTY_VALUE ;
si (trend[shift+1]>0&Color>1) dndbuffer[shift]= MABuffer[shift] ;
}
}
}
//----------
Message de chaîne ;
if ( trend[2]<0 && trend[1]>0 && Volume[0]>1 && !UpTrendAlert)
{
Message = ""+Symbol()+" M "+Period()+" Signal de non-lagMa pour BUY" ;
si ( AlertMode>0 ) Alert (Message) ;
si ( WarningMode>0 ) PlaySound(soundfile) ;
if ( SendEmail>0 ) SendMail("NonLagMa", "UpTrendAlert") ;
UpTrendAlert=true ; DownTrendAlert=false ;
}
if ( trend[2]>0 && trend[1]<0 && Volume[0]>1 && !DownTrendAlert)
{
Message = ""+Symbol()+" M "+Period()+" Signal de non-lagMa pour SELL" ;
si ( AlertMode>0 ) Alert (Message) ;
si ( WarningMode>0 ) PlaySound(soundfile) ;
if ( SendEmail>0 ) SendMail("NonLagMa", "DownTrendAlert") ;
DownTrendAlert=true ; UpTrendAlert=false ;
}
//----
retour(0) ;
}
Bonjour à tous. S'il vous plaît conseiller comment fixer le code indyuka que le bip n'est pas affiché une fois, puis 10 fois, ou comme il ya indyuki où le signal jusqu'à la prochaine bougie. C'est-à-dire que le signal va tout le temps la bougie dans laquelle il s'est produit. J'ai un bon signal, mais seulement une fois... Malheureusement, parfois je ne l'entends pas la nuit(((( Je vous remercie d'avance qui m'aidera.
Pourquoi en avez-vous besoin ? Dites-m'en plus, il y a peut-être une solution et vous ne savez pas comment poser les bonnes questions pour que les gens comprennent.
Sur ce que vous avez écrit, j'ai deux solutions, vous quoi, deux à la fois trop long à écrire :)
..
À propos, il est préférable de joindre ces longs codes sous forme de fichier.
Et pour le code, il y a un bouton spécial SRC.