Aidez-moi à fermer l'ordre à l'extrémité du bar ! - page 3

 
RaptorUK:

Oui, start() est appelé pour chaque tick, à moins qu'il ne soit encore en cours d'exécution....

Oui, mais ce n'est pas ce que vous avez demandé dans votre premier message dans ce fil de discussion ... maintenant vous dites que c'est OK pour que la clôture soit retardée par une période, puis une autre période, etc. Si vous voulez clôturer au plus près de la fin de la barre, vous devez le faire au premier tick de la barre suivante, et vous devez vérifier si la clôture a échoué et réessayer de la manière correcte pour réussir à la clôturer.

Je n'ai pas d'autres solutions, si j'en avais, je les aurais faites.


SDC:

Il est assez rare que le prix de clôture d'une barre ne soit pas répété sur la barre suivante, pas nécessairement son prix d'ouverture ...

Oui, parfois une barre s'ouvre en dessous ou au dessus de la fermeture de la bougie précédente et parfois exactement à ce niveau, mais parfois il y a ces écarts qui gâchent tout, c'est pourquoi j'aurais aimé une meilleure solution pour les éviter, mais maintenant je vois que ce n'est pas possible.
 

Problème, gros problème :

/////////////////OrderSelect() and other stuff

if( OrderType() == OP_BUY ){
    
if( /* blablabla condition && */ Time[0]>OrderOpenTime()  ){

OrderClose( OrderTicket(), OrderLots(),OrderClosePrice() ,TAKEPROFITPIPS,CLR_NONE);             
RefreshRates();    

}}

J'ai donc utilisé ce code pour fermer ce mauvais trade au plus près de la fin de la bougie, mais le problème est qu'en backtesting cela fonctionne comme par magie, mais quand je l'ai essayé sur un compte démo live, c'était très bête. Il a commencé à fermer les positions juste après les avoir ouvertes. Je ne comprends pas pourquoi, puisque Time[0] devrait être le temps d'ouverture de la barre actuelle, et comment cela peut-il être plus grand que le temps actuel lorsque le trade a été mis après l'ouverture de la bougie ? C'est tout simplement absurde.

Mais c'est toujours le cas, donc pour exclure toute erreur, j'ai utilisé seulement :

if( Time[0]>OrderOpenTime()  )

Ceci dans le if, pour exclure toute autre interférence, mais oui, le problème est avec ce test :

Time[0]>OrderOpenTime() 

Comment puis-je le contourner, ou quelqu'un peut-il s'il vous plaît trouver un autre test équivalent à celui-ci qui fonctionne sur le compte réel aussi, s'il vous plaît aidez !

 
Proximus:

Problème, gros problème :

J'ai donc utilisé ce code pour fermer ce mauvais trade au plus près de la fin de la bougie, mais le problème est qu'en backtesting cela fonctionne comme par magie, mais quand je l'ai essayé sur un compte démo live, c'était très bête. Il a commencé à fermer les positions juste après les avoir ouvertes. Je ne comprends pas pourquoi, puisque Time[0] devrait être le temps d'ouverture de la barre actuelle, et comment cela peut-il être plus grand que le temps actuel lorsque le trade a été mis après l'ouverture de la bougie ? C'est tout simplement absurde.

Cela s'est produit, alors trouvez la raison... par exemple, si votre OrderSelect() échoue ( vérifiez-vous s'il a fonctionné ou échoué ? ) alors OrderType() renverra la mauvaise valeur ou la bonne par hasard, OrederOpenTime() renverra la mauvaise valeur... peut-être zéro et zéro est inférieur à Time[0]... avez-vous imprimé la valeur de OrderOpenTime() lorsque vous essayez de comprendre ce qui ne va pas ? pourquoi pas ?

Il y a de bonnes raisons pour lesquelles je continue à poster ce lien... Que sont les valeurs de retour des fonctions ? Comment puis-je les utiliser ? Pourquoi ignorez-vous continuellement les bons conseils ?

 
Proximus:

Je n'ai pas d'autres solutions, si j'en avais, je les ferais.

Oui, parfois une barre s'ouvre en dessous ou au dessus de la fermeture de la bougie précédente et parfois exactement à ce niveau, mais parfois il y a ces écarts qui ruinent tout, c'est pourquoi j'aurais aimé une meilleure solution pour les éviter, mais maintenant je vois que ce n'est pas possible.

Faut-il que ce soit exactement le prix de clôture? Si les ticks arrivent rapidement (1 par seconde), prenez le prix s'il arrive à moins de 5 secondes de l'heure de clôture de la barre, si les ticks arrivent lentement (1 par minute), prenez le prix si un tick arrive dans les 30 dernières secondes de la barre, si aucun tick n'arrive pendant ce temps, prenez le prix d'ouverture de la barre suivante.

 
SDC:

Doit-il être exactement le prix de clôture ? Si les ticks arrivent rapidement (1 par seconde), prenez le prix s'il arrive à moins de 5 secondes de l'heure de clôture de la barre, si les ticks arrivent lentement (1 par minute), prenez le prix si un tick arrive dans les 30 dernières secondes de la barre, si aucun tick n'arrive pendant ce temps, prenez le prix d'ouverture de la barre suivante.


Il n'est pas nécessaire que ce soit exactement le Close[1] puisque dans les messages précédents, nous avons exclu qu'il soit impossible d'atteindre exactement ce niveau. Mais la deuxième meilleure solution / la plus proche fera l'affaire également. Pouvez-vous s'il vous plaît écrire votre idée dans un code, pour voir ce que c'est.
 

Volume[0]==1 ;// nouvelle barre = dernière barre fermée.

ou.

bool NewBar()

{

statique datetime lastbar ;

datetime curbar = Time[0] ;

if(lastbar!=curbar)

{

lastbar=curbar ;

retourne (true) ;

}

sinon

{

return(false) ;

}

}


si (Signal=="BUY" && NewBar())

 
Ty pour l'aide j'ai résolu le problème, c'était en fait que j'avais beaucoup de graphiques ouverts à la fois mais et tous avaient le même numéro magique, maintenant ils ont des générés aléatoirement donc c'est ok.
 

Bonjour,

Existe-t-il un moyen de fermer une position ouverte 5 minutes avant la fin de la barre sur l'échelle de temps H4 ? Merci.

 
jonjon:

Bonjour,

Existe-t-il un moyen de fermer une position ouverte 5 minutes avant la fin de la barre sur le cadre temporel H4 ? Merci.



Oui, il existe un moyen
 
Mehmet: Volume[0]==1 ;// nouvelle barre = dernière barre fermée.
  1. Si vous manquez le tout premier tick d'une barre, votre code échoue et manque toute la barre. Utilisez TOUJOURS le temps.
  2. Ne collez pas le code
    Jouer la vidéo
    Veuillez modifier votre message.
    Pour les grandes quantités de code, joignez-le.