Olá, Visitante. Por favor entre ou registe-se se ainda não for membro.

Entrar com nome de utilizador, password e duração da sessão
 

Autor Tópico: Discussão sobre 50% ao ano  (Lida 19880 vezes)

deMelo

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 12690
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #140 em: 2018-06-10 23:56:29 »
Muito boa atitude RS!!
Parabens!
The Market is Rigged. Always.

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #141 em: 2018-06-11 08:00:54 »

Esta parte no codigo, que eu uso sempre: SetOption ("allowsamebarexit",False);

Faz com que quando isso acontece apenas processo o sinal de entrada e não o de saida. Se no dia seguinte der sinal saida, sai, se não der, mantem.
Got it. Vou testar a ver se dá algo semelhante aos teus resultados e depois deixo em Easy Language para o caso de alguém querer.

Assim de cabeça dá-me a impressão que todos estes sinais "duplos" (no mesmo dia), serão quase sempre negócios de apenas um dia, com entrada hoje e saída amanhã porque, como as bandas são de 60 períodos, se hoje está >90%, amanhã também estará, com elevada probabilidade.

rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #142 em: 2018-06-11 08:28:34 »

Esta parte no codigo, que eu uso sempre: SetOption ("allowsamebarexit",False);

Faz com que quando isso acontece apenas processo o sinal de entrada e não o de saida. Se no dia seguinte der sinal saida, sai, se não der, mantem.
Got it. Vou testar a ver se dá algo semelhante aos teus resultados e depois deixo em Easy Language para o caso de alguém querer.

Assim de cabeça dá-me a impressão que todos estes sinais "duplos" (no mesmo dia), serão quase sempre negócios de apenas um dia, com entrada hoje e saída amanhã porque, como as bandas são de 60 períodos, se hoje está >90%, amanhã também estará, com elevada probabilidade.

Q se nao quiseres ter esses sinais podes usar uma regra que eu costumo usar, nao entrar caso haja tambem sinal saida. Por norma aumenta o average trade.... o net profit pode aumentar ou diminuir, depende do sistema.
« Última modificação: 2018-06-11 13:50:10 por rs_trader »
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #143 em: 2018-06-12 16:03:47 »
RS, no sistema do QQQ consideras a data inicial desde quando ?

Presumo que seja 1/1/1999 porque com a MA(300) o ano de 99 e os três primeiros anos de 2000 são apenas para fazer número, até a MA poder ser calculada e o sistema entrar em negociação em Abril 2000 ? É só para ver se replico os teus resultados em EL, de forma mais fidedigna possível.

Já agora, as tuas cotações são dividend adjusted ?

rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #144 em: 2018-06-12 20:53:24 »
RS, no sistema do QQQ consideras a data inicial desde quando ?

Presumo que seja 1/1/1999 porque com a MA(300) o ano de 99 e os três primeiros anos de 2000 são apenas para fazer número, até a MA poder ser calculada e o sistema entrar em negociação em Abril 2000 ? É só para ver se replico os teus resultados em EL, de forma mais fidedigna possível.

Já agora, as tuas cotações são dividend adjusted ?

Estou em bruxelas e nao consigo ver isso agora mas acho que e desde a inception date 10/03/1999.

As quotes sao do yahoo, ajustadas ao dividendo.
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #145 em: 2018-06-12 23:00:07 »
Ah, sim, o QQQ só vem de 99. O SPY é que é de 93.
Então é quase de certeza a inception porque começa a negociar em Abril ou Maio de 2000.
Vou fazer com as adjusted para ser igual.

Blaster

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 1649
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #146 em: 2018-06-16 00:03:20 »
RS, experimentei este último sistema, mas não me dá resultados, é necessário fazer o download de algo para além das cotações?

testei com o codigo que coloquei e deu. Tens nas definições long e short?

Tinha só long, mas já inclui o short, no entanto tenho o seguinte erro:

Error 701. Missing buy/sell variable assignments.
The formula that you are trying to backtest does not contain proper Buy and Sell rules. Buy and Sell rules should be written as assignments as shown below:


Buy = Cross( Close, MA( Close, 50 ) );
Sell = Cross( MA( Close, 50 ), Close ) );

Na economia tudo se compra.
A Good Year.

rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #147 em: 2018-06-16 00:09:59 »

Citar
SetTradeDelays(1,1,1,1); 
SetOption ("allowsamebarexit",false); 
SetOption("initialequity",10000); 
SetOption("MaxOpenPositions",1); 
SetPositionSize(100/1,spsPercentOfEquity);
SetOption("AccountMargin",50); 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//SYMBOLS: QQQ

// MAIN RULES


PricePattern1 = RSI(2)<5;
PricePattern2 = O>Ref(H,-1);

