Bonjour,
Je me suis permis d’expliquer plus précisément ce que je souhaite coder ci-dessous sur la base du code actuel qui ne remplis pas exactement ce que je recherche.
Idée de départ :
Stratégie basée sur 5 indicateurs remontant chacun soit une variable « ACHAT » soit une variable « VENTE » en fonction de leur paramétrage (voir cde plus bas)
Scan du marché à chaque incrément de temps choisi (t)
Stratégie :
A t0 :
- Compter le nombre de variable « ACHAT » et « VENTE » en fonction des critères définis dans les 5 indicateurs de départ.
- Si le nombre de variable « ACHAT » est > au nombre de variable « VENTE » alors rentrer en POSITION ACHETEUSE.
Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
A t0+1 :
- Remettre à zéro les compteurs « ACHAT » et « VENTE ».
- Toujours à t0+1 et une fois les compteurs remis à zéro, compter le nombre de variable « ACHAT » et « VENTE » en fonction des critères définis dans les 5 indicateurs.
- Si le nombre de variable « ACHAT » est TOUJOURS > au nombre de variable « VENTE » alors RESTER en POSITION ACHETEUSE.
Puis rester en POSITION ACHETEUSE tant que le nombre de variable « ACHAT » > « VENTE ».
Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
A t0+n :
- Si le nombre de variable « ACHAT » devient < au nombre de variable « VENTE » alors SORTIE DE POSITION ACHETEUSE.
- Attention, la somme des variables doit toujours être égale à 5 (ce qui n’est pas le cas dans le code actuel et je ne sais pas pourquoi ?).
… Puis inversement en position SHORT.
Cette stratégie peut-être aussi représentée graphiquement comme dans l’image attachée, ou avec un exemple aléatoire comme dans l’image attachée également.
En effet, le code actuel ci-dessous ne calcul pas ou ne remet pas à zéro correctement les compteurs car la somme des compteurs est parfois supérieure ou inférieure à 5 (nbre d’indicateur) alors qu’il devrait toujours y être égale.
Le code actuel rentre en position acheteuse à t0 et sort du marché immédiatement à t0+1 alors qui devrait y rester suivant les indicateurs.
Merci pour votre support.
Bien Cordialement
Code actuel:
// Conditions des indicateurs
defparam cumulateorders=false
i = rsi[14](close)
if i>55 then
achat = achat +1
elsif i<45 then
vente = vente +1
endif
j = MACDline[12,26,9](close)
if j>0 then
achat = achat +1
elsif j<0 then
vente = vente +1
endif
k = CCI[14](close)
if k>45 then
achat = achat +1
elsif k<0 then
vente = vente +1
endif
l = Stochastic[9,6](close)
if l>50 then
achat = achat +1
elsif l<50 then
vente = vente +1
endif
m = Williams[14](close)
if m>-50 then
achat = achat +1
elsif m<-50 then
vente = vente +1
endif
// Conditions pour ouvrir une position acheteuse
if not longonmarket and achat > vente then //evenement achat plus important que vente
BUY 1 CONTRACTS AT MARKET
//reinitialisation des compteurs:
achat = 0
vente = 0
endif
// Conditions pour fermer une position acheteuse
if achat < vente then
SELL AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
if not longonmarket and vente > achat then //evenement vente plus important que achat
SELLSHORT 1 CONTRACTS AT MARKET
//reinitialisation des compteurs:
achat = 0
vente = 0
endif
// Conditions pour fermer une position en vente à découvert
if vente < achat then
SELL AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 200
graph achat coloured(0,255,0)
graph vente coloured(255,0,0)