75.000 opções - 4GB de RAM e 4GB de cache de disco não são suficientes???? - página 5

 
Não temos uma visualização, ainda não precisamos de uma.
Mas provavelmente o faremos na próxima versão.

Vou mostrar o que posso.
É impossível transferir o Expert Advisor 100%,
Vou fazer uma aproximação, não se trata do Expert Advisor, pois não?
É sobre as capacidades do otimizador, não é?
 
Mak:
Não temos uma visualização, ainda não precisamos de uma.
Mas provavelmente o faremos na próxima versão.

Vou mostrar o que posso.
É impossível transferir o Expert Advisor 100%,
Vou fazer uma aproximação, não se trata do Expert Advisor, pois não?
É sobre as capacidades do otimizador, não é?
De forma alguma. Todo o complexo de mapeamento e usabilidade é a sua essência, o que implica em um grande gasto de recursos.

Uma coisa é fazer os programadores ararem todo seu código para incorporar a comunicação com um otimizador externo, e depois executar o otimizador que calcula algo lá. E tudo isso a um custo. E é outro assunto para verificar a caixa de seleção "Otimização genética" de qualquer especialista, selecionar uma faixa normal (e não dezenas de bilhões), obter os resultados e imediatamente ver os resultados enquanto o otimizador funciona, sem nenhum programa adicional. E é gratuito.

Tornamos nossos sistemas tão simples, convenientes e integrais quanto possível. Alguém afirma que "meu testador é 10-100 vezes mais rápido", mas não o prova. Alguém fala de tarefas fictícias com "um cavalo em um vácuo esférico". Enquanto fazemos sistemas de trabalho que funcionam em massa para centenas de milhares de comerciantes usando MetaTrader. E estamos muito à frente de qualquer concorrente, também por causa de nossa ideologia de sistemas de construção.

ps: A propósito, por que o pacote de distribuição de seu otimizador genético é maior do que o do MetaTrader? Não é econômico escrevê-lo?
 
Bem, aqui vai uma corrida.

Não tenho moedas em Omega, corri no que está na distribuição
- IBM (D1) durante 31 anos (> 11 mil barras).

1000 execuções levaram ~10 min em Athlon XP 1500+

Eu ampliei as faixas de parâmetros, porque a volatilidade é maior nos estoques

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - meu número de estoques é
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

O espaço total de parâmetros é ~ 10^14 estados.

Abaixo está o código no EasyLanguage e ScreenShot.
Também anexado código de sinal e relatórios da Omega em arquivo Zip.

(código de colagem não funcionou)


Entradas: Gen(1);
Vars: TakeProfit(50),
TralingStop(30),
Lots(0,1),
MACDOpenLevel(3),
MACDCloseLevel(2), MATrendPeriod(26);

