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

 

J'ai remarqué une telle nuance lorsque je prescris un tirage dans mon EA, à savoir :

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1) ;

Imprimer ("+++++++++++++", Up) ;

le conseiller expert affiche le résultat suivant : ++++++++++++++ 2147483647. Je vois le même nombre pour les tampons ascendants et descendants. S'il vous plaît, dites-moi de quel type de code il s'agit ? Et comment "récupérer" la valeur de l'Ikastom exactement au moment où la flèche apparaît ?

 

Je demande un peu d'aide aux personnes bien informées : veuillez me conseiller le code correct pour créer un Expert Advisor/Utilitaire dont l'algorithme est le suivant :

- L'ouverture d'une double transaction dans une direction (lots 0.1 et 0.1) se fait au moment du croisement du bas (vente)/haut (achat) de la dernière bougie formée dans le graphique actuel / cadre temporel actuel avec un stop près du haut / bas de la bougie, au croisement de laquelle s'est ouverte une transaction donnée et en plaçant au même point un ordre en attente de double transaction dans une direction avec des lots, tels que 0.2 et 0.1.

 

Question :

Il y a un code

int start()

si (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent())

{+ quelques conditions

Ensuite, la commande est ouverte

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP) ;
if (Ticket > 0)
Alert ("Buy order opened ",Ticket) ;

return;}

Mais si à ce moment-là, il n'y a pas de tique, il n'est pas déclenché.

Mais si je lui donne plus de temps pour réfléchir, il peut ouvrir plusieurs commandes.

Je devrais avoir un seul ordre sans faire attention aux ordres déjà ouverts.

Veuillez me conseiller sur ce que je dois faire

 
v2812:

J'ai remarqué une telle nuance lorsque je prescris un tirage dans mon EA, à savoir :

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1) ;

Imprimer ("+++++++++++++", Up) ;

le conseiller expert affiche le résultat suivant : ++++++++++++++ 2147483647. Je vois le même nombre pour les tampons ascendants et descendants également. S'il vous plaît, dites-moi de quel type de code il s'agit ? Et comment "récupérer" la valeur de l'Ikastom exactement au moment où la flèche apparaît ?


Essayez de passer les valeurs de l'indicateur non pas par iCustom() mais par les variables globales du terminal. Ce sont ceux que vous pouvez voir par F3. Le fait est qu'il n'est pas rare qu'il s'agisse du seul moyen normal de transmission des données. J'ai eu de tels cas.

Il est tout à fait possible que dans votre indicateur, certains types de flèches soient dessinés par le tampon de l'indicateur, tandis que d'autres sont créés en tant qu'objets. C'est la seule raison pour laquelle il n'y a pas de flèches de prix dans la fenêtre de données - les données sont sorties dans cette fenêtre à partir des tampons des indicateurs.

 
palesandr:

Question :

Il y a un code

int start()

si (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent())

{+ quelques conditions

Ensuite, la commande est ouverte

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP) ;
if (Ticket > 0)
Alert ("Buy order opened ",Ticket) ;

return;}

Mais si à ce moment-là, il n'y a pas de tique, il n'est pas déclenché.

Mais si je lui donne plus de temps pour réfléchir, il peut ouvrir plusieurs commandes.

Je devrais avoir un seul ordre sans faire attention aux ordres déjà ouverts.

Veuillez me conseiller sur ce que je dois faire


Le code EA est déclenché UNIQUEMENT lorsqu'un nouveau tick arrive. Plus d'un ordre est ouvert car sur le tick suivant le signal de setup est également vrai et il n'y a pas de contrôle sur le nombre d'ordres. Nous devons recalculer les commandes.
 
drknn:


Essayez de passer les valeurs de l'indicateur non pas par iCustom(), mais par des variables de niveau terminal global. Ce sont celles qui peuvent être vues par F3. Le fait est qu'il n'est pas rare qu'il s'agisse du seul moyen normal de transmission des données. J'ai connu de telles situations.

Il est possible que dans votre indicateur, certains types de flèches soient dessinés par le biais d'un tampon d'indicateur et que d'autres soient créés en tant qu'objets. C'est la seule raison pour laquelle il peut ne pas y avoir de flèche de prix dans la fenêtre de données - les données sont sorties dans cette fenêtre à partir de tampons d'indicateurs.


Merci beaucoup ! Je vais maintenant essayer de prescrire comme vous l'avez dit.
 
palesandr:
Mais s'il n'y a pas de tique à ce stade, elle n'est pas déclenchée.

et si vous lui donnez plus de temps pour réfléchir, il peut ouvrir plusieurs ordres.

Mais je n'en ai besoin que d'un seul et je ne veux pas qu'il prête attention aux commandes qui sont déjà ouvertes.

Pouvez-vous me dire ce qu'il faut faire
?


1. la date globale last_dt ;


2. faire l'heure juste

datetime dt=StrToTime(H+" : "+M+" : "+S) ;


3.

if (TimeCurrent()>=dt && last_dt<dt) // le bon moment est arrivé et c'est le jour suivant

{

// ouvrir la commande

if (ticket>0) last_dt=TimeCurrent() ; // mémoriser l'heure d'ouverture

}

 
v2812:

alors l'EA donne le résultat suivant - ++++++++++++++ 2147483647. Et le même nombre pour les tampons ascendants et descendants.

2147483647 - c'est la constante EMPTY_VALUE
 

Je comprends cela.

Je dois être plus précis sur le recalcul des commandes. Peut-être un exemple (sous forme de code) ou un lien .

J'ai essayé comme ceci

si (Ticket > 0)
Alert ("Opened Buy order ",Ticket) ;

sleep (10000)
return;}

a échoué pour une raison quelconque

drknn:

Le code EA est déclenché UNIQUEMENT lorsqu'un nouveau tick arrive. L'ordre en ouvre plus d'un car sur le tick suivant, le signal d'ensemble est également vrai et il n'y a pas de contrôle du nombre d'ordres. Nous devons recalculer les commandes.
 

Je veux que le logiciel ignore la date, seule l'heure est importante.

Vos conseils sont-ils utiles dans ce cas ?

sergeev:


1. date globale last_dt ;


2. faire en sorte que l'heure soit correcte

datetime dt=StrToTime(H+" : "+M+" : "+S) ;


3.

if (TimeCurrent()>=dt && last_dt<dt) // c'est la bonne heure et c'est le jour suivant

{

//ouverture de la commande

if (ticket>0) last_dt=TimeCurrent() ; // se souvenir de l'heure d'ouverture

}