Outros sites Medialivre
Caldeirão da Bolsa

Ajuda, linguagem Metastock

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 PLPINTO » 16/4/2004 17:53

Utilizando 8,3,3 num grafico de 10mn os resultados são razoavelmente bons, muito rapido embora não apanhe os picos, mas tambem nunca vi nenhum indicador que os apanhe bem!
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por PLPINTO » 16/4/2004 9:01

Breakmouv
Continua a aparecer mas isto é apenas um inconveniente que não impede o sistema de funcionar pois o sistema não fecha uma ordem que não exista. è apenas uns apitos a mais :lol:

Um muito obrigado pela ajuda pois foi graças a ela que consegui criar uns stops que funcionam e que provavelmente ainda me vão fazer geito em outras ocasiões.
Anexos
Não.PNG
Não.PNG (20.32 KiB) Visualizado 470 vezes
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por breakmov » 16/4/2004 1:16

..correcçao :mrgreen:

A6:=Cross((A5-0.0020),L);
A7:=Cross(H,(A5+0.0020));

breakmov
breakmov
 

por Visitante » 16/4/2004 1:13

....PLPINTO, o problema que referiste aparece devido a existir duas variaveis independentes para criar os stops longos e os stops curtos......é natural que a variavel A1 mantenha o ultimo nivel de stop ate criar o proximo sinal longo, mesmo que pelo meio exista trades curtos.....o mesmo para a variavel que define o nivel de stop curto.
O que se pode fazer,na minha opiniao, é fundir as duas variaveis A1 e A2 numa unica que actualize o nivel stop comforme o ultimo sinal dado.....aqui vai uma possivel abordagem:




Dst:= vt_DoubleStochastic(lg,3,E );

Long:= cross(Dst,30);
Short:= cross(70,Dst);

A1:= If( Long=1 ,C,PREV);
A2:= If( Short=1 ,C,PREV);

A3:=ValueWhen(1,A1>0,A1);
A4:=ValueWhen(1,A2>0,A2);

A5:=If(Long=1,A3,If( Short=1 ,A4,PREV));

A6:=Cross((A5-100),L);
A7:=Cross(H,(A5+100));

breakmov
Visitante
 

Software CMS

por Zimix » 15/4/2004 23:54

Ok, obrigado pelo esclarecimento.
Assim à primeira vista parece ser bom, pelo menos em termos de aparência! :-)

Vou dar uma espreitadela no site deles; obrigado uma vez mais.

Bons negócios,


Zimix
Avatar do Utilizador
 
Mensagens: 324
Registado: 5/11/2002 1:37
Localização: Guarda

por PLPINTO » 15/4/2004 18:26

Não, é o software da CMS.
Mas a linguagem é a mesma do Metastock. Apenas é preciso fazer pequenas alterações nos outputs.
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

PLPINTO,

por Zimix » 15/4/2004 18:18

Que programa é esse onde está a implementar esse sistema mecânico?! É o Metastock 9?! Será o Tradestation pois parece-me ver a letra T embebida no icon das janelas que apresentou?!

Obrigado e boa programação,

Zimix
Avatar do Utilizador
 
Mensagens: 324
Registado: 5/11/2002 1:37
Localização: Guarda

por PLPINTO » 15/4/2004 16:37

Está a melhorar :lol: , só não consigo que quando se está short não apareça o stop do ultimo Long e vice versa.
Será que não é possivel ou sou eu que não encontro a solução?

Dst:= vt_DoubleStochastic(lg,3,E );

Long:= cross(Dst,30);
Short:= cross(70,Dst);


A1:= if( CROSS(Dst,30) ,c,prev);
A4:= if( CROSS(70,Dst) ,c,prev);

A2:=valuewhen(1,A1>0,A1);
A5:=valuewhen(1,A4>0,A4);

A3:= cross((A2-0.0020),L);
A6:= cross(H,(A5+0.0020));
Anexos
STOP 2.PNG
STOP 2.PNG (21.31 KiB) Visualizado 584 vezes
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por PLPINTO » 15/4/2004 15:24

Com esta formula já consigo que dê os stops correctos:

Dst:= vt_DoubleStochastic(lg,3,E );

Long:= cross(Dst,30);
Short:= cross(70,Dst);


