Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1891

 
Sergey Dymov #:

Obrigado. Vou trabalhar com isso. O manual é uma bagunça.

Parece estar adaptado...

Todos dizem que o mql5 é mais rápido que o mql4. Então tenho uma pergunta a fazer. Por que o mesmo Expert Advisor foi executado em 164 ms em mql4 e 527 ms em mql5? Qual poderia ser o problema?

 
Sergey Dymov #:

A adaptação parece ter funcionado...

Todos dizem que o mql5 é mais rápido que o mql4. Então tenho uma pergunta a fazer. Por que o mesmo Expert Advisor funciona em 164 ms em mql4 e 527 ms em mql5? Qual poderia ser o problema?

Com o que e como você mediu o desempenho?

 
Sergey Dymov uma EA com várias moedas que escrevi em mql4. No testador, é claro, não funciona. Decidi que devo mudar para mql5.

Adaptei todos os erros do compilador e os consertei. EXCEPTO para o uso de indicadores técnicos. Eu tenho muito pouca idéia do que fazer com esta EA. A documentação é incompreensível e cobre duas páginas. Talvez eu esteja procurando no lugar errado.

Uma linha de código em mql4 como segue

duplo MA1EURGBP_TF = iMA("EURGBP",15,MA1_Period,0,MODE_EMA,PRICE_OPEN,0);

ou

duplo Stoch_M_GBPUSD=iStochastic("GBPUSD", Stoch_Period, K_Period, D_Period, Slowing, MODE_EMA, 0, MODE_MAIN, 0);

De acordo com a documentação, a página inteira do código muda em mql5. Alças, amortecedores, matrizes com parâmetros, isto para init, isto para calcular, manipulação de erros durante a criação de alças... isto é uma loucura... Talvez eu esteja procurando no lugar errado.

E se eu uso vários pares e vários prazos, recebo "Guerra e Paz" lá.

No 4ka, a parte informativa deve funcionar com outros símbolos, a parte do pedido não. Mas devemos primeiro carregar os símbolos necessários no arquivo de citações. Não funcionava antes. Ele trabalhará para a profundidade de carregamento do arquivo por meio de um símbolo. Você pode ver a data no arquivo.

 

Mais conselhos, por favor.

Transferi a EA para o mt5, tudo parece estar funcionando. Escrevi um indicador personalizado no mt4 para verificar a exatidão da execução, também estou movendo-o para o mt5.

Eu adaptei o indicador, parece que ele também funciona, mas não muito bem.

1) não funciona apagando objetos da tabela ao desinstalar. Acho que não há lugar para cometer um erro.

int OnInit()

{

ObjectCreate(0, "GBP_S0",OBJ_LABEL,0,0,0);

return(INIT_SUCCEED);

}

nulo OnDeinit(const int razão);

{

ObjectDelete(0, "GBP_S0");

}

2)

Se o fizermos desta maneira:

ExtGBPBuffer[i]=GBPTP;

ObjectSetString(0, "GBP_S101",OBJPROP_TEXT,ExtGBPBuffer[i]));

Então o valor GBP_S101 é exatamente o que estamos procurando. Mas a linha é zero. Como isso pode ser? Ou seja, a linha é desenhada e tudo está bem, cor, largura, tudo, exceto valores.


Mesmo se eu fizer desta maneiraExtGBPBuffer[i]=2; a linha ainda é 0

 
Sergey Dymov #:

1) Excluir objetos do gráfico quando a desinstalação não funciona. Parece não haver lugar para errar.

Funciona

 
for(int cycle=1; cycle<=6; cycle++) { int period = per+(CountBuy()+CountSell()); vgran = iCustom(NULL,TF,"Канал_1",period,1,0);      }
Uma dica. Adiciono um indicador via iCustom e faço um loop através deste indicador, mudando 1 instância de parâmetro-período. Como resultado, eu escolho alguma variante e trabalho com ela. Eu levo apenas o último bar. Mas quando paro meu Expert Advisor, noto que ele exibe uma dúzia de indicadores com parâmetros diferentes, e para toda a duração da história. Quando eu modifico um indicador em um histograma (uma janela separada), respectivamente, aparecem dez janelas de histograma. Como remover (não exibir linhas), e não usar o indicador inteiro durante a contagem do ciclo, mas apenas o último valor.
 
Aleksandr Kononov quando paro meu Expert Advisor, noto que ele exibe uma dúzia de indicadores com parâmetros diferentes, e para toda a duração da história. Quando eu modifico um indicador em um histograma (uma janela separada), respectivamente, aparecem dez janelas de histograma. Como remover (não exibir linhas), e não usar o indicador inteiro durante a contagem do ciclo, mas apenas o último valor.
   HideTestIndicators(true); 
   MaCurrent=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0); 
   MaPrevious=iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1); 
   HideTestIndicators(false);
 

Rapazes, avisem sobre o indicador personalizado mql4 construído em MA baseado nos preços de abertura, ele não muda suas leituras com novos tiquetaques chegando, por isso se baseia nos preços de abertura.

No mql5 o indicador adaptado muda suas leituras na zona de transição a cada tique... Também através da abertura de preços, mesmo assim


copy=CopyBuffer(MA2EURJPY,0,1,CountBars,MA2EURJPY_TF);

if(copy<0)

Print("Copy failed MA2EURJPY_MAS");


para fazer uma segunda leitura, mas ainda faz tic-tac para frente e para trás


Andrey Sokolov #:

Funciona

Funciona apenas uma vez, tenho a sensação de que a linguagem está com falhas. Quando eu edito um fragmento não relacionado em mql5, tudo deixa de funcionar...



 
Sergey Dymov #:

Tenho a sensação de que a linguagem é muito falsa. Quando eu edito uma seção não relacionada em mql5, tudo deixa de funcionar... Eu também já tive tais situações, mas sempre que descubro "não foi o babina", então não é o babina, então não é o mql4.

Eu também tive situações semelhantes, mas toda vez que se descobriu que "não era o babina", então...

 

Você pode me dar uma dica?

Em mql4 havia um indicador baseado em MA para o preço de abertura, que permitia evitar a re-encomenda na barra atual. através de int start() ele funcionou bem. Mostrou tudo claramente.

Em mql5, o mesmo indicador não funciona através de int start, ele funciona através de int OnCalculate. Ele continua recalculando e redesenhando, por um segundo a imagem desaparece e pode ter valores diferentes por causa da situação limite com a interseção de dois MAs, embora a distância entre dois MAs esteja definida, isso não ajuda. Pensei que não tiraria o valor 0, mas o 1º do buffer MA, mas não funcionou e também pensei em pular esta função antes da chegada de um novo bar e também não funcionou (até tentei parar de exibir nada). Como superar esta situação?

Ao virar a tabela da direita para a esquerda, também pisca o indicador com recálculo constante