Processo de Desenvolvimento do Sistema Ubzen - página 4

 
sakis:


estou interessado em ambos os sistemas que ele deve vender quando o mercado mudar de direção

Se você fizer um simples cruzamento entre 3WLMA e 100SMA tabela de 30 minutos EUR/USD tp 150pips e sair quando cruzar feliz não SL você vai acabar com extremo

sistema rentável que eu uso por algum tempo olhar os resultados e escrever-me de volta com 13% de drawndowm

Este sistema (cruzamento 3LWMA 100SMA) não funciona em EURUSD H1,H4 e gráfico diário
 
zzuegg:
Este sistema (cruzamento 3LWMA 100SMA) não funciona no EURUSD H1,H4 e no gráfico diário

oi zzuegg eu sei que funciona em um gráfico de 30min e funciona apenas em euro min gráfico apenas coloca o sistema em seu próprio sistema com out macd
 

sakis:

hi zzuegg i know that,

funciona em tabela de 30min e funciona somente em euro

apenas colocar o sistema em funcionamento com o MacD
 
sakis:


Algumas vezes o sistema funciona melhor no comércio ao vivo do que no automático por causa do olho humano que nunca se entra em uma consolidação antes do 6º tuch

do canal e antes de um empurrão feliz também

Como você nunca faz um movimento de contra-tendência antes de ondas sobrepostas, dobradas por picos de sobreposição de canais.

também você toma uma breackout quando feliz em um 3o ou 4o movimento em um curto período de 1 ou 2 dias e valores altos de tick porque isso significa que os preços estão em mãos fortes

por isso precisamos de filtros para governar este olho humano

 

Ok, aqui está o período ruim ao qual eu estava me referindo. Agora, vou fazer isto ao contrário, um ano de cada vez. 2009, 2008, etc.

Aqui estão os resultados anuais:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8,79____Rel-DD= 8,79____Net_Profit= -23____Factor=0,99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Um par de observações.

1) O sistema tende a perder em uma fila em vez de aleatoriamente na maioria das vezes. O Z-Score do artigo pode ajudar com isto.

Isto ajuda a ressaltar o fato de que os comerciantes profissionais buscam 20-30% de retorno por ano.

 

Por enquanto, só posso voltar a 2005 porque estou usando os dados da Fxdd encontrados aqui. A razão pela qual estou usando estes dados é porque a Fxdd fecha para o fim de semana, assim como meu corretor e tem as lacunas do fim de semana por padrão. Além disso, suas configurações de tempo estão mais próximas das do meu corretor. Posso testar os dados de 2000-2005 daqui se eu tiver tempo. A abertura da semana deles começa na quarta-feira e eles correm 6 dias por semana.

Tho, o único período que vi visualmente é o período janeiro-março de 2010, Meu melhor palpite é que este sistema está perdendo de maneira seqüencial porque está em Faixas de Variação Estreitas ou Muito Voláteis. Mas isso só se aplica melhor a 2008, e mesmo que você tenha experiência limitada olhando para os gráficos, você poderia adivinhar que ele pode ter tido algo a ver com a Crise Financeira Global e os mercados podem ter se movido mais temerosos naquela época.

Então, o que fazer agora?

-Aceitar resultados (como ter um ano perdedor é bom), calcular nossa Kelly e não ser ganancioso?

-Vamos avançar com mais análises estatísticas como Z-Score. Mas mesmo que eu tenha uma confirmação sobre a correlação entre as perdas, então o que fazer? Talvez eu ainda tenha que recorrer a outros métodos, como abaixo para filtrar dados.

-Olhar para isto em modo visual durante os períodos ruins e tentar evitar o que está matando isto? O inconveniente é que isto pode levar a um ajuste de curva ... se muito conhecimento passado evitando é usado apenas para fazer o back-test parecer bom.

-Aplique alguns filtros cegos como alcance, volatilidade, tempo, volume, etc.? O inconveniente aqui é que os filtros limitam o número de negócios. Exemplo: o comércio de 1-direção de cada vez ou a manutenção de tendências longas é um filtro que a maioria das pessoas não percebe que está agindo como um filtro. Minha única preocupação com este sistema é que ele não está ativo o suficiente para transformar como $1.000 em felicidade dentro de um tempo razoável para fazer a maioria das pessoas felizes. Mas isso poderia ser superado adicionando outros sistemas estáveis à conta.

-Última mas minha opção menos favorita: Mudar o sistema e muito mais. Exemplo:

a) Scalp on Direction - Drawback precisaremos de dados de tick. Os princípios do Solid MM podem funcionar com tais add-ons?

b) Pirâmide na Direção - adicionar lotes conforme o preço vai nosso caminho - Drawback como fechamos os dados conforme vai contra nós?