Vars: R(0),K(0);
If CurrentBar = 1 Then Begin
R = TS.GO.Start("MACD");
If Gen = 1 Then Begin
R = TS.GO.Mode(0);
R = TS.GO.Popul(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("Trades");

R = TS.GO.Method(1);
R = TS.GO.Criterion("NetProfit",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("Stops");
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("Lots");
R = TS.GO.Gen("Lots", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Gen("MACDCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1);
End;

R = TS.GO.Next(Gen);
R = TS.GO.Set("Gen",Gen);
R = TS.GO.ShowViewer;

TakeProfit = TS.GO.Get("TakeProfit", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
Lots = TS.GO. Get("Lots", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0);
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0);
MATrendPeriod = TS.GO.Get("MATrendPeriod",0);
End;

Vars: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(Close,12,26);
MacdPrevious = MACD(Close,12,26)[1];
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(Close,MATrendPeriod);
MaPrevious = XAverage(Close,MATrendPeriod)[1];

Vars: StopLoss(0);
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > MaPrevious
e depois Begin
Buy Lots shares this bar on close;
end;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
e MaCurrent < MaPrevious
Depois Começar
Vender Muitas ações desta barra no fechamento;
fim;
fim;

Se MarketPosition > 0 Depois Começar
Se MacdCurrent > 0
e MacdCurrent < SignalCurrent
e MacdPrevious > SignalPrevious
e AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Em seguida, iniciar
ExitLong ("CloseLong") esta barra no fechamento;
end;

Se StopLoss = 0 Então StopLoss = Preço de Entrada - Pontos TralingStop;
StopLoss = MaxList(StopLoss,High - Pontos TralingStop);

ExitLong ("TakeLong") Próxima Barra no Preço de Entrada + Limite de Pontos TakeProfit;
ExitLong ("StopLong") Próxima barra no StopLoss;
end;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Então comece
ExitShort ("CloseShort") esta barra em close;
end;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points;
StopLoss = MinList(StopLoss,Low + TralingStop Points);

ExitLong ("TakeShort") Próximo Bar no Preço de Entrada - Limite de Pontos Lucrativos;
ExitLong ("StopShort") Próximo Bar no StopLoss;
end;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDDD",MaxIDDrawDown);
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss));
R = TS.GO.Fitness(0);
End;



Arquivos anexados:
macd_test.zip  32 kb
 
Renat:
Mak:
Não temos uma visualização, ainda não precisamos de uma.
Mas provavelmente o faremos na próxima versão.

Vou mostrar o que posso.
É impossível transferir o Expert Advisor 100%,
Vou fazer algo aproximado, não é sobre o Expert Advisor, é sobre as capacidades do otimizador...
É sobre as capacidades do otimizador, não é?
Absolutamente não. A questão está em todo o complexo de mapeamento e usabilidade, o que implica um grande gasto de recursos.

Uma coisa é fazer os programadores ararem todo o seu código para integrar a comunicação com um otimizador externo, e depois executar o otimizador que calcula algo lá. E tudo isso a um custo. E é outra questão de verificar a caixa de seleção "Otimização genética" de qualquer especialista, selecionar uma faixa normal (não dezenas de bilhões), obter os resultados e olhar imediatamente através dos resultados enquanto o otimizador funciona, sem nenhum programa adicional. E é gratuito.

Tornamos nossos sistemas tão simples, convenientes e integrais quanto possível. Alguém afirma que "meu testador é 10-100 vezes mais rápido", mas não o prova. Alguém fala de tarefas fictícias com "um cavalo em um vácuo esférico". Enquanto fazemos sistemas de trabalho que funcionam em massa para centenas de milhares de comerciantes usando MetaTrader. E estamos muito à frente de qualquer concorrente, também por causa de nossa ideologia de sistemas de construção.

ps: A propósito, por que o pacote de distribuição de seu otimizador genético é maior do que o do MetaTrader? Não é econômico escrevê-lo?

Renat, você mesmo me SOLICITA que lhe mostre isto.
Eu tenho perguntado repetidamente o que é isto ....
Se você tivesse escrito um post anterior quando eu lhe perguntei sobre isso,
a conversa teria sido diferente, e eu não precisaria ter reescrito este MACD para Omega.
Tive que colocar de lado outras coisas para me ocupar em provar que "não sou um camelo".

Resumindo.
Você diz que fez uma coisa boa e de graça ...
Eu estava discutindo com você sobre isso (eu não estava discutindo com você sobre nada)?

Acabei de ressaltar que seu otimizador consome muita memória.
Acho que este é um legado de uma antiga versão de seu otimizador, quando você ainda não tinha CS.
Isto é fácil de consertar e tornará seu otimizador ainda melhor.

Nota, nenhuma crítica de minha parte.
Eu só queria ajudá-los.
 
É bem diferente quando você defende sua posição com detalhes. Realmente, por que existem apenas 1.000 excessos em um espaço tão grande? Essa é uma maneira muito grosseira de ver as coisas. Eu executei esta EA em MT4 sobre 1,5 B de valores e ela resultou em 4.400 recuperações líquidas em 4 minutos sobre 18.000 barras da história do EURUSD H1.

Esta tarefa é naturalmente o reino do cavalo esférico no vácuo e nós no MT4 estamos de fato tentando reservar uma certa quantidade de memória devido à enorme área de valores possíveis (o legado dos mecanismos de ataque da força bruta). Este ponto será corrigido.

Obrigado por sua persistência - você nos forçou a ir mais fundo no testador.
 
Renat писал (а):

.... Mas por que existem apenas 1000 ressaltos em um espaço tão grande? É muito grosseiro. Eu corri este Expert Advisor em MT4 em uma área de 1,5 bilhões de valores e obtive 4400 ultrapassagens líquidas em 4 minutos em 18.000 barras da história do EURUSD H1. ....
A velocidade de busca em genética é independente do tamanho do espaço de parâmetros.
Depende da qualidade da função alvo (adequação).

Além disso, usamos o algoritmo original que é uma ordem de grandeza mais rápida do que outros algoritmos que conhecemos.
1000 corridas é um pouco demais, normalmente uso 100-200 corridas (para qualquer número de parâmetros) para avaliar uma solução.
 
Renat писал (а):
Sim, na verdade, esta EA no teste consome muita memória e vai abaixo. Vamos investigar isso.
Obrigado pelo código fornecido.


Renat, ainda sem notícias?
 

sãos, há novidades. Eles encontraram um vazamento de memória. O compilador não inseriu o comando de liberação de linha no lugar certo.

 
stringo писал (а):

sãos, há novidades. Eles encontraram um vazamento de memória. O compilador não inseriu o comando de liberação de linha no lugar certo.


ok, estamos esperando a nova construção.
 
sane:
stringo:

sãos, há novidades. Eles encontraram um vazamento de memória. O compilador não inseriu o comando de liberação de linha no lugar certo.


ok, aguardando a nova construção.

Eu dei seu exemplo sobre a nova construção de 198 EA:







Não houve mais consumo excessivo de memória, com a otimização genética habilitada houve 1088 buscas em 21600 e o cálculo levou 8 minutos e 31 segundos.

Sobre o próprio Expert Advisor - ele não deve, de forma alguma, ser usado devido a erros graves:
  • Níveis de parada incorretos e todos os logs estão cheios de mensagens sobre isso
  • para a função SetOrder você pode obter de seu corretor uma proibição severa de negociação com Expert Advisors

    Esta função tenta negociar a preços desatualizados cinco vezes, o autor do Expert Advisor não entende o que está fazendo (ele tenta usar RefreshRates, mas ainda assim dá um preço desatualizado). E não há nenhuma manipulação de erros significativa.
Razão: