E, na verdade, um exemplo de uma biblioteca membro. Algoritmo de otimização de trabalho, baseado em RNG. É bastante bom (para RNG) para procurar no máximo funções com parâmetros de 1...5 (talvez mais, sem restrições em código, mas os resultados serão decepcionantes). Não é bom para o campeonato, mas serve, por exemplo:
#property library#property strict//+------------------------------------------------------------------+// тестовая фитнес функция чемпионата, не известна участникам#import "ff.ex5"int GetParamCount ();
void GetParamProperties (double &min, double &max, double &step);
int GetCountRunsFF ();
double FF (double &array []);
#import
//+------------------------------------------------------------------+///////////////////////////////////////////////////////////////////////////////| // Здесь список экспортируемых функций библиотеки оптимизации, которые//обязаны объявлены именно так как показано ниже, для того, что проверочный скрипт//мог корректно обратится к библиотеке, содержимое этих функций на усмотрение//участников /*
//+------------------------------------------------------------------+
// алгоритм оптимизации участника
#import "ao.ex5"
// инициализация АО
void InitAO (int paramCount, int maxFFruns);
// запуск АО
void StartAlgo ();
// получить максимальное значение ФФ
double GetMaxFF ();
#import
//+------------------------------------------------------------------+
*///+------------------------------------------------------------------+void InitAO (int paramCount, int maxFFruns) export
{
G_MaxFFruns = maxFFruns;
G_ParamCount = paramCount; // можно и так: G_ParamCount = GetParamCount ();
GetParamProperties (G_MinParam, G_MaxParam, G_StepParam);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+void StartAlgo () export
{
bool stopAlgo = false;
int ffRuns = 0;
double temp = 0.0;
double param [];
ArrayResize (param, G_ParamCount);
//------------------------------------------------------------------while(!stopAlgo)
{
GetOptParam (param);
temp = FF (param);
if(temp > G_BestResult)
{
G_BestResult = temp;
Comment (G_BestResult);
}
ffRuns++;
if(ffRuns == G_MaxFFruns)
stopAlgo = true;
}
//-----------------------------------------------------------------
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double GetMaxFF () export
{
return (G_BestResult);
}
//+------------------------------------------------------------------+///////////////////////////////////////////////////////////////////////////////| ///////////////////////////////////////////////////////////////////////////////|// Ниже - функции участников, объявление и содержимое на их усмотрение int G_MaxFFruns = 0;
double G_BestResult = -DBL_MAX;
int G_ParamCount = 0;
double G_MinParam = -DBL_MAX;
double G_MaxParam = DBL_MAX;
double G_StepParam = 0.0;
//+------------------------------------------------------------------+void GetOptParam (double ¶m [])
{
int size = ArraySize (param);
for(int i = 0; i < size; i++)
param [i] = SeInDiSp (RNDfromCI (G_MinParam, G_MaxParam),
G_MinParam,
G_MaxParam,
G_StepParam);
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double SeInDiSp (double in, double inMin, double inMax, double step)
{
if(in <= inMin)
return (inMin);
if(in >= inMax)
return (inMax);
if(step == 0.0)
return (in);
elsereturn (inMin + step * (double)MathRound ((in - inMin) / step));
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+double RNDfromCI (double min, double max)
{
if(min == max)
return (min);
double Min, Max;
if(min > max)
{
Min = max;
Max = min;
}
else
{
Min = min;
Max = max;
}
return (double(Min + ((Max - Min) * (double)MathRand () / 32767.0)));
}
//+------------------------------------------------------------------+
O resultado médio do HSS para o FF do exemplo acima é -3,9699791274683918.
Fez 5 execuções do roteiro com o parâmetro 1000 FF chamadas.
Compilar exemplos e verificar. No lugar do testeao.ex5 no campeonato estará sua biblioteca.
Lembrete:
No campeonato o roteiro permanecerá o mesmo sem nenhuma alteração, o conteúdo do FF em ff.ex5 será diferente, e a biblioteca concorrente deverá ser ao.ex5, pode ser vista pelas funções declaradas importadas.
Se for necessário acrescentar funções exportadas à biblioteca participante, haverá um aviso prévio. No momento em que todos os códigos de script e interfaces necessárias são mostrados (mais uma vez), prepare-se.
O resultado médio do HSS para o FF do exemplo acima é -3,9699791274683918.
Fez 5 execuções do roteiro com o parâmetro 1000 FF chamadas.
Compilar exemplos e verificar. No lugar do testeao.ex5 no campeonato estará sua biblioteca.
Lembrete:
No campeonato o roteiro permanecerá o mesmo sem nenhuma alteração, o conteúdo do FF em ff.ex5 será diferente, e a biblioteca concorrente deverá ser ao.ex5, pode ser vista pelas funções declaradas importadas.
Se for necessário acrescentar funções exportadas à biblioteca participante, haverá um aviso prévio. Neste ponto todos os códigos de script e interfaces necessárias são mostrados (mais uma vez), prepare-se.
H A interface funciona. Transferiu os três códigos acima para fives.
Eu corri o roteiro na tabela. Antes disso, mudei a função de adequação na biblioteca para dobrar ffVolue = 2+exp(-MathAbs(x1+x2+x3)); o máximo real é três. Entendi.
Pelo que entendi, preciso reescrever meu algoritmo no formato do algoritmo do exemplo, renomear minhas funções no código para os nomes que estão no exemplo e verificar se elas funcionam.
Não há necessidade de estudar a interface de conexão e o exemplo dado FF.
Eu corri o roteiro na tabela. Antes disso, mudei a função de adequação na biblioteca para dobrar ffVolue = 2+exp(-MathAbs(x1+x2+x3)); o máximo real é três. Entendi.
Pelo que entendi, preciso reescrever meu algoritmo no formato do algoritmo do exemplo, renomear minhas funções no código para os nomes que estão no exemplo e verificar se elas funcionam.
Não há necessidade de estudar a interface de conexão e o exemplo dado FF.
Ótimo! Você fez tudo corretamente.
Apenas uma pequena correção no destaque: no algoritmo do participante,você precisa garantir que declara (exatamente como no exemplo) as funções exportáveis obrigatórias, o conteúdo dessas funções exportáveis e a presença de outras funções personalizadas ficam a critério do participante .Isso é o que diz nos comentários.
Ah, e sim... Os exemplos também funcionarão no MT4. Não chequei, mas não há nada lá dentro que não funcionasse no MT4. Foi o que eu disse para aqueles que são alérgicos (ou emtapáticos) ao MT5, o campeonato também está aberto a eles.
Andrey Dik: Ah, e sim... Os exemplos também funcionarão no MT4. Eu não verifiquei, mas não há nada que possa não funcionar no MT4. Foi o que eu disse para aqueles que são alérgicos (ou com medo de empatizar) ao MT5, o campeonato também está aberto para eles.
Para fazê-lo funcionar em quadrado, substituir #importar "ff.ex5" e #importar "ao.ex5" por #importar "ff.ex4" e #importar "ao.ex4" no script executável e no algoritmo de membro de exemplo.
Você também pode escrever em 4 . Por exemplo, quando compilei o código MQL4 em MQL5, houve apenas um erro. Eu mudei VERDADEIRO para verdadeiro ou um e funcionou. Eu deveria apenas escrevê-lo como mostra o exemplo. Eu ainda não consertei meu próprio código. Vou tentar.
Estou preparando uma plataforma (website) dedicada a algoritmos de otimização, onde haverá concursos, informações úteis e muitas outras coisas interessantes e úteis.
Todos serão capazes de testar sua força em algoritmos de escrita e testá-los contra outros participantes. O participante não precisará enviar o algoritmo para o servidor, toda interação com o FF, localizado no servidor, ocorre via REST, o participante envia um conjunto de argumentos para o servidor, e recebe o resultado FF de volta, nenhum árbitro é necessário, pois tudo é extremamente transparente, enquanto permanece em segredo para os algoritmos dos participantes.
Estou preparando uma plataforma (website) dedicada a algoritmos de otimização, onde haverá concursos, informações úteis e muitas outras coisas interessantes e úteis.
Todos serão capazes de testar sua força em algoritmos de escrita e testá-los contra outros participantes. O participante não precisará enviar o algoritmo para o servidor, toda interação com o FF, localizado no servidor, ocorre via REST, o participante envia um conjunto de argumentos para o servidor, e recebe o resultado FF de volta, nenhum árbitro é necessário, pois tudo é extremamente transparente, enquanto permanece em segredo para os algoritmos dos participantes.
Aguarde por novidades!
Interessante!
Não escute os conselheiros e críticos do fórum, faça o que você pensa, senão nada vai funcionar))
E, na verdade, um exemplo de uma biblioteca membro. Algoritmo de otimização de trabalho, baseado em RNG. É bastante bom (para RNG) para procurar no máximo funções com parâmetros de 1...5 (talvez mais, sem restrições em código, mas os resultados serão decepcionantes). Não é bom para o campeonato, mas serve, por exemplo:
O resultado médio do HSS para o FF do exemplo acima é -3,9699791274683918.
Fez 5 execuções do roteiro com o parâmetro 1000 FF chamadas.
Compilar exemplos e verificar. No lugar do testeao.ex5 no campeonato estará sua biblioteca.
Lembrete:
No campeonato o roteiro permanecerá o mesmo sem nenhuma alteração, o conteúdo do FF em ff.ex5 será diferente, e a biblioteca concorrente deverá ser ao.ex5, pode ser vista pelas funções declaradas importadas.
Se for necessário acrescentar funções exportadas à biblioteca participante, haverá um aviso prévio. No momento em que todos os códigos de script e interfaces necessárias são mostrados (mais uma vez), prepare-se.
O resultado médio do HSS para o FF do exemplo acima é -3,9699791274683918.
Fez 5 execuções do roteiro com o parâmetro 1000 FF chamadas.
Compilar exemplos e verificar. No lugar do testeao.ex5 no campeonato estará sua biblioteca.
Lembrete:
No campeonato o roteiro permanecerá o mesmo sem nenhuma alteração, o conteúdo do FF em ff.ex5 será diferente, e a biblioteca concorrente deverá ser ao.ex5, pode ser vista pelas funções declaradas importadas.
Se for necessário acrescentar funções exportadas à biblioteca participante, haverá um aviso prévio. Neste ponto todos os códigos de script e interfaces necessárias são mostrados (mais uma vez), prepare-se.
H A interface funciona. Transferiu os três códigos acima para fives.
1. Chamou o roteiro executável de Ch Script.
2. A biblioteca da função fitness é denominada ff. É assim que deve ser chamado. O roteiro não o verá de outra forma.
3. a biblioteca do algoritmo do exemplo é chamada ao. A biblioteca deve ser assim nomeada. Caso contrário, o roteiro não o verá.
Eu corri o roteiro na tabela. Antes disso, mudei a função de adequação na biblioteca para dobrar ffVolue = 2+exp(-MathAbs(x1+x2+x3)); o máximo real é três. Entendi.
Pelo que entendi, preciso reescrever meu algoritmo no formato do algoritmo do exemplo, renomear minhas funções no código para os nomes que estão no exemplo e verificar se elas funcionam.
Não há necessidade de estudar a interface de conexão e o exemplo dado FF.
H A interface funciona. Transferiu estes três códigos para a 5.
1. nomeou o script executável como Ch Script.
2. A biblioteca da função fitness é denominada ff. É assim que deve ser chamado. O roteiro não o verá de outra forma.
3. a biblioteca do algoritmo do exemplo é chamada ao. A biblioteca deve ser assim nomeada. Caso contrário, o roteiro não o verá.
Eu corri o roteiro na tabela. Antes disso, mudei a função de adequação na biblioteca para dobrar ffVolue = 2+exp(-MathAbs(x1+x2+x3)); o máximo real é três. Entendi.
Pelo que entendi, preciso reescrever meu algoritmo no formato do algoritmo do exemplo, renomear minhas funções no código para os nomes que estão no exemplo e verificar se elas funcionam.
Não há necessidade de estudar a interface de conexão e o exemplo dado FF.
Ótimo! Você fez tudo corretamente.
Apenas uma pequena correção no destaque: no algoritmo do participante,você precisa garantir que declara (exatamente como no exemplo) as funções exportáveis obrigatórias, o conteúdo dessas funções exportáveis e a presença de outras funções personalizadas ficam a critério do participante .Isso é o que diz nos comentários.
É simples, não é? ))
Ah, e sim... Os exemplos também funcionarão no MT4. Eu não verifiquei, mas não há nada que possa não funcionar no MT4. Foi o que eu disse para aqueles que são alérgicos (ou com medo de empatizar) ao MT5, o campeonato também está aberto para eles.
Para fazê-lo funcionar em quadrado, substituir #importar "ff.ex5" e #importar "ao.ex5" por #importar "ff.ex4" e #importar "ao.ex4" no script executável e no algoritmo de membro de exemplo.
Você também pode escrever em 4 . Por exemplo, quando compilei o código MQL4 em MQL5, houve apenas um erro. Eu mudei VERDADEIRO para verdadeiro ou um e funcionou. Eu deveria apenas escrevê-lo como mostra o exemplo. Eu ainda não consertei meu próprio código. Vou tentar.
Boa tarde!
Estou preparando uma plataforma (website) dedicada a algoritmos de otimização, onde haverá concursos, informações úteis e muitas outras coisas interessantes e úteis.
Todos serão capazes de testar sua força em algoritmos de escrita e testá-los contra outros participantes. O participante não precisará enviar o algoritmo para o servidor, toda interação com o FF, localizado no servidor, ocorre via REST, o participante envia um conjunto de argumentos para o servidor, e recebe o resultado FF de volta, nenhum árbitro é necessário, pois tudo é extremamente transparente, enquanto permanece em segredo para os algoritmos dos participantes.
Fique atento!
...
Aguarde por novidades!
Aguardando
Boa tarde!
Estou preparando uma plataforma (website) dedicada a algoritmos de otimização, onde haverá concursos, informações úteis e muitas outras coisas interessantes e úteis.
Todos serão capazes de testar sua força em algoritmos de escrita e testá-los contra outros participantes. O participante não precisará enviar o algoritmo para o servidor, toda interação com o FF, localizado no servidor, ocorre via REST, o participante envia um conjunto de argumentos para o servidor, e recebe o resultado FF de volta, nenhum árbitro é necessário, pois tudo é extremamente transparente, enquanto permanece em segredo para os algoritmos dos participantes.
Aguarde por novidades!
Interessante!
Não escute os conselheiros e críticos do fórum, faça o que você pensa, senão nada vai funcionar))
Aguardando
Interessante!
Apenas não escute os conselheiros e críticos do fórum, faça o que quiser ou não vai funcionar novamente ))
Obrigado!)