c) Dólar custa Média -adicionado através de intervalos de tempo, mas antes da obtenção de lucro. Drawback, não há consideração de situação.

d) Grade - Acrescente o mesmo tamanho que a posição vai a uma distância fixa contra nós - Drawback, leva ao RRR para cima, e MM não consegue acompanhar.

e) Martingale/Progression (ha.ha.ha.ha) em qualquer um dos métodos acima. Para alguém que quer construir uma pequena conta em grande, isto pode parecer atraente. Drawback, definitivamente não pode seguir o MM adequado.

Estou pessoalmente inclinado a chamar isto pelo que é e seguir em frente com MM.

Vou gostar de saber o que os outros pensam, pois outros podem sentir "não, vou precisar de algo melhor".

 
ubzen:

Por enquanto, só posso voltar a 2005 porque estou usando os dados da Fxdd encontrados aqui. A razão pela qual estou usando estes dados é porque a Fxdd fecha para o fim de semana, assim como meu corretor e tem as lacunas do fim de semana por padrão. Além disso, suas configurações de tempo estão mais próximas das do meu corretor. Posso testar os dados de 2000-2005 daqui se eu tiver tempo. A abertura da semana deles começa na quarta-feira e eles correm 6 dias por semana.

Tho, o único período que vi visualmente é o período janeiro-março de 2010, Meu melhor palpite é que este sistema está perdendo de maneira seqüencial porque está em Faixas de Variação Estreitas ou Muito Voláteis. Mas isso só se aplica melhor a 2008, e mesmo que você tenha experiência limitada olhando para os gráficos, você poderia adivinhar que ele pode ter tido algo a ver com a Crise Financeira Global e os mercados podem ter se movido mais temerosos naquela época.

Então, o que fazer agora?

-Aceitar resultados (como ter um ano perdedor é bom), calcular nossa Kelly e não ser ganancioso?

-Vamos avançar com mais análises estatísticas como Z-Score. Mas mesmo que eu tenha uma confirmação sobre a correlação entre as perdas, então o que fazer? Talvez eu ainda tenha que recorrer a outros métodos, como abaixo para filtrar dados.

-Olhar para isto em modo visual durante os períodos ruins e tentar evitar o que está matando isto? O inconveniente é que isto pode levar a um ajuste de curva ... se muito conhecimento passado evitando é usado apenas para fazer o back-test parecer bom.

-Aplique alguns filtros cegos como alcance, volatilidade, tempo, volume, etc.? O inconveniente aqui é que os filtros limitam o número de negócios. Exemplo: o comércio de 1-direção de cada vez ou a manutenção de tendências longas é um filtro que a maioria das pessoas não percebe que está agindo como um filtro. Minha única preocupação com este sistema é que ele não está ativo o suficiente para transformar como $1.000 em felicidade dentro de um tempo razoável para fazer a maioria das pessoas felizes. Mas isso poderia ser superado adicionando outros sistemas estáveis à conta.

-Última mas minha opção menos favorita: Mudar o sistema e muito mais. Exemplo:

a) Scalp on Direction - Drawback precisaremos de dados de tick. Os princípios do Solid MM podem funcionar com tais add-ons?

b) Pirâmide na Direção - adicionar lotes conforme o preço vai nosso caminho - Drawback como fechamos os dados conforme vai contra nós?

c) Dólar custa Média -adicionado através de intervalos de tempo, mas antes da obtenção de lucro. Drawback, não há consideração de situação.

d) Grade - Acrescente o mesmo tamanho que a posição vai a uma distância fixa contra nós - Drawback, leva ao RRR para cima, e MM não consegue acompanhar.

e) Martingale/Progression (ha.ha.ha.ha) em qualquer um dos métodos acima. Para alguém que quer construir uma pequena conta em grande, isto pode parecer atraente. Drawback, definitivamente não pode seguir o MM adequado.

Estou pessoalmente inclinado a chamar isto pelo que é e seguir em frente com MM.

Vou gostar de saber o que os outros pensam, pois outros podem sentir "não, vou precisar de algo melhor".


Hi,

Pyramiding em direções parece poderoso, isto é exatamente o que minha versão faz. Eu piropo com os ofícios secundários.

Infelizmente o MAE nos mostra que o estabelecimento de médias pode não funcionar nesta estratégia, digo infelizmente porque gosto disso ;)


Mas outra questão que tenho é a de phillip.

Em seu script você está investigando o tempo entre OrderOpen e OrderClose, mas como você mostra no diagrama, você também deve investigar algum tempo antes e depois de abrir/fechar a fim de obter uma visão geral e um cálculo MAE/MFE correto? Estou no caminho errado?

 
zzuegg:

Mas outra pergunta que tenho é para Phillip.

Em seu script você está investigando o tempo entre OrderOpen e OrderClose, mas como você mostra no diagrama, você também deve investigar algum tempo antes e depois de abrir/fechar a fim de obter uma visão geral e um cálculo MAE/MFE correto? Estou no caminho errado?


Correto. Em uma base de comércio por comércio, você deve calcular se o tempo para o MAE ocorreu primeiro ou último em relação ao tempo para a MFE. Os negócios que têm MAE ocorrem antes da MFE são chamados de "Tipo 1". As transações que têm MFE ocorrem antes da MFE são chamadas de "Tipo 2".

Uma métrica fácil para expressar a capacidade de previsão de mercado de sua estratégia é simplesmente relacionar as ocorrências de negócios do Tipo 1 pelo número total de negócios e multiplicar por 100%. Digamos que você tenha 100 operações em um ano, 90 delas se tornam operações Tipo 1 e 10 delas são Tipo 2. Portanto, sua "taxa de previsão de sucesso" é 90/100 x 100% = 90%.

Estratégias com uma melhor taxa de previsão de mercado a curto prazo são mais desejáveis do que estratégias que não conseguem prever corretamente a direção do mercado a curto prazo. (por todas as razões óbvias)
 

Ok, entendi isso, mas você também deve permitir que o TimeToMAE seja realista para o optimista e positivo? Positivo tToMAE quando você entrou no ofício para cedo e negativo quando você entrou para tarde. É claro que a média dos valores pode resultar em uma estratégia perfeita, então você também tem que olhar para o StdDev do tToMAE.

Pelo que vejo, você não está permitindo tToMAE's negativos.

Ao introduzir as variáveis WatchBarsBeforeOpen e WatchBars AfterClose, acho que superei esta questão. Note que este ainda é um trabalho em andamento. tToMAE e tToMFE estão em minutos tão precisos quanto o cronograma usado permite.

Ainda não há análises incluídas, apenas dados brutos

//+------------------------------------------------------------------+
//|                                      AdvancedReport_03_04_11.mq4 |
//|                                                           zzuegg |
//|                                       when-money-makes-money.com |
//+------------------------------------------------------------------+
#property copyright "zzuegg"
#property link      "when-money-makes-money.com"

extern int WatchBarsBeforeOpen=10;
extern int WatchBarsAfterClose=10;
extern int WatchPeriod=0;

int ticket[];
int mae[];
int mae.time[];
int mfe[];
int mfe.time[];
int mfee[];
int profit[];
int missed[];