Sell_1 = C==HHV(C,3);
Sell_2 = (100*(C-BBandBot(C,60,2.5)) /(BBandTop(C,60,2.5)-BBandBot(C,60,2.5)))>90;

BullMarket = C > MA(C,300);
BearMarket = C < MA(C,300);
MarketState = Flip(Bullmarket,Bearmarket);


// BUY & SELL SIGNAL

Buy = (PricePattern1 AND MarketState == 0) OR (PricePattern2 AND MarketState == 1);
Sell = (Sell_1 AND MarketState == 0) OR (Sell_2 AND MarketState == 1);


// STOP LOSS
bars = 15;
ApplyStop( stopTypeNBar, stopModeBars, bars, True );


// BUY & SELL PRICE

BuyPrice = Open;
SellPrice = Open;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Blaster

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 1649
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #148 em: 2018-06-19 13:49:50 »
Sim, tinha copiado todo o código.

Também experimentei em alterar para o exemplo que eles davam

"Buy = Cross( Close, MA( Close, 50 ) );
Sell = Cross( MA( Close, 50 ), Close ) ); "

Mas dá o mesmo erro. É estranho. Tenho long e short positions a funcionar.
Na economia tudo se compra.
A Good Year.

rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #149 em: 2018-06-26 00:43:11 »
Ah, sim, o QQQ só vem de 99. O SPY é que é de 93.
Então é quase de certeza a inception porque começa a negociar em Abril ou Maio de 2000.
Vou fazer com as adjusted para ser igual.

Tentaste replicar em TS?
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #150 em: 2018-06-26 09:16:15 »
Ah, sim, o QQQ só vem de 99. O SPY é que é de 93.
Então é quase de certeza a inception porque começa a negociar em Abril ou Maio de 2000.
Vou fazer com as adjusted para ser igual.

Tentaste replicar em TS?
Sum, tanto um como o outro e deu-me mais ou menos os mesmos resultados anuais mas bastante diferentes mês a mês.
Pena que o Multicharts não tem um resumo mensal tão bom como o Amibroker.
Já posto aqui os resultados e o código para quem quiser.

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #151 em: 2018-06-26 11:08:58 »
Então vamos lá tentar replicar em EasyLanguage o 1º sistema do RS (é o long only sobre o QQQ)

O código AB é este:


SetTradeDelays(1,1,1,1); 
SetOption ("allowsamebarexit",false); 
SetOption("initialequity",10000); 
SetOption("MaxOpenPositions",1); 
SetPositionSize(100/1,spsPercentOfEquity);
SetOption("AccountMargin",50); 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//SYMBOLS: QQQ

// MAIN RULES


PricePattern1 = RSI(2)<5;
PricePattern2 = O>Ref(H,-1);

Sell_1 = C==HHV(C,3);
Sell_2 = (100*(C-BBandBot(C,60,2.5)) /(BBandTop(C,60,2.5)-BBandBot(C,60,2.5)))>90;

BullMarket = C > MA(C,300);
BearMarket = C < MA(C,300);
MarketState = Flip(Bullmarket,Bearmarket);


// BUY & SELL SIGNAL

Buy = (PricePattern1 AND MarketState == 0) OR (PricePattern2 AND MarketState == 1);
Sell = (Sell_1 AND MarketState == 0) OR (Sell_2 AND MarketState == 1);

// STOP LOSS
bars = 15;
ApplyStop( stopTypeNBar, stopModeBars, bars, True );


// BUY & SELL PRICE

BuyPrice = Open;
SellPrice = Open;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Os resultados do RS são estes:


Aqueles a que eu cheguei (aproveitei e já inclui as cotações de ontem) estão abaixo.

Overall não é muito diferente mas em termos anuais há algumas diferenças (embora a tendência seja aprox a mesma) e depois em termos mensais é que é bastante diferente. Infelizmente o Multicharts não tem um resumo mensal tão friendly como o AB por isso não consigo postar esse detalhe.
Acho que isto só se consegue reconciliar vendo os negócios, um a um, e tentando perceber quem fez o quê (322 trades meus vs 290 do RS - o meu começa na inception em 99 mas só começa a contabilizar quando há 301 barras para poder calcular a MA). Posso ter erros no código ou na própria BD (que também veio dividends adjusted do yahoo).

Em termos de comissão considerei 0.005/share e não coloquei máximo porque não consigo meter um X por acção no mínimo e uma % no máximo. Também considerei 0.003/share de slippage. Umas vezes pode ser mais, noutras menos.
Este detalhe é que me leva a perguntar se isto estará bem porque se tirar isso os resultados sobem muito.
RS, tu não consideraste slippage, certo ?


Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #152 em: 2018-06-26 11:10:48 »
E o código EL para quem quiser

Citar
inputs:      StartingEquity   ( 100000 ),
      RiskPerTradeperc   ( 100 );


variables:    BBPrice   ( 0 ),
      LengthBB   ( 60 ),
      NumberStdDesv   ( 2.5 ),
      upperBandBB   ( 0 ),
      lowerBandBB   ( 0 ),
      Pattern1   ( false ),
      Pattern2   ( false ),
      Sell_1      ( false ),
      Sell_2      ( false ),
      BullMarket   ( false ),
      BearMarket   ( false ),
      NumberShares  ( 0 ),
      StopLoss   ( 0 ),
      LongerMA   ( 300 );




if CurrentBar > LongerMA then begin

BBPrice = Close;


///// Calculo das bandas superiores e inferioes das BBs

upperBandBB = AverageFC( BBPrice, LengthBB ) + NumberStdDesv * StandardDev( BBPrice , LengthBB, 1 );
lowerBandBB = AverageFC( BBPrice, LengthBB ) - NumberStdDesv * StandardDev( BBPrice , LengthBB, 1 );

///// Fim do calculo


Pattern1 = RSI(c,2)<5;
Pattern2 = O > H[1];

Sell_1 = C = Highest(C,3);                  
Sell_2 = (C - lowerBandBB ) / (upperBandBB - lowerBandBB ) * 100 > 90;

BullMarket = C > AverageFC(c,LongerMA);
BearMarket = C < AverageFC(c,LongerMA);

NumberShares = absvalue ( (StartingEquity + NetProfit) * RiskPerTradeperc/100 ) / Close;


if MarketPosition = 1 then begin

   if (Sell_1 and BearMarket) or (Sell_2 and BullMarket) then Sell next bar on Open;   //Fecho de pos aberta

End;

if (Pattern1 and BearMarket ) or (Pattern2 and BullMarket) then Buy NumberShares shares next bar on Open;   //Compra

if barssinceentry = 15 then Sell this bar on close;         // Stop obrigatorio em 15 barras


end;


rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #153 em: 2018-06-26 11:52:02 »
Nao considerei slippage... e mesmo assim ja te da return anual de 15%.... a mim julgo que deu menos.
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #154 em: 2018-06-26 12:00:50 »
Se tirar a slippage é astronómico (e ainda por cima não tenho máx na comissão, só mínimo). Sendo assim, devo ter aqui um erro qualquer no código ou na própria BD.


rs_trader

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 3259
    • Ver Perfil
    • Algo Trading Strategies and Trading System Development and Evaluation.
Re: Discussão sobre 50% ao ano
« Responder #155 em: 2018-06-26 12:55:22 »
o que significa o 1 aqui?

 StandardDev( BBPrice , LengthBB, 1 );
Em memória do grande DeMelo: "PQP... gajo chato fdx."

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #156 em: 2018-06-26 13:18:32 »
o que significa o 1 aqui?

 StandardDev( BBPrice , LengthBB, 1 );
Significa 1 desvio padrão. Mas depois no cálculo das bandas ele multiplica isso por NumberStdDesv e esse está definido em 2.5.

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #157 em: 2018-06-26 15:35:57 »
Clarificação sobre isto em EL
if barssinceentry = 15 then Sell next bar on Open

A barra em que se compra é a barra zero
O dia seguinte à compra é 1
E por aí adiante.

Não sei se é o mesmo que o AB faz

Automek

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 30976
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #158 em: 2018-06-27 15:38:25 »
Clarificação sobre isto em EL
if barssinceentry = 15 then Sell next bar on Open

A barra em que se compra é a barra zero
O dia seguinte à compra é 1
E por aí adiante.

Não sei se é o mesmo que o AB faz

Para memória futura

Amibroker:
A barra em que se entra é a barra #1

bars = 15;
ApplyStop( stopTypeNBar, stopModeBars, bars, True );


Significa que na barra #15 dá como terminado o negócio e, portanto, sai no dia seguinte no Open.


O Multicharts considera a barra de entrada como #0
Portanto, para ser equivalente, tem de ser if barssinceentry = 14 then Sell next bar on Open





deMelo

  • Ordem dos Especialistas
  • Hero Member
  • *****
  • Mensagens: 12690
    • Ver Perfil
Re: Discussão sobre 50% ao ano
« Responder #159 em: 2018-07-01 18:28:10 »
Ficarei eu burro, quando vir 2 ou 3 a abandonarem este fórum, depois de estarem aqui a afinar o que se tem discutido...

Saberei que ficaram ricos num instante!  ;D ;D ;D ;D ;D
The Market is Rigged. Always.