Quem quer uma estratégia? Muito e de graça) - página 19

 
orlekino >> :

Eu o reescrevi a meu gosto e cor; parece algo como EoM, mas os picos são incompreensíveis.

//  Ease of Movement

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
extern int PeriodMA = 13;
extern int VolDivisor = 10000;
double EoMBuffer[];
double TempBuffer[];

int init()
{
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, EoMBuffer);
   SetIndexBuffer(1, TempBuffer);
   IndicatorShortName("EoM("+ PeriodMA+")");
   SetIndexLabel(0,"EoM("+ PeriodMA+")");
   SetIndexDrawBegin(0, PeriodMA);

   return(0); 
}

int start()
{
   int counted_bars=IndicatorCounted();
   if( counted_bars>0)
      counted_bars--;
   int limit=Bars- counted_bars;
  
   for(int i=0; i< limit-1; i++)
      TempBuffer[ i]= VolDivisor * (High[ i] - Low[ i]) * ((High[ i] + Low[ i]) / 2.0 - (High[ i + 1] - Low[ i + 1]) / 2.0) / MathMax(Volume[ i], 1);

   for( i=0; i< limit; i++)
      EoMBuffer[ i]=iMAOnArray( TempBuffer,Bars, PeriodMA,0,MODE_SMA, i);

   return(0);
}
 
zelda >> :

Interessante, mas de acordo com a idéia original do Arms o indicador deve caminhar em relação a 0 e dar sinais quando a linha zero e SMA são cruzadas (que são aplicadas ao indicador, não suavizadas imediatamente).

É possível criar uma tal variante? Eu mesmo não sei (ainda) MQlng o suficiente, então em meu código ele desenha o último tique de indicador como infinitamente subindo (como consertá-lo - não sei), mas no contexto geral ele me convém.

 
FOREXMASTER >> :

O início não é ruim, mas neste programa eu gostaria de ver:

1. A escolha das estratégias geradas, porque a própria máquina não pode escolher a estratégia mais apropriada para cada uma, e eu já vi estrategistas muito melhores do que o programa no final do save

Tenho uma idéia um pouco diferente, ou seja, a criação de um repositório de estratégias. Isto é, deixar o usuário gerar 1 estratégia por instrumento e cronograma e o computador seleciona-a. Além disso, ele também descarrega 20 estratégias do repositório. Em seguida, 20 testes são executados com todas as estratégias baixadas e uma lista é criada com suas características. A estratégia com o pior resultado é pedida para ser excluída do repositório e a que acabou de ser gerada é adicionada em seu lugar.


Assim, o usuário fica com uma lista de 21 estratégias, 20 das quais já foram testadas, a partir das quais ele pode selecionar tudo o que gosta e criar os códigos fonte dos EAs na MQL4.


Desta forma, um compromisso é alcançado:


1. Um computador seleciona uma estratégia dentre aquelas geradas e não o faz de forma aleatória, mas leva em conta certas características.

2. O usuário escolhe a estratégia da lista, ou seja, o usuário tem o direito de fazer uma escolha, inclusive inadequada, subjetiva e errônea. Depende do usuário se deve usar um balanço apenas elaborado pelo testador ou uma estratégia testada pelo tempo.


Mas o mais importante é que ao fazer isso, o repositório será constantemente filtrado e armazenado apenas aquelas estratégias que dão os melhores resultados. E os ajustes aleatórios serão eliminados através da seleção natural. Ou seja, quase não há necessidade de testes futuros, porque podemos simplesmente olhar a lista e escolher a estratégia que durou mais tempo no repositório.


Além disso, desta forma, os resultados serão obtidos utilizando computação distribuída. Em outras palavras, cada computador gastará apenas cerca de 1 / 21 parte de seu tempo gerando estratégias e uma proporção muito menor de tempo testando as estratégias.


Infelizmente não há possibilidade de repositório em meu site anterior, porque o Ucoz CMS não permite gerenciar bancos de dados e executar scripts PHP. Portanto, temos que tomar uma hospedagem separada para o website Stock Strategy Builder, com base no qual o repositório funcionará.


Eu já completei a maior parte do repositório e a nova versão do programa. Há alguns detalhes, especialmente em relação à qualidade das citações, sobre os quais as estratégias serão geradas e testadas. Assim que eu trabalhar todos esses detalhes, publicarei a versão que suporta o repositório.

 
Reshetov писал(а) >>

Tenho uma idéia um pouco diferente, a criação de um repositório de estratégias. ...

... Dessa forma, o repositório seria constantemente filtrado e manteria apenas as estratégias que produzissem os melhores resultados. E os encaixes aleatórios serão eliminados através da seleção natural. Portanto, não há praticamente nenhuma necessidade de testes futuros ...

... Tive que obter uma hospedagem separada para o site Stock Strategy Builder, com base na qual o repositório funcionará.

