[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 505

 
eugggy:
bar est le décalage de la barre actuelle par rapport à l'heure définie dans les paramètres externes (Start_Point).

bar = ? ? au moment de la suppression de quoi ?
 
ask: Vous êtes obligé d'être grossier ?

Vous êtes grossier maintenant : il n'y a toujours pas d'énoncé du problème, et ce que vous avez griffonné n'est rien, pas même un pseudo-code.

Et vous pensez que je vous ai envoyé chez les télépathes à tort ?

 
sergeev:

bar = ? ? au moment de la suppression de quoi ?
Espérons qu'il reprendra sa valeur précédente. En d'autres termes, si je n'ai plus besoin du document à l'expiration de la barre, je dois le supprimer.
 
eugggy:
J'espère que sa valeur précédente

Eh bien, j'espère que ça va marcher.

 
sergeev:

Eh bien, tu espères juste que ça va marcher.



:-) Vous ne pouvez pas simplement signaler l'erreur ?
 
eugggy:
:-) Vous ne pouvez pas simplement signaler l'erreur ?

:) mais pour répondre à la question quelle barre= ??, vous ne pouvez pas faire ça ?
 
sergeev:

:) mais vous ne pouvez pas répondre à la question quelle barre= ??, pouvez-vous le faire ?
Eh bien, le sujet est pour les débutants, et si j'étais sûr de ce que la barre est au moment de la suppression, alors peut-être que l'EA fonctionnerait. Je pense que oui : lorsque le document est fermé, c'est-à-dire qu'une nouvelle barre apparaît, la variable barre augmente sa valeur de 1. Dans la fonction de suppression, je mets bar-1, c'est-à-dire le numéro du document déjà fermé et si la barre précédente ne répond pas aux critères spécifiés, le document, dont le numéro = la valeur actuelle de la variable barre moins 1, est supprimé. L'erreur pourrait-elle être due au fait que je supprime un document déjà supprimé ?
 

personne n'a remarqué l'erreur, donc encore une fois.

Pourriez-vous me dire quelle est l'erreur dans le code ? Merci.

//+------------------------------------------------------------------+
//| line.mq4 |
//| |
//| | |
//+------------------------------------------------------------------+
//--- paramètres d'entrée
extern bool sell = 1 ; // permission de vendre
extern bool buy = 1 ;
extern double lots = 0.1 ;
extern int sl = 50 ;
extern int tp = 150 ;

extern int order = 10 ; //

extern double bez = 15 ;
extern double tral_step = 15 ;
extern double tral_start = 10 ;

//+------------------------------------------------------------------+
//| fonction d' initialisation des experts |
//+------------------------------------------------------------------+
int init()
{
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage experte |
//+------------------------------------------------------------------+
int start()
{
//----
string sell_stop = "ss" ; //nomme la ligne manuellement
string buy_stop = "bs" ;

//buy------------------------------------------------------------------------------------------------

// trouve la ligne et place un ordre lorsque le prix touche
if (ObjectFind (buy_stop) > 0 ) // s'il y a une ligne buy_stop
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// touche la ligne
{
OrderSend (Symbol(),OP_BUYSTOP, lots, Ask+Point*order,3, Bid-sl*Point, Bid+tp*Point );// envoie l'ordre
ObjectDelete (buy_stop) ; // la ligne est supprimée
}


return(0) ;
}
//+-------------------------

 
TESKATLIPOKA:

Personne n'a remarqué l'erreur, donc encore une fois.

pouvez-vous me dire quelle est l'erreur dans le code ? merci.


Les voici (il y a beaucoup plus d'erreurs dans votre code mais celles-ci ne passeront même pas à travers le compilateur) :

.
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// касание линии
Et même si vous changez le code en quelque chose de plus sain du point de vue du compilateur :

.
if ( ObjectGet (buy_stop, OBJPROP_PRICE1) == Ask )// касание линии

Si vous ne connaissez pas l'erreur, elle sera toujours théoriquement fausse sans normalisation préalable des valeurs réelles avant la comparaison. Pire encore, la normalisation peut échouer si le prix change de plus d'un pip en un tick et que votre condition passe à travers.

Il est plus correct de trouver la condition de croisement de la manière suivante :

if (ObjectGet (buy_stop, OBJPROP_PRICE1) <= High[0]) && (ObjectGet (buy_stop, OBJPROP_PRICE1) >= Low[0]))//  на текущей свече касание линии уже имело место


P.S. Dans MetaTrader, trouver le point d'erreur après la compilation est assez facile :

1. Dans l'onglet "Toolbox", dans le champ "File", indiquez le numéro de ligne et le numéro du symbole dans lequel le compilateur a détecté une erreur, séparés par des virgules.

2. Si vous double-cliquez sur le message d'erreur dans la colonne "Description" du même onglet, le curseur dans l'éditeur sautera à l'endroit où le compilateur a détecté l'erreur.

 
eugggy:
Eh bien, le sujet est pour les débutants, et si j'étais sûr de ce qu'était la barre au moment de la suppression, peut-être que l'EA fonctionnerait.
Alors demande-moi comment trouver le bar.