Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1434

 
jeremy10p100 # :
Olá e obrigado pela resposta. Consegui criar um script que atende às minhas expectativas, mas infelizmente ainda há dois erros que não consigo entender ou corrigir. Você saberia com quem entrar em contato para obter uma pequena ajuda? São apenas duas linhas de código que se registram como erros após a compilação...

Você pode criar um trabalho freelance e escolher entre os desenvolvedores que se candidatam ao seu trabalho

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

Ao tentar enviar json via WebRequest, o servidor retorna:"\u0022BTCUSD\u0022 não é um tipo de pacote válido para desnormalização.".

Ou seja, ele não gosta da codificação de vírgulas invertidas \u0022 .
Tentei especificar todas as variantes de codificação em cabeçalhos e
StringToCharArray, mas nada adiantou.

No python, tudo sai sem problemas:
response = requests.post(url, data=json.dumps(data), headers=headers)
ou seja, está tudo bem com o servidor.

Como resolver o problema?

 

Vou reformular a pergunta de forma um pouco diferente. É possível dar ao otimizador um comando no bloco OnInit para ignorar a variante de teste/otimização sob determinadas condições.

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

Tentei fazer isso, mas isso leva a variantes de otimização incorretas.

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

O objetivo é que eu possa habilitar a enumeração de variantes de 4 parâmetros estocásticos (Stoch, in_StochK, int in_StochD, int in_StochSlow) durante a otimização.

  • Quando o estocástico está ativado (Stoch = true), o otimizador está enumerando as variáveis in_StochK, in_StochD, in_StochSlow. Tudo funciona corretamente nessa parte.
  • Quando a estocástica é desativada (Stoch = false), o otimizador ainda procura as variáveis in_StochK, in_StochD, in_StochSlow. E eu preciso criar algum tipo de bloqueio no código para que ele não as pesquise se Stoch = false.
 

Olá @taramortom.

Provavelmente ajudaria se você substituísse

return(INIT_FAILED)

para

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

Olá, @taramortom.

Provavelmente ajudaria se você substituísse

por

Eu tentei isso. Não funcionou. O otimizador ainda funciona incorretamente com esse comando.
 

Talvez o motivo pelo qual o otimizador não esteja funcionando corretamente seja essa imprecisão no código:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

Talvez o motivo pelo qual o otimizador não esteja funcionando corretamente seja essa imprecisão no código:


Esse não é o motivo. Criei o código como um exemplo da lógica de funcionamento. A versão completa do código é muito grande, pois há muitos osciladores diferentes. Ao otimizar, quero que o otimizador tente combinações diferentes (um oscilador ligado, dois osciladores ligados, três osciladores ligados, etc.).

- Ao usar essa restrição, o otimizador conclui rapidamente o trabalho com um pequeno número de passagens, embora deva haver um grande número delas.

- Sem usar essa restrição, o otimizador funciona melhor, mas produz muitas variantes vazias (no exemplo acima, ele ainda busca seus parâmetros quando o Stochastic está desativado). Deus queira que seja com variantes vazias, mas isso representa tempo extra para otimização e passagens vazias em vez de úteis.

 
Você está usando a otimização genética ou completa?
Também usei essa abordagem para excluir combinações de parâmetros obviamente desnecessárias e não notei um desempenho incorreto do otimizador. Pelo contrário, o otimizador funcionou exatamente como esperado.
Você pode tentar adicionar o salvamento das combinações de parâmetros perdidas no banco de dados ou em um arquivo comum para verificar quantas e quais realmente foram perdidas e entender os motivos.
 

Olá, estou escrevendo um indicador baseado em MA - ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice);

como posso acessar programaticamente os níveis de MA, conforme mostrado na figura abaixo.

Uma construção do tipo

IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

não funciona.


 
Tango_X IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

não funciona.


nenhuma opção?)