void reportTrade(int trade){
   OrderSelect(trade,SELECT_BY_TICKET,MODE_HISTORY);
   int start   =(iBarShift(OrderSymbol(),WatchPeriod,OrderOpenTime(),false) +WatchBarsBeforeOpen)+1;
   int end     =iBarShift(OrderSymbol(),WatchPeriod,OrderCloseTime(),false) -WatchBarsAfterClose;
   int highest =iHighest (OrderSymbol(),WatchPeriod,MODE_HIGH,(start-end)+1,end);
   int lowest  =iLowest  (OrderSymbol(),WatchPeriod,MODE_LOW,(start-end)+1,end);
  // Print(OrderTicket()+"  "+start+"  "+end+"  "+highest+"  "+lowest);
   ArrayResize(ticket,ArraySize(ticket)+1);   
   ArrayResize(mae,ArraySize(mae)+1);
   ArrayResize(mae.time,ArraySize(mae.time)+1);
   ArrayResize(mfe,ArraySize(mfe)+1);
   ArrayResize(mfe.time,ArraySize(mfe.time)+1);
   ArrayResize(mfee,ArraySize(mfee)+1);
   ArrayResize(profit,ArraySize(profit)+1);
   ArrayResize(missed,ArraySize(missed)+1);
   
   //Print(TimeMinute(OrderOpenTime())+"  "+TimeMinute(OrderCloseTime())+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,lowest))+"  "+TimeMinute(iTime(OrderSymbol(),WatchPeriod,highest)));
   ticket[ArraySize(ticket)-1]            =OrderTicket();
   switch(OrderType()){
      case OP_BUY:{
         mae[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         mfe[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         profit[ArraySize(profit)-1]      =(OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];
      break;
      }
      case OP_SELL:{
         mae[ArraySize(mae)-1]            =(iHigh(OrderSymbol(),WatchPeriod,highest)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         mae.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,highest))/60;
         mfe[ArraySize(mae)-1]            =(OrderOpenPrice()-iLow(OrderSymbol(),WatchPeriod,lowest))/MarketInfo(OrderSymbol(),MODE_POINT);
         mfe.time[ArraySize(mae.time)-1]  =(OrderOpenTime()-iTime(OrderSymbol(),WatchPeriod,lowest))/60;
         profit[ArraySize(profit)-1]      =(OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT);
         missed[ArraySize(missed)-1]      =(mae[ArraySize(mae)-1]+mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1]; 
         mfee[ArraySize(mfee)-1]          =(mfe[ArraySize(mfe)-1])-profit[ArraySize(profit)-1];      
      break;
      }
   }  
}

void writeCSV(string EA.name,string EA.parameter=""){
   int hnd=FileOpen(EA.name+"-"+EA.parameter+".csv",FILE_CSV | FILE_WRITE,";");
   FileWrite(hnd,"Ticket","MAE","TimeToMAE","MFE","TimeToMFE","MFEE","Profit","Missed");
   for(int i=0;i<ArraySize(mae);i++){
      FileWrite(hnd,ticket[i],mae[i],mae.time[i],mfe[i],mfe.time[i],mfee[i],profit[i],missed[i]);
   }
   FileClose(hnd);
}


void AdvancedReport.doStatistics(string EA.name,string EA.parameters="",int EA.limitMagicNumber=-1){
   for(int i=0;i<OrdersHistoryTotal();i++){
      OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
      if(OrderMagicNumber()==EA.limitMagicNumber || EA.limitMagicNumber==-1){
         reportTrade(OrderTicket());
      }
   }
   
   
   writeCSV(EA.name,EA.parameters);
}
 
ubzen:

Ok, aqui está o período ruim ao qual eu estava me referindo. Agora, vou fazer isto ao contrário, um ano de cada vez. 2009, 2008, etc.

Aqui estão os resultados anuais:

2010--Max-DD= 6.47____Rel-DD= 6.47____Net_Profit=4588____Factor=2.48
2009--Max-DD=26.76____Rel-DD=26.76____Net_Profit=-380____Factor=0.94
2008--Max-DD=19.79____Rel-DD=19.79____Net_Profit=1096____Factor=1.20
2007--Max-DD= 7.10____Rel-DD= 7.10____Net_Profit=1506____Factor=1.62
2006--Max-DD=20.46____Rel-DD=20.46____Net_Profit=-1612____Factor=0.63
2005--Max-DD= 8,79____Rel-DD= 8,79____Net_Profit= -23____Factor=0,99

2005----------------

2006-----------------

2007-----------------

2008--------------

2009 ------------------

2010----------------

Um par de observações.

1) O sistema tende a perder em uma fila em vez de aleatoriamente na maioria das vezes. O Z-Score do artigo pode ajudar com isto.

Isto ajuda a ressaltar o fato de que os comerciantes profissionais buscam 20-30% de retorno por ano.



Quando você tem dados de ROI que abrangem meses e anos, então você tem os dados necessários para avaliar seu risco de ruína no futuro.

http://www.futuresmag.com/Issues/2009/August2009/Pages/Minimizing-your-risk-of-ruin.aspx

Estes dados de backtesting são precisamente os dados necessários para realmente calcular algo a partir dos resultados dos backtesting que podem ser aproveitados para indicar resultados futuros.

Os z-scores não são preditivos de resultados futuros, pois dependem do tempo, a única forma de um z-score de 2009 ser relevante para 2011 é se a atividade de preços de mercado em 2011 for essencialmente uma repetição de 2009.

O Z-score é uma estatística interessante de se avaliar, mas não agrega nenhum valor ou insight sobre como sua estratégia irá se sair no futuro. Há uma razão pela qual os CTA's, gerentes de dinheiro, Morningstar, etc. não acompanham e reportam o Z-score para contas administradas profissionalmente. É uma métrica de sucesso sem valor.

No entanto, o risco computacional de ruína e o drawdown mediano são coisas que os profissionais fazem, e não apenas na indústria de forex.

Além disso, em termos de corretores... usar diferentes corretores para o backtesting é como o esforço do pobre homem para desacoplar sua estratégia da estratégia da série de tempo subjacente. Você não sabe como será a futura série temporal, mas não duas séries temporais passadas de duas corretoras são idênticas, portanto, o backtesting em uma ampla gama de conjuntos de dados históricos de diferentes fontes e, em seguida, a análise do desempenho robusto de sua estratégia é uma boa idéia, já que esta robustez fala do desempenho de sua estratégia em séries temporais futuras.

Os profissionais também fazem backtest contra taxas de mercado históricas variáveis. Em alguns casos, eles usam métodos Monte Carlo para criar dados de mercado inteiramente fictícios que são estatisticamente equivalentes aos dados de mercado reais, apenas para reforçar o backtest.

Apenas para pensar, você pode estar ciente de tudo isso e ter suas próprias razões igualmente válidas para optar por métodos de análise alternativos.
Razão: