Outros sites Medialivre
Caldeirão da Bolsa

Oscilador DMI (Parte IV)

Espaço dedicado a todo o tipo de troca de impressões sobre os mercados financeiros e ao que possa condicionar o desempenho dos mesmos.

por Cem » 28/5/2004 23:18

Obrigado pelas palavras encorajadoras, vai-se fazendo o que se pode no pouco tempo que vou tendo disponível.
Chamo no entanto a atenção que não há nenhum sistema milagreiro, este lá terá umas virtudes mas tem também defeitos, cada um lá saberá como e em que condições quererá adoptar algo de semelhante...
Em relação a algumas dúvidas surgidas:
- vm : vou esclarecer isso na próxima mensagem, mas posso acrescentar que as ordens, excepto as que impliquem uso de stops, são para ser transmitidas na abertura da sessão seguinte à da ocorrência do sinal.
- JN e JAS : sugiro a utilização de cores semelhantes às que uso no quadro do meio, da forma como explico no texto da parte IV, a saber:

"AVGOSC40DMIOSC160DMI" : preto carregado;
"OSC160DMI" : verde escuro carregado;
"OSC40DMI" : violeta carregado;
"OSC15DMI" : azul claro carregado;
"PK40DMI" : verde claro fino;
"TH40DMI" : rosa fino;
"PK15DMI" : verde escuro fino;
"TH15DMI" : vermelho fino;

Um abraço e bom fim de semana a todos,
Cem
 
Mensagens: 715
Registado: 18/4/2003 1:58

Re

por JAS » 28/5/2004 22:05

olá Cem!
Podes indicar a correspondência de cores que usas?
(para facilitar a compreensão do gráfico do Cem-radar c/volume)

Um grande abraço,
JAS
Avatar do Utilizador
 
Mensagens: 6499
Registado: 5/11/2002 0:05
Localização: Lisboa

por vm » 28/5/2004 9:30

Cem,
N sei se irá explicar esta minha duvida na proxima apresentação, mas como é q dá as ordens de entrada? é durante a sessão ou no inicio da sessao seguinte a ter sido gerada a compra pelo sistema? Quantos contratos é q aloca, ou seja, como é q faz o money management?
N sei se já respondeu a alguma destas minhas duvidas ou se a respostas ainda virá num topico futuro.
Mais uma vez, muito obrigado pela partilha. N há palavras para descrever tal generosidade.

Cmp,
VM
 
Mensagens: 888
Registado: 5/11/2002 10:56

por JN » 28/5/2004 8:43

e quando se tenta mudar as cores dos indicadores? não ha forma de por cada um da sua cor. Como resolver este problema?
Um abraço
JN
Avatar do Utilizador
 
Mensagens: 770
Registado: 11/11/2002 17:41
Localização: Estoril

por otis » 28/5/2004 8:00

Obrigado, Nuno Faustino.
Funcionou! :-)
 
Mensagens: 65
Registado: 12/11/2002 0:38

por nunofaustino » 28/5/2004 0:10

isso tb aconteceu comigo...

deixo aqui o texto que eu utilizei (apaguei uns enters até conseguir introduzir a fórmula)...

Um abraço
Nunofaustino


{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;
Pluricanal... não obrigado. Serviço péssimo e enganador!!!
Avatar do Utilizador
 
Mensagens: 5157
Registado: 5/11/2002 5:10
Localização: Portugal

por otis » 28/5/2004 0:04

Caro CEM,
quando tento fazer o copy/paste da formula dá-me a seguinte mensagem de erro:

"Unable to paste clipboard contents because there is not space left in the formula".

Alguma sugestão?
 
Mensagens: 65
Registado: 12/11/2002 0:38

por nunofaustino » 27/5/2004 23:17

Obrigado pelas explicações...

Fico à espera da Parte V para testar este sistema nos históricos que aqui tenho :).

Entretanto vou tentando perceber se é possível dizer ao Meta para desenhar cada uma das linhas com cores diferentes :)...

Um abraço
Nunofaustino
Pluricanal... não obrigado. Serviço péssimo e enganador!!!
Avatar do Utilizador
 
Mensagens: 5157
Registado: 5/11/2002 5:10
Localização: Portugal

por Cem » 27/5/2004 22:44

