[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 40

 
Noterday:

J'ai inséré un nouveau bloc dans mon EA pour calculer la taille du lot de la position à ouvrir. L'idée est la suivante :

1. Le stop est fixé au plus haut de la journée en cours dans le cas d'une position de vente, et au plus bas de la journée dans le cas d'une position d'achat.

2. Lorsque la condition d'ouverture de l'ordre se déclenche, ce bloc pour le calcul du lot commence à être exécuté. La distance au plus haut/bas du jour en points est calculée et je boucle sur les lots à partir de 0.1 pour trouver le lot nécessaire (5% quand un stop s'est déclenché).

Mais de telles lignes apparaissent dans mon journal :

2011.01.30 16:59:47 TestGenerator : erreur de données non correspondantes (limite de volume 1107 au 2011.01.13 14:45 dépassée)

Dès que je désactive ce blocage, tout est OK. Où ai-je tort ? Pouvez-vous me le dire ?

Voici le code lui-même :

Il est peu probable que le message du testeur soit lié à votre code.

Essayez encore et encore de recalculer toutes les périodes de temps dans l'archive des citations.

Le message indique que le volume de 1107 a été atteint à 14:45, ce qui est totalement impossible, car le trading a continué jusqu'à 24:00.

Toutefois, cette erreur est tout à fait négligeable.

 
Saltan:

Lors de la compilation d'un fichier include (*.mqh), une erreur '\end_of_program' - aucune fonction définie. Quel est le problème et comment le résoudre ?

extern double Lots = 0.0 ;
extern int Percent = 0 ;
extern int StopLoss = 100 ;
extern int TakeProfit = 40 ;
extern int TrailngStop = 100 ;

int Level_New ;
int Level_Old ;


Cela arrive et c'est normal. Par exemple, dans mon Variables.mqh - les variables externes et globales de l'expert sont spécifiées... lors de la compilation, il écrit '\end_of_program' - pas de fonction définie, quelque chose comme pas de fin de programme, pas de fonction définie, mais en même temps, lors de la compilation de l'expert lui-même, tout est OK - 0 erreur, 0 avertissement. (*.mqh) - ne pas compiler séparément, lors de la compilation du conseiller expert lui-même, le compilateur mettra tous ses inludes ensemble et il décidera s'il y a des erreurs, pas d'erreurs, etc. :-))) Donc tout est normal. Essayer de se compiler...

P.S. Lors de la compilation d'autres inludes, le compilateur peut écrire que certaines variables globales ne sont pas définies... Bien sûr, il n'est pas nécessaire de le définir si vous l'avez dans une inline complètement différente. Notez l'ordre dans lequel les inludes sont placés... Si une variable est définie dans un inlude et utilisée dans un autre, le premier inlude doit être placé avant le second, sinon une erreur se produira pendant la compilation - une variable n'est pas définie, en général toutes les variables globales sont définies dans l'inlude externe. Ou bien, elles peuvent être définies dans n'importe quel autre, si seulement celui-ci utilise ces variables. D'une certaine manière... C'est assez vague mais cela devrait être compréhensible. Essayez-le.

 
DhP:

Il est peu probable que le message du testeur soit lié à votre code.

Essayez encore et encore de recalculer toutes les périodes de temps dans l'archive des citations.

Le message indique que le volume 1107 a été atteint à 14:45, ce qui est totalement impossible, car le trading a continué jusqu'à 24:00.

Toutefois, cette erreur est tout à fait négligeable.

Eh bien, lorsque ce bloc est commenté, tout va bien dans le testeur. Donc l'erreur est dans ce bloc...
 
100yan:
Pas de problème... Mais comment déterminer la valeur actuelle du TF dans le code ?

Period() serait utile
 
Sergey_Rogozin:

J'ai regardé la couverture du livre STUDY de tous les côtés et je ne comprends toujours rien...))

Je le vois écrit comme ça partout :

L'écriture ci-dessous est-elle correcte si je veux obtenir Price = OrderOpenPrice() pour un traitement ultérieur et la fixation de Stops ?

Cela fonctionne pour moi, mais est-ce acceptable ?

Votre ligne est aussi valable que la première.

De cette façon, vous pouvez obtenir toute information sur un ordre ouvert,

mais une seule fois au moment de la confirmation d'ouverture.

Voir https://docs.mql4.com/ru/trading/OrderSend

 
Noterday:
Eh bien, lorsque ce bloc est commenté, tout va bien dans le testeur. Donc l'erreur est dans ce bloc...
    double DistanceToHighDay = MathAbs(HighDay-Ask)*10000;
    double DistanceToLowDay  = MathAbs(Bid-LowDay)*10000;

Il est très probablement dû à votre traitement des données de la journée, dont le volume n'est pas cohérent avec celui des minutes,

et le testeur vous en avertit.
 
Les variables HighDay et LowDay sont utilisées non seulement dans ce bloc, mais aussi à d'autres endroits du programme, donc je pense qu'elles n'ont rien à voir avec cela. Pensez-vous que l'algorithme de ce bloc est correct ?
 

Quelqu'un peut-il faire un meilleur travail ?

1. Un stop est placé sur le sommet du jour en position de vente.

2. Ensuite, nous calculons la distance en pips entre le prix actuel et le High du jour.

3. Calculez combien cette distance sera en $ avec 0,1 lot et calculez combien elle sera en % du dépôt. S'il est inférieur à 5 %, il faut compter 0,2 lot et ainsi de suite jusqu'à ce qu'il dépasse 5 %.

Et puis ce sera la taille du lot dont vous avez besoin.

Mon code ne fonctionne pas pour une raison quelconque.... bien que tout semble être écrit correctement.

 

QUI SAIT ?

comment puis-je me référer programmatiquement à la Bollinger qui dit - appliquer aux "données de l'indicateur précédent" ? que dois-je mettre dans le champ applied_price ?

merci

 

Bonne journée à tous. Question : Comment faire pour que CheckEvents fonctionne ? Le fichier Events (de Komposter) se trouve dans le répertoire include. Il existe un exemple dans EventsExpert.mq4 :

CheckEvents( MagicNumber );

        if ( eventBuyClosed_SL > 0 )
                Alert( Symbol(), ": Buy-позиция закрыта по СтопЛоссу!" );

Mais je n'ai pas besoin d'Alerte. J'ai besoin que l'ordre en attente soit supprimé lorsque l'ordre au marché se ferme au niveau du Stop Loss.

CheckEvents( Magic==0 );
    
   if (eventBuyClosed_SL > 0)
   ??????????? 
        
   DELETE("Buy Stop");

Que dois-je mettre à la place de l'alerte ? Si cette fonction est adaptée au but recherché.