A1:= if( CROSS(Dst,30) ,c,prev);
A2:=valuewhen(1,A1>0,A1);
A3:=if(L<(A2-0.0020),-1,0);

A1:= if( CROSS(70,Dst) ,c,prev);
A2:=valuewhen(1,A1>0,A1);
A6:=if(H>(A2+0.0020),-1,0);



Só que o aparecimento de Short não anula os stops do long e vice versa. Embora eu ache que em automatico o sistema não os executa se puser o sistema a chamar por mim ele nunca mais se cala :lol:
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por PLPINTO » 15/4/2004 14:32

Encurtando o stoppara 10 pips fica assim:
Anexos
Stop.PNG
Stop.PNG (37.22 KiB) Visualizado 630 vezes
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por PLPINTO » 15/4/2004 14:23

Sim, é dentro desse genero, Breakmov.

Alterei a formula para o Double stoch e ficou:

Dst:= vt_DoubleStochastic(lg,3,E );

Long:= cross(Dst,30);
Short:= cross(70,Dst);


A1:= if( CROSS(Dst,30) ,c,prev);
A2:=valuewhen(1,A1>0,A1);
A3:=if(L<(A2-0.0020),-1,0);


mas aparece o stop quando estou curto em vez de longo. Estou mesmo baralhado!
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por breakmov » 15/4/2004 14:03

oiii PLPINTO,
o problema que te apareceu deve-se ao modo como funciona a funçao cross....esta funçao so devolve o valor 1 na barra onde se deu o cross. Devido a este promenor é necessario criar um procedimento que te registe o valor de entrada enquanto nao ocorrer outro cross...aqui fica um possivel caminho:


A1:= if( CROSS(C,mov(C,10,S)) ,c,prev);
A2:=valuewhen(1,A1>0,A1);
A3:=if(L<(A2-0.0020),-1,0);

a funçao valuewhen apenas foi aplicada para nao te aparecer o valor zero enquanto nao existir o 1º cross.......o valor 0.0020 foi usado apenas como exemplo tendo em conta o cross eur/usd....


breakmov
breakmov
 

por PLPINTO » 15/4/2004 13:59

Já tentei muitas maneiras mas não consigo que o sistema reconheça o Long e o Short e não consigo colocar nenhum stop que seja viavel.
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por Ertai » 15/4/2004 13:03

Então deverá ser mesmo para usar o IF

Se não está a funcionar é porque algo que fizeste está errado. Pois o IF é mesmo para isso

Do tipo:

IF (Long:= CROSS(C,mov(C,10,S); ) {
"Função de Saída com movimento de 20pips em sentido contrário" }

ou

IF (Long:= CROSS(C,mov(C,10,S); ) THEN {
"Função de Saída com movimento de 20pips em sentido contrário" }

Será por isso algo do género, uma vez que não conheço a linguagem metastock
Avatar do Utilizador
 
Mensagens: 2140
Registado: 11/5/2003 12:11
Localização: Lisboa

por PLPINTO » 15/4/2004 13:00

Existe o IF

If(long,aa,dd); (esta formula diria que se long é verdadeiro seria aa, se fosse falso dd) mas não acontece nada!
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa

por Ertai » 15/4/2004 12:54

Algum equivalente ao IF na programação, mas na liguagem do Metastock..

Eu percebo bastante de programação, mas quanto À linguagem do Meta nunca tive pachorra... a ver se um dia vejo isso :wink:
Avatar do Utilizador
 
Mensagens: 2140
Registado: 11/5/2003 12:11
Localização: Lisboa

Ajuda, linguagem Metastock

por PLPINTO » 15/4/2004 12:50

Imaginem que eu dou uma ordem de compra assim:

Long:= CROSS(C,mov(C,10,S);

e queria dár uma ordem de stop se o preço se movimenta-se 20 pips em sentido contrario.

Alguem me sabe dizer qual a formula para que a ordem de stop só seja activada se o Long for verdadeiro?

Desde já agradeço qualquer ajuda.
Avatar do Utilizador
 
Mensagens: 1356
Registado: 22/5/2003 15:08
Localização: Odivelas / Lisboa


Quem está ligado:
Utilizadores a ver este Fórum: Google Adsense [Bot], Google Feedfetcher, iniciado1, macau5m e 89 visitantes