ESTRATEGIAS
53
‘¡¡ Summary
‘Classification: Classics
‘Summary !!
‘¡¡ Parameters
DimTD_REIPeriod As Integer ‘8
DimTD_UpperBand As Double ‘45
DimTD_LowerBand As Double ‘-45
‘Parameters !!
Option Explicit
Public APP As OscUserApp
Implements Indicator
Public Sub Indicator_OnInitCalculate()
With APP
.StartBar = TD_REIPeriod + 8
.SetLineName 1, “rei”
.SetLineName 2, “upband”
.SetLineName 3, “dnband”
End With
End Sub
Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Dim Value As Double
Dim AbsValue As Double
Dim i As Integer
Dim CountValue As Double
Dim CountAbsValue As Double
DimTDREIval As Double
For i = TD_REIPeriod - 1 To 0 Step -1
If ((.High(i) >= .Low(i + 5) Or .High(i) >= .Low(i + 6)) _
And (.Low(i) <= .High(i + 5) Or .Low(i) <= .High(i + 6))) Then
Value = .High(i) - .High(i + 2) + .Low(i) - .Low(i + 2)
AbsValue = Abs(.High(i) - .High(i + 2)) + Abs(.Low(i) - .Low(i + 2))
ElseIf ((.High(i + 2) >= .Close(i + 7) Or .High(i + 2) >= .Close(i + 8)) _
And (.Low(i + 2) <= .Close(i + 7) Or .Low(i + 2) <= .Close(i + 8))) Then
Value = .High(i) - .High(i + 2) + .Low(i) - .Low(i + 2)
AbsValue = Abs(.High(i) - .High(i + 2)) + Abs(.Low(i) - .Low(i + 2))
Else
Value = 0
AbsValue = 0
End If
CountValue = CountValue + Value
CountAbsValue = CountAbsValue + AbsValue
Next i
If CountAbsValue <> 0 Then
TDREIval = 100 * CountValue / CountAbsValue
End If
Dim ippos As IndicatorPosition
If (TDREIval > TD_UpperBand) Then
ippos = ipBull
ElseIf (TDREIval < TD_LowerBand) Then
ippos = ipBear
Else
ippos = ipNeutral
End If
.SetIndicatorValue TDREIval, 1, 0, ippos
.SetIndicatorValue TD_UpperBand, 2, 0, ippos
.SetIndicatorValue TD_LowerBand, 3, 0, ippos
.SetBarColor 0, 2, RGB(0, 0, 255)
.SetBarColor 0, 3, RGB(255, 0, 0)
End With
End Sub
Public Sub Indicator_OnSetParameters(ParamArray ParamList() As Variant)
‘¡¡ Parameters initialization
‘Parameters initialization !!
End Sub
Public Sub Indicator_OnCalculateRange(ByVal StartBar As Long, ByVal Fi-
nalBar As Long)
Dim i As Long
i = APP.StartBar
If StartBar > i Then
i = StartBar
End If
While Not APP.ShouldTerminate And i <= FinalBar
APP.CurrentBar = i
Indicator_OnCalculateBar i
i = i + 1
Wend
End Sub
Private Sub OscUserAppInstance_OnConnection(ByVal Application As Os-
cUserApp, ByVal MTDllInst As Object, Custom() As Variant)
Set APP = Application
End Sub
Tom de Mark´s Range Expansion Index
Un ejemplo de esta idea lo tenemos en el gráfico 3, so-
bre el futuro continuo diario del Platino. El punto A muestra
un ejemplo claro de lo que se pretende: el TEMA da señal
alcista, esperamos unas barras a que evolucione el precio.
La pendiente lo confirma y por tanto se da por buena la se-
ñal. Los casos de los puntos B y C son similares. En el punto
E observamos un caso en el que la señal aparece estando el
movimiento ya debilitado. Para evitar estos casos, se podría
optar por incorporar otros criterios de búsqueda, incluyen-
do algún indicador de fuerza.
La regla de desestimar las zonas de extremo agota-
miento llevan a que la señal bajista del punto G se pier-
da. Seguidamente, se produce una fase de distribución
descendente en el que encontramos dos señales alcistas
(puntos H e I). En estos casos, el uso de la Pendiente de
Regresión Porcentual es determinante, ya que informa
claramente de que la dirección del precio sigue siendo
bajista y de que dichas señales carecen de fuerza sufi-
ciente. De ahí que no veamos ninguna señal más hasta el
punto K, momento en el que, ahora sí, la pendiente con-
firma el cambio de dirección alcista.
Conclusiones.
A través de éste artículo hemos analizado una serie de
señales de trading basadas en las ideas originales de De-
Mark. Gracias a autores como él, podemos en la actua-
lidad avanzar en la investigación de nuevas técnicas de
operativa. Por tanto, le dedicamos este artículo acabando
con un consejo del propio DeMark para los inversores
novatos: “Lee mucho y prueba muchas estrategias. No
hagas trading hasta que hayas creado una técnica que
pueda considerarse objetiva.”
«