Obrigado a todos vocês pelas palvras tão elogiosas que obviamente não mereço. Bem hajam!
Em relação às perguntas ou dúvidas do Nuno Faustino devo acrescentar que a escolha da relação 160 / 40 / 15 é uma antiga relação de indicadores que em testes efectuados durante a década de 90 resultou de forma muito satisfatória. Não houve no presente qualquer optimização de pesquisa mas acredito que possa haver relações mais rentáveis.
Os testes que fiz indicam-me que este indicador funciona melhor em índices do que em acções, como regra geral quanto melhor for a liquidez do activo melhor será o futuro potencial de retorno dsete sistema.
Posso também acrescentar que quanto maior a volatilidade maior será a rentabilidade, neste caso volatilidade significa maior afastamento em relação à média e portanto mais tendencial o seu comportamento. Este sistema, sendo particularmente seguidor de tendências dominantes, dá-se bem com essa configuração.
Para activos onde não consigo descortinar o volume o sistema perde um pouco de efectividade na sua relação profit / loss.
Para tentar de forma aparente ultrapassar a questão do volume e usar a fórmula no Forex, sugiro que na coluna de volumes da base de dados do cross de divisas em estudo se aplique em cada sessão um valor sempre uniforme e diferente de zero, 1 por exemplo.
Aqui fica abaixo o panorama actual do EURUSD dado por este sistema "Oscilador DMI". Infelizmente não disponho de uma base extensa neste caso. De acordo com o sistema, visto que o indicador do quadro de cima retorna um valor nulo, o EuroDollar tem estado neutro desde 29 de Abril para cá.
Um abraço a todos,
Cem
Anexos
EURUSD040527.png
EURUSD040527.png (16.64 KiB) Visualizado 1050 vezes
 
Mensagens: 715
Registado: 18/4/2003 1:58

por Visitante » 27/5/2004 22:05

Cem,
Muito obrigado pela partilha. N percebo nada de programação de Meta, mas prometo nos proximos dias explorar este seu post ao maximo e tirar partido da sua oferta generosa para todos os investidores particulares.
Mais uma vez o meu muito obrigado, pelas suas várias, excelentes partilhas com todos nós e a quem tanto tem ensinado.
Espero um dia ver um livro seu nas bancas e terei todo o gosto em o ler :-)
Só uma pessoa com um bom coração como vc é que partilha os seus estudos e metodos conosco.
Bem haja,
VM
Visitante
 

por nunofaustino » 27/5/2004 21:34

Olá Cem...

este fdsemana vou passar algumas horas a olhar para este sistema e tentar perceber exactamente qual era a tua ideia qdo fizeste este sistema...

No entanto já tenho umas questões...

a primeira é saber o porquê das médias serem de 160 e 40. Alguma razão em particular? Foras as que te deram melhores resultados nas optimizações?

A segunda é saber se este sistema funciona melhor em acções individuais ou em índices. E já agora se os resultados variam consoante a volatilidade dos activos (se funciona melhor em activos mais voláteis ou nem por isso).

A terceira é saber como é que aplicas este sistema ao FOREX (que não tem o indicador de volume)...

Um abraço e fico à espera pela parte V :)
Nunofaustino

P.S. JN, eu n utilizo o wealth lab, mas se o sistema for publicado na S&C eles lá indicam as fórmulas para meta, WLab e tradestation... por isso, no pior dos casos nessa altura vais ter a linguagem à tua disposição...
Pluricanal... não obrigado. Serviço péssimo e enganador!!!
Avatar do Utilizador
 
Mensagens: 5157
Registado: 5/11/2002 5:10
Localização: Portugal

por JN » 27/5/2004 21:16

É realmente fora do comum. O comum é oferecer um presunto a cheirar e depois tentar vender o porco.
Parabéns Cem, pelo facto de partilhar connosco, desinteressadamente um tão vasto conhecimento.
Um grande abraço.

PS. já agora desafio outra alma caridosa a traduzir isto para a linguagem sript do WLD.
Um abraço
JN
Avatar do Utilizador
 
Mensagens: 770
Registado: 11/11/2002 17:41
Localização: Estoril

Oscilador DMI (Parte IV)

por Cem » 27/5/2004 19:52

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!

Fica um novo gráfico do Euro Stoxx para exemplificar e servir como guia para sugestão de verificação.

Fim da 4ª parte.

Um abraço para todos,
Cem
Anexos
DEX040526.png
DEX040526.png (28.86 KiB) Visualizado 1228 vezes
 
Mensagens: 715
Registado: 18/4/2003 1:58