Bonjour,
J’ai vu le fil situé ici:
Cloture systématique à la fin de bougie suivant le signal
J’ai testé avec le code suivant:
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
once buybar = 0
// Conditions pour ouvrir une position acheteuse
indicator1 = BollingerDown[20](close)
c1 = (close <= indicator1)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
buybar = barindex
ENDIF
// Conditions pour fermer une position acheteuse
if buybar<>0 and barindex-buybar=1 then
SELL AT MARKET
endif
mais on dirait que les fermetures de position se font au hasard.
Je voudrais que la position ne dure qu’une seule journée en Daily (ici c’est le SP500 SPTRD) c’est à dire:
Achat à l’open dès que les conditions sont OK, puis sortie à l’open suivant dans tous les cas. Aucune conservation.
Ci-joint la capture d’écran du backtest. On voit que pour le 1er achat présent, la position est clôturé 5 bougies plus tard au lieu de la suivante.
Comment modifier cela ?
Merci.
La raison est que, sur les 4 bougies qui suivent l’achat, la condition c1 est vraie. Du coup, le code devrait exécuter l’instruction BUY, mais elle n’est pas exécutée à cause de l’instruction “DEFPARAM CumulateOrders = False”. Par contre, l’instruction “buybar = barindex” est bien exécutée, ce qui fait que la condition de sortie “barindex–buybar=1″ est fausse.
Si vous voulez un code propre et simple, vous pourriez faire ceci :
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour fermer une position acheteuse
if OnMarket then
SELL AT MARKET
endif
// Conditions pour ouvrir une position acheteuse
indicator1 = BollingerDown[20](close)
c1 = (close <= indicator1)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
Merci de la réponse.
Ah bien oui, cela à l’air efficace.
Je vais tester 😉