Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 695

 
jekk:

Bonjour, aidez-moi à gérer les commandes en cours. Par exemple, je dois placer un ordre en attente par l'indicateur. Comment puis-je l'écrire ?

Price = NormalizeDouble (iMA(Symbol(),TimeFrame_D1, EMA_Period_21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// comment corriger cela ?

SL = NormalizeDouble (Ask- StopLoss*Point,Digits) ;

TP = NormalizeDouble (Level_plus_1500_D1,Digits) ; // celui-ci pour le profit - Level_plus_1500_D1 - niveau EMA ?

OrderSend(Symbol(),OP_BUYLIMIT,Lots,Price,Slippage, SL,TP,NULL,Magic,0,clrLime) ;


Price =  NormalizeDouble (iMA(Symbol(),PERIOD_D1, EMA_Period_ 21,0,MODE_EMA,PRICE_MEDIAN,0)+1*Point,Digits);// как правильно прописать эту строчку? 
 TP = NormalizeDouble (Level_plus_1500_D1-iMA(Symbol(),PERIOD_D1, 21,0,MODE_EMA,PRICE_MEDIAN,0),Digits); // и эту для профита -  Level_plus_1500_D1 - уровень ЕМА  ?

Lisez l'aide, tout y est et c'est très compréhensible.

Et le SL et le TP devraient être mieux définis à partir du prix de l'ordre (Price), et non à partir du marché, cela a plus de sens en quelque sorte.

 
evillive:

Lisez l'aide, tout y est et c'est très clair.

Et il est préférable de définir le SL et le TP à partir du prix de l'ordre (Price ), plutôt qu'à partir du prix du marché, c'est plus logique.

Merci !
 

J'ai essayé d'utiliser la fonction écrite dans cet article https://www.mql5.com/ru/articles/1357. J'ai décidé de vérifier comment les ordres sont ouverts par les signaux de cette fonction et j'ai écrit un code simple :

Metatrader arrive avec ça :

Je ne sais pas quoi faire. Je ne sais pas si quelque chose ne va pas avec les guillemets ou le code de fonction.

Le code de la fonction est joint.

Dossiers :
func_ad.mqh  33 kb
 
LBatters:

Bonjour à tous, pouvez-vous m'aider avec ce problème. J'ai travaillé avec la fonction écrite dans cet article https://www.mql5.com/ru/articles/1357. J'ai décidé de vérifier comment les ordres sont ouverts par les signaux de cette fonction et j'ai écrit un code simple :

Metatrader donne ça :

Je ne sais pas quoi en faire.

J'ai joint le code de la fonction.


Ce n'est probablement pas la même fonction dans la bande-annonce, il n'y a rien avec des tableaux dans celle-ci à la ligne 59 et l'erreur est clairement en dehors du tableau, à la ligne 59, selon la deuxième capture d'écran.
 
evillive:

Ce n'est probablement pas la même fonction dans la bande-annonce, il n'y a rien avec des tableaux dans celle-ci à la ligne 59, et l'erreur est clairement en dehors du tableau, à la ligne 59, selon la deuxième capture d'écran.

Non, je commentais juste, donc les lignes ont bougé.

Voici celle que j'ai compilée.

Dossiers :
func_ad1.mqh  63 kb
 
LBatters:

Non, je commentais juste, donc les lignes ont bougé.

C'est celui que j'ai compilé.


essayez
for (i=2; i<=nBars-2; i++)
 
evillive:

Essayez
for (i=2; i<=nBars-2; i++)


ha ! maintenant une transaction s'ouvre et c'est la fin du test, je ne comprends pas pourquoi soustraire 2 ?
 
LBatters:

ha ! maintenant une transaction s'ouvre et c'est là que le test se termine, je ne comprends pas pourquoi soustraire 2 ?


Il y a plus de tableaux dans l'inline, il est probable qu'il bute déjà sur eux. Ou est-ce qu'il se plaint toujours de la ligne 59 ?

Et la soustraction - l'arithmétique est simple - s'il y a 100 éléments, leur numérotation est 0...99 (parce que nBars=100, donc 99 est ce même nBars-1), et donc vous pouvez dans votre algorithme compter de 1 (en comparant à 0 et 2 bars) à 98 (en comparant à 97 et 99 bars), à 99 il quittera déjà le tableau.

 
evillive:


Il y a plus de tableaux dans l'inline, il est probable qu'il bute déjà sur eux. Ou est-ce qu'il se plaint toujours de la ligne 59 ?

Et la soustraction - l'arithmétique est simple - s'il y a 100 éléments, leur numérotation est 0...99 (99 est votre nBars-1), donc vous pouvez compter de 1 (en comparant avec 0 et 2 barres) à 98 (en comparant avec 97 et 99 barres) dans votre algorithme, à 99 vous sortirez du tableau.


Mais il est inférieur ou égal, c'est-à-dire que 99 est inclus, n'est-ce pas ? L'erreur 130 apparaît lors de l'ouverture de la commande.

 
LBatters:


Il est soit inférieur ou égal, c'est-à-dire que 99 est inclus, n'est-ce pas ? L'erreur 130 apparaît lors de l'ouverture de la commande.


Nous avons atteint i=99, c'est le dernier élément.

if (TempIND[i]<TempIND[i-1] && TempIND[i+1]>=TempIND[i])

Et où est[i+1]?