Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1547

 
SGarnov:

Nombre d'arrêts consécutifs sur une paire de devises.

L'Expert Advisor est positionné sur plusieurs paires de devises et dans l'historique il y a plusieurs arrêts et dans différentes séquences, afin de comprendre l'historique l'EA étiquette initialement les ordres avec ID mais ne les trouve pas dans l'historique, je pensais que ОrderMagikNumber() les rechercherait. Peut-être, à cause du fait que dans l'historique, l'EA arrête de "voir" les arrêts de différentes paires de devises ? Je n'ai pas essayé d'utiliser l'EA sur une seule paire et il sera inutile.

Dois-je à nouveau exposer le code source ? Tout ce qu'il faut faire, c'est corriger "rechercher les transactions stop dans l'historique et les ajouter à la prise nouvellement placée".

Et s'il y a plus de deux stops sur une paire, comment reprendre le travail de l'EA sur cette paire ?

Et d'ailleurs, OrderMagicNumber() définit les ordres EA et les ordres placés manuellement sans magicien.
 
MakarFX:

Et s'il y a plus de deux arrêts consécutifs sur une paire, comment réactiver l'EA sur cette paire ?

Je le fais avec un nouveau pendule, que je règle moi-même.
 
SGarnov:
Unnouveau pendule, que j'ai monté moi-même.
Dois-je y ajouter les points des pertes précédentes ou un nouveau cycle de comptage des pertes ?
 
MakarFX:
Est-il nécessaire d'ajouter les points des pertes précédentes ou du nouveau cycle de pertes ?

Non. Vous n'avez pas besoin d'ajouter les précédents. Seulement lorsque l'EA commence à fonctionner.

L'Expert Advisor n'implémentera toujours que 4 variantes d'événements, si le coefficient de Stop Loss est de 2.

A) Prise de profit + 1 stop, le conseiller expert cessera de fonctionner.

B) Prenez + 1 stop, l'EA cessera de fonctionner.

C) La prise + 2 arrête l'EA cesse de fonctionner

D) 3 stops EA ne fonctionne plus

 
SGarnov:

Bon après-midi. Aide pour l'EA. Selon la stratégie, si un stop se déclenche, alors l'EA devrait ajouter (le nombre de points) à la prochaine prise en charge
de l'historique par ID, mais il ne le fait pas pour une raison quelconque.

Qu'est-ce qui ne va pas dans ce code ?

Si vous voulez assurer un profit minimal, il suffit d'ajouter un spread au stop et au take profit à une certaine valeur. Plus précisément, le montant de la série arithmétique * spread (combien de spreads sont perdus, de combien est augmenté). Il suffit de ne pas augmenter la gamme beaucoup plus que la gamme quotidienne.

La meilleure option - dans OrderMagic ou Comment, enregistrez la valeur initiale de l'arrêt en points, ou le nombre d'échecs dans une rangée. En général, le conseiller expert doit se souvenir de tous ses ordres/positions et ne pas interroger inutilement le terminal (et le serveur).

 
Maxim Kuznetsov:

Pour que cela fonctionne avec un profit minimum, il suffit d'ajouter un spread au stop et au take. Plus précisément, le montant de la série arithmétique * spread (combien de spreads sont perdus, de combien ils sont augmentés). Il suffit de ne pas augmenter la gamme beaucoup plus que la gamme quotidienne.

La meilleure option - dans OrderMagic ou Comment, enregistrez la valeur initiale de l'arrêt en points, ou le nombre d'échecs dans une rangée. En général, le conseiller expert doit se souvenir de tous ses ordres/positions et ne pas interroger inutilement le terminal (et le serveur).

Quant au code, il devrait, mais je ne le vois pas dans l'historique. Pouvez-vous m'aider ?
 

Je demande l'aide de la communauté...
Comment déclarer et créer correctement des objets globaux MQL5 ?

Si je le fais de cette façon :

int OnInit()
{
   CIsNewBar* NB_M1=new CIsNewBar(_Symbol,PERIOD_M1);  // Эта строка потом будет в цикле для разных символов
}

void OnTick()
{
    if (NB_M1.IsNewBar())  // (1) Если появился новый бар M1
        {....}
    ......
}

Le compilateur se plaint de la ligne dans OnTick() : 'NB_M1' - identifiant non déclaré, ce qui est logique, car une variable locale est créée dans OnInit().

Si vous insérez la déclaration globale avant OnInit() :

CIsNewBar* NB_M1;

il compile sans erreurs et l'expert travaille. Il semble que l'objet soit créé deux fois - lors de la déclaration globale et dans OnInit().
Mais le compilateur a cet avertissement

la déclaration de 'NB_M1' cache la variable globale -> par ligne dans OnInit()

voir la déclaration précédente de 'NB_M1'

Cela signifie-t-il qu'une variable locale (dans une fonction) est créée dans OnInit() qui cache une variable globale avec le même nom ?
Et si oui, comment cette variable locale peut-elle être "vue" par une autre fonction, OnTick() ?




 
SGarnov:

Non. Vous n'avez pas besoin d'ajouter les précédents. Seulement lorsque l'EA commence à fonctionner.

Le Conseiller Expert n'implémentera toujours que 4 options, si la valeur du Stop Loss est égale à 2.

A) Prendre

B) Prendre + 1 arrêt

C) Prendre + 2 arrêts

D) 3 arrêts

Le conseiller ne fonctionne plus

Je vois, je vais essayer.
 

Je ne sais pas encore à qui ce message est adressé. Je ne peux pas créer un panneau opaque. Les fonctions OBJ_BITMAP_LABEL, OBJ_RECTANGLE_LABEL sont conçues pour décorer ou créer de nouveaux objets. Mais ils ne disposent pas d'une option de non-transparence. Peut-être que je n'ai pas assez étudié la langue ou que c'est un défaut des créateurs. Les objets créés au premier plan apparaissent dans le panneau de contrôle. L'inverse peut être utilisé, mais cela surchargera le Procyc. Si quelqu'un sait comment faire, dites-le moi.

 
MakarFX:
Je vois, je vais essayer.

Pour faciliter les choses prenez mon code source, il a une logique qui fonctionne, sauf pour le problème que j'ai décrit, je ne le comprends pas bien, ma tête est en ébullition mais je n'arrive pas à en tirer une quelconque utilité.

Raison: