Outros sites Medialivre
Caldeirão da Bolsa

Sistemas automáticos de Trading e Backtesting

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 EuroVerde » 5/2/2012 19:36

Quem disse?
Avatar do Utilizador
 
Mensagens: 4960
Registado: 29/11/2007 11:19

por ToshB » 4/8/2011 19:21

Sistemas baseados nos indicadores típicos nunca vão ser nada de especial, a não ser que se tenha sorte.

Os mercados são sistemas complexos não-lineares, para desenvolver uma estratégia automática de trading é preciso conhecer alguma matemática avançada.
É claro que para fazer trading manual não é preciso saber matemática, porque o cérebro consegue resolver equações muito complexas em tempo real!
First rule of central banking: When the ship starts to sink, central bankers must bail like hell.
Avatar do Utilizador
 
Mensagens: 382
Registado: 1/8/2009 18:09
Localização: Setúbal

por Supermann » 4/8/2011 18:41

Luis39 Escreveu:O metatrader é gratuito? eu consegui instalar, mas quando tento correr um dos EA indicados lá não aparecem as barrinhas a moverem-se e o tempo a passar, testando o EA...será que estou a fazer algo de errado?


Tens bom remédio.

Parece que há um seminario hoje da parte deles de sistemas de trading agora as 7 da tarde.
 
Mensagens: 1750
Registado: 18/12/2009 18:54
Localização: 16

por Luis39 » 3/8/2011 11:29

O metatrader é gratuito? eu consegui instalar, mas quando tento correr um dos EA indicados lá não aparecem as barrinhas a moverem-se e o tempo a passar, testando o EA...será que estou a fazer algo de errado?
 
Mensagens: 181
Registado: 11/1/2008 11:56

por Supermann » 2/8/2011 20:08

Sim eu é q me enganei... pensei que este era de crusamento mas não... é de preço sim senhor :)
 
Mensagens: 1750
Registado: 18/12/2009 18:54
Localização: 16

por tonirai » 2/8/2011 18:48

Já agora, Supermann, ao dar uma olhada pelo código, parece-me que não se trata de código para entrada segundo cruzamento de médias móveis;
É antes de entrada quando o preço cruza em fecho a média móvel... penso eu?

(Se calhar foi só confusão na forma de expressão - em vez de "preço cruzar média móvel", disseste "cruzamento de médias móveis")
Avatar do Utilizador
 
Mensagens: 1985
Registado: 19/4/2007 18:26
Localização: Cronologicamente... Paris/Resende/Gaia

por tonirai » 2/8/2011 16:57

Já não ligo à automatização há muito tempo, mas já há alguns anos, a net estava cheia desses EAs para MT4 (sobretudo dos mais simples, mas também mais elaborados) - é uma questão de procurar;

Para pessoas com algumas bases (mesmo que poucas, que era o meu caso), com algum estudo são uma boa base para desenvolver versões customizadas para aquilo que pretendemos.

Como disse, hoje já não busco a automatizão total, até porque passei a um tipo de trading completamente discricionário, mas ainda assim guardo e uso alguns EAs e scripts que trabalhei a meu gosto, para me assitirem na gestão dos trades (fechar ou abrir trades, mover Stops com determinados critérios, gerir com MM a saída total ou parcial de posições, etc).
Avatar do Utilizador
 
Mensagens: 1985
Registado: 19/4/2007 18:26
Localização: Cronologicamente... Paris/Resende/Gaia

por canteiro » 2/8/2011 15:39

Só quem tiver bases de C poderá aspirar ao entendimento :)
"Na mesma lagoa em que um cavalo mata a sede o outro morre afogado."

Ditado campestre

Imagem
Avatar do Utilizador
 
Mensagens: 319
Registado: 22/1/2011 17:59
Localização: 14

por Tridion » 2/8/2011 15:23

Simples só se for para o Superhomemm :wink:
Avatar do Utilizador
 
Mensagens: 1352
Registado: 13/5/2010 17:53
Localização: Lx

por Supermann » 2/8/2011 15:06

Sim isso é a coisa mais fácil.

É super simples.

Um sistema de trading automático pode ser tão simples ou tão complexo quanto o queiras estando dependente apenas da tua capacidade de traduzir as tuas regras, para programação.

:)

Esse que dás o exemplo é super simples.

Por exemplo, fica aqui o código para um cruzamento de médias móveis:

Código: Selecionar todos
#define MAGICMA  20050610

extern double Lots               = 0.1;
extern double MaximumRisk        = 0.02;
extern double DecreaseFactor     = 3;
extern double MovingPeriod       = 12;
extern double MovingShift        = 6;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//---- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//---- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         //----
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//---- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma) 
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma) 
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//----
  }
//+------------------------------------------------------------------+
 
Mensagens: 1750
Registado: 18/12/2009 18:54
Localização: 16

por Luis39 » 2/8/2011 10:15

Supermann Escreveu:Em Portugal têm o XTB.

Dados EOD como dados intraday tanto a Forex como Commodities e outros activos.

Permite backtesting e muitos mais coisas.


Nunca trabalhei com estes sistemas, mas se algum de vós já trabalhou gostaria de saber se é possível testar/programar o seguinte:
Comprar determinado activo qd um indicador atinge determinado valor(RSI sobe acima de 30 por exemplo), vender se RSI subir acima dos 70, caso o RSI não atinja os 70 e volte novamente abaixo de 30 e dp sobe, então comprar novamente. ou seja simular para o mesmo trade vários pontos de entrada /reforço. Isto é possível de fazer?
 
Mensagens: 181
Registado: 11/1/2008 11:56

por Supermann » 1/8/2011 17:21

Em Portugal têm o XTB.

Dados EOD como dados intraday tanto a Forex como Commodities e outros activos.

Permite backtesting e muitos mais coisas.
 
Mensagens: 1750
Registado: 18/12/2009 18:54
Localização: 16

por VirtuaGod » 1/8/2011 15:12

O Amibroker é bom e barato ;-) Podem testa-lo cerca de 30 dias antes de o comprar :-)
Artigos e estudos: Página repositório dos meus estudos e análises que vou fazendo. Regularmente actualizada. É costume pelo menos mais um estudo por semana. Inclui a análise e acompanhamento das carteiras 4 e 8Fundos.
Portfolio Analyser: Ferramenta para backtests de Fundos e ETFs Europeus

"We don’t need a crystal ball to be successful investors. However, investing as if you have one is almost guaranteed to lead to sub-par results." The Irrelevant Investor
Avatar do Utilizador
 
Mensagens: 5707
Registado: 20/11/2002 21:56
Localização: Porto

Re: Sistemas automáticos de Trading e Backtesting

por Luis39 » 1/8/2011 14:58

Guitar Bullish Escreveu:Viva Pessoal.

Gostava de saber se conhecem alguns programas (ou plataformas) com sistemas de backtesting ou até de sistemas automatizados de trading. (de preferencia gratuitos ou pouco dispendiosos)

Acho que será interessante lançar este tema para discussão.

Pela minha parte só tenho visto a nível nacional o XTB com o Metatrader 4.

E vocês?


Ola Guitar
Há uns dias tb coloquei um topico no Forum a solicitar exactamente o mesmo que tu...não tive grande feedback, no entanto tb estou bastante interessado neste tema. Já trabalhaste com o Metatrader 4? Tens alguma literatura sobre sistemas automatizados de trading?
 
Mensagens: 181
Registado: 11/1/2008 11:56

por Quico » 31/7/2011 16:42

O ProRealTime é gratuito, também faz back testing e é facílimo de programar. Queres melhor?
Não têm grandes facilidades de pós-processamento dos resultados do backtest mas... volto a sublinhar: é gratuito.
"People want to be told what to do so badly that they'll listen to anyone." - Don Draper, Mad Men
Avatar do Utilizador
 
Mensagens: 4688
Registado: 12/5/2004 19:52

Sistemas automáticos de Trading e Backtesting

por Guitar Bullish » 31/7/2011 15:46

Viva Pessoal.

Gostava de saber se conhecem alguns programas (ou plataformas) com sistemas de backtesting ou até de sistemas automatizados de trading. (de preferencia gratuitos ou pouco dispendiosos)

Acho que será interessante lançar este tema para discussão.

Pela minha parte só tenho visto a nível nacional o XTB com o Metatrader 4.

E vocês?
Clica no botão que diz: "Vender" antes de dizer que estás a ganhar muito...
Avatar do Utilizador
 
Mensagens: 4
Registado: 5/7/2011 0:53
Localização: 12


Quem está ligado:
Utilizadores a ver este Fórum: josehenry400, MP65 e 260 visitantes