[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

 
Peut-on créer un EA qui ferme tous les ordres lorsque le take-profit du dernier ordre ouvert se déclenche ?
 

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) ;
}



Dossiers :
divfzzg5.mq4  5 kb
 
Transféré d'un fil séparé. Il est recommandé de poser ici des questions simples. Le code doit être affiché via le bouton SRC, car il est beaucoup plus facile à lire.
<br / translate="no">.
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

SMFast0=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 0 ); // МА быстрая на текущем баре
SMFast1=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 1 ); // МА быстрая на первом баре

SMSlow0=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 0 ); // МА медленная на текущем баре
SMSlow1=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 1 ); // МА медленная на первом баре

if(SMFast0>SMSlow0 && SMFast1<SMSlow1)

{
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}

if(SMFast0<SMSlow0 && SMFast1>SMSlow1)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
} 
 

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.

 
Poseidon:
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 sur MT5. Comment puis-je savoir si le testeur a terminé son travail ? Sauf visuellement :)
 
eddy:

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
 
nemo811:


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. ))))

Letest de l' indice dollar sur M1 et M5 a donné de moins bons résultats que le GBP/USD. Les grandes TF ne peuvent pas être testées en raison de l'archive d'historique très réduite. Fibogroup n'en donne pas beaucoup pour Nedex, et de nombreuses sociétés de courtage n'en donnent pas du tout. C'est pourquoi il est problématique d'étudier les tendances des devises et de travailler avec de petits lots (0,01) ......
 
eddy:

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.

double a = 1.123345;
int b = a;
C'est également possible.