[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 104
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
Chers programmateurs !
Aidez-nous, s'il vous plaît. L'indicateur dessine des valeurs sur une divergence latente haussière, et ne dessine pas de divergence latente baissière..... Il écrit que l'erreur 4002 - array index - out of range.
Il semble que j'ai tout arrangé... Ça m'a pris une soirée entière... Et c'est dommage - le code est le plus simple... Mais ça dessine des taureaux avec des flèches, mais pas des ours... S'IL VOUS PLAÎT ! Quelle est l'erreur dans ?????????????????????
//+------------------------------------------------------------------+
//| div zz 5.mq4 |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 CLR_NONE
#property indicator_color2 CLR_NONE
#property indicator_color3 BlueViolet
#property indicator_color4 Red
#define arrowsDisplacement 0.0001
double cci[] ;
double cci1[] ;
double bullishDivergence[] ;
double bullishDivergence[] ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
//---- indicateurs
SetIndexStyle(0, DRAW_NONE) ;
SetIndexStyle(1, DRAW_NONE) ;
SetIndexStyle(2, DRAW_ARROW) ;
SetIndexStyle(3, DRAW_ARROW) ;
SetIndexBuffer(0, cci) ;
SetIndexBuffer(1, cci1) ;
SetIndexBuffer(2, bullishDivergence) ;
SetIndexBuffer(3, bullishDivergence) ;
SetIndexArrow(2, 233) ;
SetIndexArrow(3, 234) ;
retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation de l'indicateur de dépôt |
//+------------------------------------------------------------------+
int deinit()
{
retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted() ;
//---- dernière barre comptée sera recomptée
si(counted_bars>0) counted_bars-- ;
//int limit=Bars-counted_bars ;
double vpadcci[] ;
double v[] ;
double hh[] ;
double ss[] ;
for (int i=500 ; i>=0 ; i--)
{
cci[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i) ;
si (
(cci[i]<cci[i-1])&&
(cci[i]<cci[i-2])&&
(cci[i]<cci[i+1])&&
(cci[i]<cci[i+2])
)
{
vpadcci[i]=cci[i] ;
ss[i]=Low[i] ;
}
}
for(int j=500 ; j>0 ; j--)
{
cci[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j) ;
si (
((cci[j+1]>vpadcci[10])&&
(cci[j]<vpadcci[10])&&
(low[j]>ss[10])) ||
((cci[j+1]>vpadcci[9])&&
(cci[j]<vpadcci[9])&&
(low[j]>ss[9])) ||
((cci[j+1]>vpadcci[8])&&
(cci[j]<vpadcci[8])&&
(low[j]>ss[8])) ||
((cci[j+1]>vpadcci[7])&&
(cci[j]<vpadcci[7])&&
(low[j]>ss[7])) ||
((cci[j+1]>vpadcci[6])&&
(cci[j]<vpadcci[6])&&
(low[j]>ss[6])) ||
((cci[j+1]>vpadcci[5])&&
(cci[j]<vpadcci[5])&&
(low[j]>ss[5])) ||
((cci[j+1]>vpadcci[4])&&
(cci[j]<vpadcci[4])&&
(low[j]>ss[4])) ||
((cci[j+1]>vpadcci[3])&&
(cci[j]<vpadcci[3])&&
(low[j]>ss[3])) ||
((cci[j+1]>vpadcci[2])&&
(cci[j]<vpadcci[2])&&
(low[j]>ss[2])) ||
((cci[j+1]>vpadcci[1])&&
(cci[j]<vpadcci[1])&&
(low[j]>ss[1])) ||
((cci[j+1]>vpadcci[0])&&
(cci[j]<vpadcci[0])&&
(low[j]>ss[0])
)
{ bullishDivergence[j] = Low[j] - arrowsDisplacement ;
}
}
pour (i=1 ; i<500 ; i++)
{
cci1[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i) ;
si
(
(cci1[i]>cci1[i-1])&&
(cci1[i]>cci1[i-2])&&
(cci1[i]>cci1[i+1])&&
(cci1[i]>cci1[i+2])
)
{
v[i]=cci1[i] ;
hh[i]=High[i] ;
}
}
for(j=1 ; j<500 ; j++)
{
cci1[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j) ;
si (
((cci1[j+1]<v[10])&&
(cci1[j]>v[10])&&
(high[j]<hh[10])) ||
((cci1[j+1]<v[9])&&
(cci1[j]>v[9])&&
(high[j]<hh[9])) ||
((cci1[j+1]<v[8])&&
(cci1[j]>v[8])&&
(high[j]<hh[8])) ||
((cci1[j+1]<v[7])&&
(cci1[j]>v[7])&&
(high[j]<hh[7])) ||
((cci1[j+1]<v[6])&&
(cci1[j]>v[6])&&
(high[j]<hhh[6])) ||
((cci1[j+1]<v[5])&&
(cci1[j]>v[5])&&
(high[j]<hh[5])
)
{ { cci1[j]= High[j] + arrowsDisplacement ;
}
}
retour(0) ;
}
KoDim 14.02.2011 09:29
Bonjour.
Lors de la programmation de l'Expert Advisor, j'étais perplexe quant au paramètre ma_shift- décalage de la ligne médiane dans les barres. Si le décalage est positif, la ligne se déplace vers la droite. Et vice versa, si le décalage est négatif, la ligne est décalée vers la gauche.
Si une valeur positive est utilisée, un ordre est ouvert au croisement des moyennes.
Cependant, si nous définissons le paramètre comme négatif, l'ordre n'est pas ouvert.
Qu'est-ce que ça a à voir avec ça ?
Voici un extrait du code
Bonjour, cela fait un moment que j'essaie d'apprendre à écrire des EA, alors voici une question. Comment puis-je prescrire à l'EA de mettre un stop loss après avoir mis un stop buy ou un stop loss ? C'est-à-dire qu'après le stop-buy et le stop sat pour 5 points (grosso modo), l'EA se met immédiatement un stop loss.
Est-il possible de créer un EA qui fermerait tous les ordres lorsque le take-profit du dernier ordre ouvert se déclenche ?
Vous pouvez.
Pupersa ,trouvez cet ordre et modifiez le paramètre "stop loss".
KoDim, peut-être parce que les valeurs sont décalées vers la gauche, sur les barres de droite (croisement sur lequel vous pouvez vérifier) elles n'existent pas du tout ?
question aux programmeurs : comment faire pour que le nombre après la virgule soit un nombre entier ?)
par exemple, le numéro 1,128 nécessite 128, le numéro 1,12 nécessite 12, le numéro 1,2 nécessite 2)
Le nombre est une variable externe.
question aux programmeurs : comment faire pour que le nombre après la virgule soit un nombre entier ?)
par exemple, le numéro 1,128 nécessite 128, le numéro 1,12 nécessite 12, le numéro 1,2 nécessite 2)
Le nombre est une variable externe.
voir ici : https://docs.mql4.com/ru/basis/operations/math
Si l'argent et les volumes (et non les vagues d'Elliott) sont à l'œuvre sur le marché, et que le mouvement des prix n'est pas chaotique, mais dirigé par les volumes, alors deux signaux sur 2 paires (sur les trois considérées) donneront un signal plus fort sur la troisième paire. Recherchez les niveaux d'accumulation des ordres, analysez le VSA et vous trouverez les X et Y nécessaires))))
En outre (voir figure), un aplatissement net d'une paire de devises (formée de 2 devises) n'empêche pas une troisième paire de devises (les 2 autres paires) de suivre une tendance. Si une tendance de plus d'une devise est en cours, cela crée une sorte de "chaos du marché". Les tendances intrajournalières étant moins stables que les tendances à moyen et long terme, ce chaos est plus prononcé sur les petites TF.
En étudiant le marché sous cet angle, j'ai tendance à penser que la tendance des monnaies elles-mêmes (et non des paires de monnaies) est plus stable, sinon nous aurions un graphique d'oscillateur qui ne peut absolument pas être analysé.
C'est ce que me dit cette photo. ))))
question aux programmeurs : comment faire pour que le nombre après la virgule soit un nombre entier ?)
par exemple, le numéro 1,128 nécessite 128, le numéro 1,12 nécessite 12, le numéro 1,2 nécessite 2)
Le nombre est une variable externe.