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

 
trader781:

Je ne comprends pas où le mettre et pourquoi il ne l'est pas (-1)

il y a un paramètre d'entrée bool

void OnTick

{analyse de l'ouverture des ordres, trailing stop}

void Trailing Stop

{correspond à des conditions de fermeture

si oui, nous couvrons tout ce qui existe

}

En fait, retour, c'est un vide.

Je ne sais pas quelle logique vous avez là. Comment voulez-vous que je devine ce que vous avez là ?
 
trader781:

de trois points

1 point externe où l'on détermine si l'on veut ouvrir le deuxième ordre ou plus.

2) une condition où nous devons ouvrir la première commande

3) point d'ordre de fermeture

Je peux vous envoyer le code mais c'est le même pour tout le monde.

Alors, pourquoi jeter de l'huile sur le feu si vous n'avez pas besoin d'aide ?

Vous ne trouverez pas de messages utiles dans un millier de pages inutiles.

P.S. Ou bien votre objectif est-il de bourrer vos posts au maximum ?
 
trader781:
Je demande alors un schéma de l'interrupteur sur ces trois points. Ensuite, je supprimerai mes messages si vous les considérez comme des déchets.

Quel est ce point ?

1 point externe où l'on détermine si l'on veut ouvrir le deuxième ordre ou plus.

2) une condition où nous devons ouvrir la première commande

3) clôture de l'ordre du jour

Savez-vous seulement ce que vous voulez ?

Vous ne pouvez pas définir un ordre au point 2, vous ne pouvez pas le fermer, et il peut seulement être supprimé. En général, tout ce que vous avez est en quelque sorte logiquement incohérent et vague, vous devez être député.

 

Il y a cette partie du code :

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Question :Period() retourne une valeur saine jusqu'à M30, à partir de H1 un ensemble de chiffres, et le marqueur ne peut plus être décalé de cette façon.

Comment décaler par N - chandeliers sans tenir compte de la période ? Je n'ai pas besoin d'écrire une fonction séparée, n'est-ce pas ?

 
Vitaly Muzichenko:

Il y a cette partie du code :

if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_TEXT,0,0,0);
    ObjectSetString(0,nm,OBJPROP_PRICE, TIME(0)+Period()*60*3); // сдвиг вправо на 3 свечи
}

Question :Period() retourne une valeur saine jusqu'à M30, à partir de H1 un ensemble de chiffres, et le marqueur ne peut plus être décalé de cette façon.

Comment décaler par N - chandeliers sans tenir compte de la période ? Je n'ai pas besoin d'écrire une fonction séparée, n'est-ce pas ?

PeriodSeconds(PERIOD_CURRENT)*3
 
Artyom Trishkin:
PeriodSeconds(PERIOD_CURRENT)*3

Merci !

La question est : Dans quelle mesure cette entrée est correcte, elle se trouve au début du programme, alors que tout au long du programme, beaucoup de Time[0] et Time[1] sont utilisés, et ne doivent pas être appelés à chaque fois, ils sont écrits dans une variable. Il ne semble pas y avoir d'erreurs en dehors du tableau, mais tout est défini de manière superficielle :

datetime TM[], TIME0, TIME1;

//------------
void OnTimer()

ArraySetAsSeries(TM, true);
  if(CopyTime(_Symbol, PERIOD_CURRENT, 0, 2, TM)==-1) return;
   TIME0 = TM[0];
   TIME1 = TM[1];

Merci !

 
Vitaly Muzichenko:

Quel est ce point ?

1 point externe où l'on détermine si l'on veut ouvrir le deuxième ordre ou plus.

2) une condition où nous devons ouvrir la première commande

3) clôture de l'ordre du jour

Savez-vous seulement ce que vous voulez ?

Vous ne pouvez pas définir un ordre au point 2, vous ne pouvez pas le fermer, et il peut seulement être supprimé. En général, vous êtes toujours quelque part logiquement incohérent et vague, vous devez être un député.

s'il vous plaît. Voici le paramètre externe bool OpenOrders=false;//+---ouverture de la commande

J'ai besoin qu'il ouvre des ordres, qu'il les ferme, puis qu'il reste sur le graphique sans consommer de ressources.

pour le moment, il est auto-scié (cela fonctionne, mais c'est inacceptable pour un élément de panneau)

Dossiers :
 
trader781:

s'il vous plaît. Voici le paramètre externe bool OpenOrders=false;//+---ouverture de la commande

J'ai besoin qu'il ouvre un ordre, qu'il le ferme, puis qu'il reste sur le graphique sans consommer de ressources.

pour le moment, il est auto-scié (cela fonctionne, mais c'est inacceptable pour un élément de panneau)

Je l'aurais fait. Ajouter "Disabled" au code

P.S. Remplacez la ligne 72 par "if(! Disabled) return ;". Je pense que la logique du drapeau est claire.
Dossiers :
 
Vitaly Muzichenko:

Je ferais ce qui suit. Ajoutez "Disabled" au code.

P.S. Remplacez la ligne 72 par "if(! Disabled) return ;". Je pense que la logique du drapeau est claire.

Non, ce n'est pas clair. Retourner d'où nous venons.

1) Désactivé=vrai

initialiser à true inite

passer à l'ontik if(!Disabled) retourner ;

ouvrir fermer

Disabled=false ; exit. Tout va bien.

2) Désactivé=faux

initialiser ontik à true

passer à l'ontic if(!Disabled) retourner ;

ouvrir fermer

Disabled=false ; exit. Où dois-je ouvrir la prochaine commande ? Une variante devrait permettre cela.

Vous comprenez maintenant pourquoi je vous ai demandé de décrire la logique ?

J'ai également la possibilité de choisir entre deux EA.

 
trader781:

Non, je ne comprends pas. Retour à l'endroit d'où nous venons.

1) Désactivé=vrai

initialiser dans l'inite à true

passer à l'ontik if(!Disabled) retourner ;

ouvrir fermer

Disabled=false ; exit. Tout va bien.

2) Désactivé=faux

initialiser ontik à true

passer à l'ontic if(!Disabled) retourner ;

ouvrir fermer

Disabled=false ; exit. Où dois-je ouvrir la prochaine commande? Une variante devrait permettre cela.

Vous comprenez maintenant pourquoi je vous ai demandé de décrire la logique ?

J'ai également la possibilité de choisir entre deux EA.

Ce n'est pas clair. Si vous avez besoin d'arrêter l'EA, la variante proposée s'en charge, si vous n'avez pas besoin de l'arrêter, laissez-le négocier et ne le limitez en aucune façon. Si vous souhaitez effectuer des transactions à la demande après le stop, il suffit de changer l'heure, l'invalidité deviendra vraie et le programme continuera à fonctionner.
Raison: