[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 669

 
Diger:

Isso já aconteceu com alguém?

Nenhum LOSS no log de teste de estratégia e a curva gráfica está descendo constantemente.

O que isso significaria?

A força da gravidade... :)) Você não está em Júpiter? :)) Desculpe - estava brincando...
 
Diger: Isso já aconteceu com alguém? Nenhum LOSS no log de teste de estratégia e a curva gráfica está descendo constantemente. O que isso significaria?
A propagação é baixa. Demasiados ofícios. Abra o gráfico do testador.
 
artmedia70:
O poder da gravidade... :)) Você não está em Júpiter? :)) Desculpe - estava brincando...

Eu também sou um pouco esquisito. Talvez eu realmente esteja. ....
 
Richie:
Drenagem no espalhamento. Demasiados ofícios. Abra o gráfico do testador.


Você estava certo!

Contra os 2p habituais, temos agora 26...

Obrigado!

 
Diger:


Você se mostrou certo!

Contra os 2p habituais, temos agora 26...

Obrigado!

Adicionar uma condição para o spread máximo acima do qual as negociações não são abertas (mas aquelas já abertas continuam a ser controladas pela EA).

 
chief2000:

Adicionar uma condição para o spread máximo acima do qual as negociações não são abertas (mas aquelas já abertas continuam a ser controladas pela EA).


Eu não achava que fosse necessário antes.

Mas o testador de hoje me mostrou essa necessidade.

 

A propósito, também é interessante e pouco claro para mim. Acrescentei ao meu Consultor Especialista um lote com prejuízo por um princípio: encontrar o maior prejuízo e abrir uma posição oposta com o lote desse prejuízo multiplicado pelo coeficiente calculado a partir do estado atual do mercado em todas as TFs e a posição relativa ao prejuízo aberto e o preço atual e o próprio gráfico de preços (como - vale realmente a pena abrir um lote, se o preço se movesse na direção certa...). Respectivamente, quando o lucro total destas duas posições é de cerca de 50-60 pontos - fechamos ambas, lucrativas no início.

Então, notei que o sistema comercial lucrativo, que dá lucro estável por dois anos no testador, mas tem em seu arsenal de drawdowns selvagens, que não pode ser aceito, se eu usar loops, ele falha dentro de dois meses... Qual poderia ser a razão? Apenas um rápido palpite. Não salvei as estatísticas de drenagem porque "por que eu deveria"?

 

Pergunta:

Tenho que me referir à mesma seqüência de códigos muitas vezes, em cada tick em quase todas as estratégias implementadas na EA, para obter dados sobre o estado atual do mercado.

   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
Posso abordá-los apenas uma vez no início da função inicial, e depois abordar apenas as variáveis globais, que irão armazenar os dados? É um pouco chato...
 
artmedia70:

Pergunta:

Tenho que me referir à mesma seqüência de códigos muitas vezes, em cada tick em quase todas as estratégias implementadas na EA, para obter dados sobre o estado atual do mercado.

Posso abordá-los apenas uma vez no início da função inicial, e depois abordar apenas variáveis globais que irão armazenar esses dados? Estou ficando um pouco oleoso aqui...


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Entendo que o cálculo é feito na barra de zero, ou seja, cada carrapato mudará os dados

logicamente - você deve escrever um script e fazer um loop, e ele lhe dará este cálculo em variáveis globais, mas então você precisará sincronizar novos dados em cada tick - é mais fácil deixá-los como estão, mas trazê-los para uma função separada e chamá-los apenas nos casos necessários, ou seja, se o cálculo for importante para abrir ordens, então imediatamente antes de abri-los e fechá-los, respectivamente

 
IgorM:


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Aqui entendo que o cálculo é feito em uma barra de zero, ou seja, cada carrapato mudará os dados

Logicamente - você deve escrever um script e fazer um loop e ele enviará este cálculo para variáveis globais, mas neste caso você precisará sincronizar novos dados com cada tick. Acho melhor deixá-los como estão, mas entregue-os em uma função separada e chame esta função somente quando necessário, ou seja, se o cálculo for importante para a abertura de pedidos, então pouco antes de abri-los e respectivamente antes de fechá-los

Igor, estou fazendo isso até agora, mas temo que isso diminua o sistema já lento que consiste em todas essas estratégias misturadas e conectadas por condições, e às vezes todas elas funcionam simultaneamente. Imagine que cada um deles chama o mesmo código em uma função separada.

Acho que, e se alguns dados forem retirados da barra zero, como já abro na barra zero. Só recebo dados da primeira, segunda ou terceira barra.
OpnPrice =iOpen(NULL,PERÍODO_M5,0); eu recebo o preço aberto da barra atual e ela não mudará - este é um fato consumado . Ao comparar o preço de fechamento anterior e o preço de abertura da barra atual, algumas funções dão licença ou recusam a abertura de uma posição...

Portanto, que todos estes dados sejam lidos uma vez com a chegada do tick, e depois serão utilizados pelo Consultor Especialista. Eles permanecerão inalterados e reais até o próximo tick, quando o Consultor Especialista irá atualizá-los para o próximo ciclo de cálculo.

Qual é a probabilidade de um novo tick vir antes do final de todos os cálculos atuais? Parece-me que somente neste caso os dados se tornarão antigos e irrelevantes.