|
|
| Sujet : possibilité programmation | |
bonjour
pourriez vous m'indiquer s'il est possible dans visualchart de calculer une variable partiellement en fonction de sa valeur qu'elle avait x bars avant
explication code tradestation pour x=5
myvalue=0.5*myvalue[5] + 0.5*Rsi(close,10)
j'ai réussi à faire seulement pour x=1 en suivant l'exemple du code de l'étude Heikin Ashi fournie (haCloseAnt=haOpen........)
merci pour toute réponse
Bonsoir,
Tu as programmé avec Visual basic ou la plateforme de VC ?
Cordialement
Fiz
pour FIZ
avec visual basic
mon projet est de traduire le Kase Permission Stochastic screen
de metastock vers visual chart
désolé mais je suis nul en VB.
perso j'utilise la plateforme de visualchart donc je peux t'aider si ce n'est pas trop complexe.
Donc en quoi consiste le KAse Permission Sto screen ?
Cordialement
FIz
ci dessous mon code metastock
il s'agit d'un stochastique lissé présentant moins de faux signaux (croisements )
stock14j:=((C-LLV(L,14))/(HHV(H,14)-LLV(L,14)))*100;
lissage1:=(0.5*(stock14j + Ref(PREV,-4)));
lissage2:=((Ref(PREV,-4)*2)+lissage1)/3;
Mov(Mov(lissage1,3,S),2,S);
Mov(Mov(lissage2,3,S),2,S);
la partie délicate c'est le lissage:
Ref(PREV,-4)) signifie valeur du lissage1 5 bars en arrière
idem pour lissage2
il y a un truc qui me gêne.
Si Ref(PREV,-4) correspond à lissage1 4 barres en arrière alors comment définir lissage1 ?
Je crois que c'est le problème que tu évoques.
J'avais déjà rencontré ce problème avec les filtres Laguerre.
C'est pourquoi je n'avais été plus loin.
Je regarde ce que je peux faire mais je te garantis rien.
Je vais essayer lissage1:=(0.5*(stock14j + lissage1(-4))
Fiz
ce soir tu auras ton indicateur
Fiz
c'est fait tu peux m'envoyer ton adresse mail dans ma BAL
Fiz
fiz
concernant ta déduction ci-dessus c'est bien ça le problème.
en easy langage tradestation on le résoud de façon suivante:
if currentbar <=1 then lissage1=stock14j
else
lissage1=0.5*lissage1[5] + 0.5*stock14j
[5]= 5 bars en arrière
interprétation:
on initialise lissage1 à la valeur stock14j pour bar n°1
pour le bar n°2
lissage1 prendra la valeur 0.5*lissage1[1] + 0.5*stock14j
et ainsi de suite jusqu'au bar N°6 ou on pourra prendre la valeur 5 bars avant de lissage1
tu verras ce soir.
j'ai simplement fait :
lissage1 = 0.5*(stoch14+stoch14(4))
Cela semble fonctionner car j'ai au préalable fait stoch(4) et obtenu la valeur 5 unités en arrière.
Fiz
édité le : 16-05-2007 17:21:55
Razepy,
C'est dans ta BAL.
Fiz
pour FIZ
voir BAL
Bonjour.
Voila l´exemple en vba pour calculer une variable partiellement en fonction de sa valeur qu'elle avait x bars avant
J´espère que ceci pourra vous aider tous les deux.
Public Sub Indicator_OnInitCalculate()
With APP
RSIData = .GetIndicatorIdentifier(RSI, Data, RSIDataPeriod, 70, 30)
'
ReDim ArrayValue(Length): ReDim AV2(Length)
'
Countarray = 0: LastBar = -1
.StartBar = 0
End With
End Sub
Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Dim RSI#, MyValue#, i&
RSI = .GetIndicatorValue(RSIData, 0, 1)
If RSI = NullValue Then Exit Sub
'--
If LastBar <> Bar Then
AV2 = ArrayValue: CA2 = Countarray
Else
ArrayValue = AV2: Countarray = CA2
End If
'-
If Countarray < Length Then
ArrayValue(Countarray) = 0.5 * RSI
MyValue = ArrayValue(Countarray)
Else
i = Countarray Mod Length '
MyValue = 0.5 * ArrayValue(i) + 0.5 * RSI
ArrayValue(i) = MyValue
End If
'--
Countarray = Countarray + 1
.SetIndicatorValue MyValue, 1
LastBar = Bar
End With
End Sub
Cordialement.Mikel.
mikel
un grand merci pour ton bout de programme très astucieux qui m'a permis de résoudre mon problème et de construire mon indicateur
bravo pour ton professionnalisme
| Sujet : possibilité programmation | |
|