... Eu já fiz uma parte significativa do repositório e da nova versão do software. Há ainda alguns detalhes, especialmente no que diz respeito à qualidade das citações sobre as quais as estratégias serão geradas e testadas. Assim que eu trabalhar esses detalhes, postarei a versão com suporte de repositório.

Ótima idéia! Boa sorte com a implementação!

Mas não entendo por que os testes futuros não serão necessários.

 
voltair >> :

Ótima idéia! Boa sorte com a implementação!

Só que estou um pouco confuso sobre a razão pela qual os testes de avanço não serão necessários.

Porque somente as estratégias testadas pelo tempo permanecerão no repositório, e o resto será gradualmente removido.


É claro que se baixarmos uma estratégia, que estava lá por exemplo, meio ano, e que mostra lucro de acordo com os testes, então ela será mais digna de confiança, do que a recém gerada.


Embora, é claro, pode-se fazer testes adicionais por conta própria, só por precaução.

 
Reshetov писал(а) >>

... Se você baixou uma estratégia do repositório, que está lá há meio ano, por exemplo, e ainda hoje mostra um lucro em testes, então ela é mais confiável do que uma estratégia recém gerada.

Eu entendo - as estratégias não estão apenas ali deitadas, elas são constantemente testadas e permanecem no repositório somente se forem lucrativas.

Mas pode acontecer que "hoje" (no mercado atual) "esta" estratégia esteja em déficit e amanhã ela reconquiste tudo com um lucro significativo.

Que segmento de mercado será utilizado para testar as estratégias?

 
voltair >> :

Entendo que as estratégias não são apenas armazenadas ali, mas são constantemente testadas e permanecem no repositório somente se forem lucrativas.

No entanto, acontece que "hoje" (no mercado atual) "esta" estratégia está em déficit, e amanhã ela reconquistará tudo com um lucro significativo.

Em que segmento de mercado a estratégia será testada?

Por esta razão, presumo que a seção de história deve ter pelo menos 8000 barras. Ou seja, o programa deve rejeitar citações com menos de 8000 barras. Também deve rejeitar as citações obsoletas, por exemplo, se o arquivo hst não tiver sido atualizado durante o último dia.


Assim, os dados históricos devem ser suficientemente longos, de longo prazo e tão recentes quanto possível. Portanto, a estratégia não é mais uma estratégia de "um dia" neste momento da história, pois o resultado final será o total geral para todo o período, e não os pedaços individuais.

 
Reshetov писал(а) >>

...presumo que a seção de história deve ter pelo menos 8000 barras. ...

Provavelmente por grandes períodos de tempo, isto é bom. Mas provavelmente não é o suficiente para minutos ou M5. Embora, a questão é: para que prazos serão mantidas as estratégias? Há algum método (ou experiência) experimentado e testado para selecionar o número de barras para teste? Normalmente não procuro menos de 20000 barras. Mas talvez seja errado...

 
voltair >> :

Provavelmente está bem para grandes períodos de tempo. Mas provavelmente não o suficiente para minutos ou M5. Mas minha pergunta é: para que prazos serão mantidas as estratégias? Há algum método (ou experiência) experimentado e testado para selecionar o número de barras para teste? Normalmente não procuro menos de 20000 barras. Mas talvez seja errado.

Até agora, eu me fixei na média dourada, ou seja, pelo menos 8000 barras em dados históricos. Mais é possível, menos não é.

 

Se permitirmos a remoção de estratégias do repositório com base em resultados negativos de testes, isso não é totalmente correto. Porque pode haver casos em que alguém carrega citações quebradas e com vazamentos e depois de executar testes por eles, apaga todas as estratégias lucrativas.


É melhor dar uma classificação a cada estratégia, por exemplo, -100 a +100. Na colocação inicial de uma estratégia no repositório, será dada uma classificação zero.


Todas as estratégias serão classificadas por ordem decrescente, ou seja, do máximo para o mínimo. O software irá carregar as 20 principais estratégias com classificação máxima e realizar testes nelas. Se o resultado do teste for positivo e a classificação da estratégia for inferior a 100, então ele é aumentado em 1. Se o resultado for negativo, então ele é diminuído em 1. Se a classificação for inferior a -100, a estratégia é retirada do repositório.


1. As estratégias mais antigas que foram testadas e comprovadas ao longo do tempo terão a classificação mais alta, portanto aparecerão mais altas no TOP-20.

2. Um dia, as estratégias de um dia descerão gradualmente nas classificações e ao atingir o nível -100, serão eliminadas.

3. Caso o programa funcione com aspas quebradas, ele só poderá alterar a classificação em 1, ou seja, não afetará globalmente os resultados da classificação do repositório, mas apenas ajustá-los ligeiramente.

Razão: