Esta 4ª parte diz respeito à estrutura da linguagem de programação da 2ª fórmula do sistema de trading aqui apresentada e que diz respeito ao 2º quadro do “Template” abaixo apresentado.

Trata-se do verdadeiro sumo do sistema de criação dos vários osciladores do Dynamic Momentum Índex que compõem o corpo das funções do método e cujas regras foram explicitadas no artigo anterior.

Portanto, há que chamar de novo o “Indicator Builder” do Metastock e atribui-lhe o nome que sugiro:
Cem-Radar c/ Volume + Oscilador DMI

No corpo do texto destinado à programação deverão fazer o Copy / Paste dos seguintes comandos:

{Auxiliary function “RANGE160DMI”}
range160dmi:=
(
HHV(Mov(DMI(C),160,E),160) * 9
+
HHV(Mov(DMI(C),160,W),160) * 9
+
HHV(Mov(DMI(C),160,VOL),160) * 2
)
/ 20
-
(
LLV(Mov(DMI(C),160,E),160) * 9
+
LLV(Mov(DMI(C),160,W),160) * 9
+
LLV(Mov(DMI(C),160,VOL),160) * 2
)
/ 20
;

{Main function “OSC160DMI”}
osc160dmi:=
(
(
Mov(DMI(C),160,E) * 9
+
Mov(DMI(C),160,W) * 9
+
Mov(DMI(C),160,VOL) * 2
)
/ 20
-
(
LLV(Mov(DMI(C),160,E),160) * 9
+
LLV(Mov(DMI(C),160,W),160) * 9
+
LLV(Mov(DMI(C),160,VOL),160) * 2
)
/ 20
)
/ range160dmi * 200
-
100
;

{Print “OSC160DMI”}
osc160dmi;

{Auxiliary function “RANGE40DMI”}
range40dmi:=
(
HHV(Mov(DMI(C),40,E),40) * 9
+
HHV(Mov(DMI(C),40,W),40) * 9
+
HHV(Mov(DMI(C),40,VOL),40) * 2
)
/ 20
-
(
LLV(Mov(DMI(C),40,E),40) * 9
+
LLV(Mov(DMI(C),40,W),40) * 9
+
LLV(Mov(DMI(C),40,VOL),40) * 2
)
/ 20
;

{Main function “OSC40DMI”}
osc40dmi:=
(
(
Mov(DMI(C),40,E) * 9
+
Mov(DMI(C),40,W) * 9
+
Mov(DMI(C),40,VOL) * 2
)
/ 20
-
(
LLV(Mov(DMI(C),40,E),40) * 9
+
LLV(Mov(DMI(C),40,W),40) * 9
+
LLV(Mov(DMI(C),40,VOL),40) * 2
)
/ 20
)
/ range40dmi * 200
-
100
;

{Print “OSC40DMI”}
osc40dmi;

{Main function “AVGOSC40DMIOSC160DMI”}
avgosc40dmiosc160dmi:=
osc160dmi * 3 / 4
+
osc40dmi * 1 / 4
;

{Print “AVGOSC40DMIOSC160DMI”}
avgosc40dmiosc160dmi;

{Main function representing}
pk40dmi:=
Peak(1 ,osc40dmi ,0.1 )
;

{Main function representing}
th40dmi:=
Trough(1 ,osc40dmi ,0.1 )
;

{Print “PK40DMI”}
pk40dmi;

{Print “TH40DMI”}
th40dmi;

{Auxiliary function “RANGE15DMI”}
range15dmi:=
(
HHV(Mov(DMI(C),15,E),15) * 9
+
HHV(Mov(DMI(C),15,W),15) * 9
+
HHV(Mov(DMI(C),15,VOL),15) * 2
)
/ 20
-
( LLV(Mov(DMI(C),15,E),15) * 9
+
LLV(Mov(DMI(C),15,W),15) * 9
+
LLV(Mov(DMI(C),15,VOL),15) * 2
)
/ 20
;

{Main function “OSC15DMI”}
osc15dmi:=
(
(
Mov(DMI(C),15,E) * 9
+
Mov(DMI(C),15,W) * 9
+
Mov(DMI(C),15,VOL) * 2
)
/ 20
-
(
LLV(Mov(DMI(C),15,E),15) * 9
+
LLV(Mov(DMI(C),15,W),15) * 9
+
LLV(Mov(DMI(C),15,VOL),15) * 2
)
/ 20
)
/ range15dmi * 200
-
100
;

{Print “OSC15DMI”}
osc15dmi;

{Main function representing}
pk15dmi:=
Peak(1 ,osc15dmi ,0.1 )
;

{Main function representing}
th15dmi:=
Trough(1 ,osc15dmi ,0.1 )
;

{Print “PK15DMI”}
pk15dmi;

{Print “TH15DMI”}
th15dmi;



Bem, no final, quando fizerem o OK para confirmar a fórmula deste novo indicador criado irão reparar que quando fizerem um drag and drop, para o topo do gráfico e não para dentro dele, irá ser criado um novo quadro com uma data de linhas da mesma cor. Poderão mudar cada cor fazendo um click de selecção em cada linha e escolhendo depois em baixo do “Indicator Color” uma cor diferente para cada linha para as diferenciar umas das outras. Também a cor de fundo do gráfico pode ser alterada mediante um “right click” e a escolha do comando “Inner window”.

Carregando em qualquer das novas linhas do novo indicador com um “right click” aconselho vivamente a escolher o comando das “Properties” e adicionar uma linha horizontal com o valor de zero, uma fronteira importante!



Fim da 4ª parte.

Um abraço para todos,
Cem