katsParticipant
Junior
Bonjour
Je souhaite créer un code dans lequel je définie plusieurs indicateurs comme dans le code que je vais faire suivre .
je souhaite donner une valeur numérique quand chaque indicateur rempli une condition défini afin de pouvoir créer une addition des valeurs de chaque condition validée pour que cette somme donne un résultat qui permet d’obtenir une flèche validant l’achat ou la vente.
en gros si chaque indicateur a une valeur de 1 et qu’il y a trois indicateurs il me faudra un résultat de 2 pour obtenir une flèche up ou une valeur de -2 pour une flèche down.
C’est ce que j’ai tenté de faire pour un essai sur le code suivant mais ca ne fonctionn
SLIPPAGE1=25
indicator2=exponentialAverage[1](close)-exponentialAverage[7](close)
indicator3=exponentialAverage[7](close)-exponentialAverage[20](close)
indicator4=exponentialAverage[20](close)-exponentialAverage[50](close)
indicator5=exponentialAverage[5](close)-exponentialAverage[35](close)
indicator6=exponentialAverage[35](close)-exponentialAverage[100](close)
indicator7=exponentialAverage[100](close)-exponentialAverage[250](close)
cond1 = (close >= CLOSE[1])
cond2 = (indicator2 >= 0)
cond3 = (indicator3 >= 0)
cond4 = (indicator4 >= 0)
IF cond1 THEN
indic1 = 1
endif
IF cond2 THEN
indic2 = 1
endif
IF cond3 THEN
indic3 = 1
endif
if indic1 + indic2 +indic3 >=2 then
DRAWARROWUP (barindex,BollingerDown-slippage1)coloured(253,108,158)
endif
RETURN
e pas..
Help si possible
Le problème c’est que tu fais une somme des variables indic1,2,3 mais ces variables ne sont jamais remise à zéro, donc il suffit d’une seule fois pour que la condition soit vrai à l’infini.
Je pense qu’il aurait été plus simple de faire :
if cond1 + cond2 + cond3 >=2 then
DRAWARROWUP (barindex,BollingerDown-slippage1)coloured(253,108,158)
endif
directement utilisé tes variables booléennes, qui elle sont testés à chaque bougie puisqu’elles ne sont pas enfermés dans une autre condition.
katsParticipant
Junior
Bonsoir et merci pour la réponse
j’avais bien compris qu’en faisant comme tu me le dis ca fonctionnerait
le problème c’est que je voudrais donner des valeurs différentes a chaque indicateur en mixant les uts grâce a une règle de 3 et que donc il faut que je puisse donner une valeur numérique en fonction de l’ut.
Je m’explique
Dans mes conditions je veux que pour prendre la position soit égale ou sup a une valeur minimum mais cette valeur peut etre obtenue par la somme de valeurs predefinies a savoir
un macd >0 en 5 mn aura forcement plus de valeur qu’en 1 mn donc je veux pouvoir lui attribuer une valeur de 5 par exemple alors que le meme macd en 1 mn aura une valeur de 2 et ainsi de suite
et donc en utilisant la condition citée ci dessus ca ne fonctionne pas
merci
Bien compris, comme je l’explique dans mon précédent message, je pense que ton problème vient du fait que tu ne remets pas à zéro les variables à chaque lecture du code. Donc si indic1 vaut 5 par ce que cond1 est vrai, il vaudra toujours 5 à la bougie suivante, même si cond1 n’est plus vrai.
katsParticipant
Junior
BONJOUR
merci pour la reponse , ce que je ne comprends pas c’est comment definir la valeur de chaque indic dès lors qu’une condition est remplie
merci
Ton code est correct, selon ma compréhension de ton besoin, tu dois simplement ajouter ces lignes en tête du code ou juste avant la ligne 26 du code posté ci-dessus :
indic1 = 0
indic2 = 0
indic3 = 0
Pour la valeur / poids, que doit prendre chaque “indic”, tu le définis comme tu le veux dans tes conditions entre les lignes 27 et 35 (exemple indic1= 10 ; indic2= 3; indic3= 1=)
katsParticipant
Junior
ok je vais essayer de traduire cela
merci
katsParticipant
Junior
Bonjour
j’ai un probleme avec un indicateur que je veux mettre en place en groupant plusieurs indics le premier indic c’est celui du superextended créé par nicolas avec le code suivant
// --- settings
//multiplier=2.236
//period=66
//type=1 //1 = use ATR , 2 = Use standard deviation , 3 = Use standard error
//midperiod=10
// --- end of settings
type=max(1,type)
if type=1 then
moy=averagetruerange[period](close)
elsif type=2 then
moy=std[period](close)
elsif type=3 then
moy=ste[period](close)
endif
price=(highest[midperiod](high)+lowest[midperiod](low))/2
up=price+multiplier*moy
dn=price-multiplier*moy
once trend=1
if close>up[1] then
trend=1
elsif close<dn[1] then
trend=-1
endif
if trend<0 and trend[1]>0 then
flag=1
else
flag=0
endif
if trend>0 and trend[1]<0 then
flagh=1
else
flagh=0
endif
if trend>0 and dn<dn[1] then
dn=dn[1]
endif
if trend<0 and up>up[1] then
up=up[1]
endif
if flag=1 then
up=price+multiplier*moy
endif
if flagh=1 then
dn=price-multiplier*moy
endif
if trend=1 then
mysupertrend=dn
offset=moy
color1=0
color2=191
color3=255
else
mysupertrend=up
offset=-moy
color1=255
color2=69
color3=0
endif
drawcandle(mysupertrend,mysupertrend+offset,mysupertrend,mysupertrend+offset) coloured(color1,color2,color3,50)bordercolor(100,100,100,0)
if trend=1 and trend[1]<>1 then
//drawarrowup(barindex,mysupertrend) coloured(color1,color2,color3)
endif
if trend=-1 and trend[1]<>-1 then
//drawarrowdown(barindex,mysupertrend) coloured(color1,color2,color3)
endif
cond11=(trend=1 )
cond12=(trend=-1 )
auquel je souhaite ajouter ce code ci pour donner deux autres conditions mais quand je mets celui ci du tdi le code du super extended ne fonctionne plus correctement
il doit y avoir une contradiction ou une variable ou une appellation identique dans les deux codes qui met le “bordel”
//tdi
Once RsiPeriod = 35
Once VolatilityBand = 92
Once RsiPricePeriod = 5
Once TradeSignalPeriod = 19
Once TradeSignal2Period = 49
r = Rsi[RsiPeriod](Close)
Ma = Summation[VolatilityBand](r / VolatilityBand)
//delta = 1.6185 * STD[VolatilityBand](r)
//Up = Ma + delta
//Down = Ma - delta
RsiPriceLine = Average[RsiPricePeriod](r)
TradeSignalLine = Average[TradeSignalPeriod](r)
TradeSignalLine2 = Average[TradeSignal2Period](r)
SLIPPAGE4=10
cond40=(MA<=TradeSignalLine)
//cond41=(d9>=0)
//cond42=(d10>=0)
//cond43=(d11>=0)
//conditions à la baisse
cond44=(MA>=TradeSignalLine)
//cond45=(d9<=0)
//cond46=(d10<=0)
//cond47=(d11<=0)
IF cond40 THEN
DRAWARROWUP (barindex,BollingerDown-slippage4)coloured(200,200,0)
ENDIF
IF cond44 THEN
DRAWARROWDOWN (barindex,BollingerUp+slippage4)coloured(200,200,0)
endif
RETURN
merci
Comment doivent opérer les deux codes en même temps, que doivent ils afficher et avec quelles conditions ? Une image peut être du signal souhaité ?
katsParticipant
Junior
Bonjour
pas réussi a faire l indic d’addition , trop compliqué pour moi , pas assez douée.
par contre j’ai un code pour l’indicateur magic trend qui fonctionne sur toutes les uts sans probleme.
je vais mettre le code en dessous .
J’essaye désespérément de le dupliquer pour mettre sur le 5 mn sur le 1 mn et je n’y arrive pas.
if (CCI[50](typicalPrice)>=0) then
magic=Low[1]-AverageTrueRange[5](close)
endif
if (CCI[50](typicalPrice)<0) then
magic=High[1]+AverageTrueRange[5](close)
endif
if (CCI[50](typicalPrice)>=0 and magic<magic[1]) then
magic=magic[1]
endif
if (CCI[50](typicalPrice)<0 and magic>magic[1]) then
magic=magic[1]
endif
return magic
je veux mettre celui ci sur le 1 mn et mettre le 5 mn sur le même
//TimeFRAME= 1mn
MAGIC=50
TimeFRAME1Mn=1
if (CCI[TimeFrame1mn*MAGIC](typicalPrice)>=0) then
magic1mn=Low[1]-AverageTrueRange[5](close)
endif
if (CCI[TimeFrame1mn*MAGIC](typicalPrice)<0) then
magic1mn=High[1]+AverageTrueRange[5](close)
endif
if (CCI[TimeFrame1mn*MAGIC](typicalPrice)>=0 and magic1mn<magic1mn[1]) then
magic1mn=magic1mn[1]
endif
if (CCI[TimeFrame1mn*MAGIC](typicalPrice)<0 and magic1mn>magic1mn[1]) then
magic1mn=magic1mn[1]
endif
//TimeFRAME= 5mn
TimeFRAME5Mn=5
if (CCI[TimeFrame5mn*MAGIC](typicalPrice)>=0) then
magic5mn=Low[1]-AverageTrueRange[5](close)
endif
if (CCI[TimeFrame5mn*MAGIC](typicalPrice)<0) then
magic5mn=High[1]+AverageTrueRange[5](close)
endif
if (CCI[TimeFrame5mn*MAGIC](typicalPrice)>=0 and magic5mn<magic5mn[1]) then
magic5mn=magic5mn[1]
endif
if (CCI[TimeFrame5mn*MAGIC](typicalPrice)<0 and magic5mn>magic5mn[1]) then
magic5mn=magic5mn[1]
endif
return magic1mn as "Magic1mn Rouge/Vert",magic5mn as "Magic5mn rouge/vert",ExponentialAverage(LinearRegression[MAGIC](close))+ slippageMM as "MM vert/rouge slippageMM as "
graphe j’ai donc fait ce code là mais rien a voir avec le 5 mn en comparaison ca marche pas
merci
katsParticipant
Junior
j avais essayer ca aussi mais ca ne marche pas non plus
if (CCI[1250](typicalPrice)>=0) then
magic=Low[5]-AverageTrueRange[5](close)
endif
if (CCI[1250](typicalPrice)<0) then
magic=High[5]+AverageTrueRange[5](close)
endif
if (CCI[1250](typicalPrice)>=0 and magic<magic[5]) then
magic=magic[5]
endif
if (CCI[1250](typicalPrice)<0 and magic>magic[5]) then
magic=magic[5]
endif
return magic
merci