Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
strongflex: Não abre o comércio no testador. Qual poderia ser o problema aqui?)
Bem... Primeiro, você está tentando abrir um Sell at Ask price. Enquanto você está abrindo uma venda na Bid e uma compra na Ask.
Coloquei a pesquisa de dados RSI e sua passagem de nível em uma função. Tem também uma verificação de preço. Retorna sinais: para comprar, para vender, ou nada (-1)
//+------------------------------------------------------------------+ //| exTestValueRSI.mq4 | //| Copyright 2016, Artem A. Trishkin, Skype artmedia70 | //| https://login.mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright"Copyright 2016, Artem A. Trishkin, Skype artmedia70" #property link"https://login.mql5.com/ru/users/artmedia70" #property version"1.00" #property strict //--- input parameters inputENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI inputint PeriodRSI = 14; // Период расчёта RSI inputENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI inputint UpperRSIlevel = 70; // Верхний уровень RSI inputint LowerRSIlevel = 30; // Нижний уровень RSI inputint MinutesBefore =20; // Количество минут назад //--- global variables int minutesBefore; // Количество минут назад int periodRSI; // Период расчёта RSI int upperRSIlevel; // Верхний уровень RSI int lowerRSIlevel; // Нижний уровень RSI //--- double prevRSIvalue0; // Значение RSI для заданного тф xxx минут назад double prevRSIvalue1; // Значение RSI для заданного тф xxx минут назад-x минут //--- double prevClose_0; // Значение Close для заданного тф xxx минут назад double prevClose_1; // Значение Close для заданного тф xxx минут назад-x минут //--- datetime timeBefore; // Время ххх минут назад datetime timePrevBefore; // Время ххх минут назад-x минут //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад periodRSI=(PeriodRSI<1?1:PeriodRSI); upperRSIlevel=(UpperRSIlevel<1?1:UpperRSIlevel>100?100:UpperRSIlevel); lowerRSIlevel=(LowerRSIlevel<0?0:lowerRSIlevel>99?99:LowerRSIlevel); if(upperRSIlevel<=lowerRSIlevel) upperRSIlevel=lowerRSIlevel+1; if(lowerRSIlevel>=upperRSIlevel) lowerRSIlevel=upperRSIlevel-1; /*
} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //--- MqlDateTime server_time; TimeToStruct(TimeCurrent(),server_time); //--- если значение минут серверного времени кратно заданному значению, в частности 20-ти минутам или равно 0 if(server_time.min%minutesBefore==0 || server_time.min==0) { if(SignalByRSI(Symbol(),TimeframeRSI,minutesBefore)==OP_BUY) { //--- получили сигнал на покупку Print("Сигнал на покупку ",TimeCurrent()); // Проверочное сообщение в журнал //--- проверка наличия уже открытой позиции на покупку //--- вызов функции открытия позиции на покупку } if(SignalByRSI(Symbol(),TimeframeRSI,minutesBefore)==OP_SELL) { //--- получили сигнал на продажу Print("Сигнал на продажу ",TimeCurrent()); // Проверочное сообщение в журнал //--- проверка наличия уже открытой позиции на продажу //--- вызов функции открытия позиции на продажу } } } //+------------------------------------------------------------------+ double GetLastDataRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, int shift, int period_rsi=14, ENUM_APPLIED_PRICE price_rsi=PRICE_CLOSE) { return(iRSI(symbol_name,timeframe,period_rsi,price_rsi,shift)); } //+------------------------------------------------------------------+ double GetPriceClose(string symbol_name,ENUM_TIMEFRAMES timeframe, int shift){ double array[1]; if(CopyClose(symbol_name,timeframe,shift,1,array)==1) return(array[0]); return(-1); } //+------------------------------------------------------------------+ int GetBarShift(string symbol_name,ENUM_TIMEFRAMES timeframe,datetime time) { if(time<0) return(-1); //--- datetime array[], time0; if(CopyTime(symbol_name,timeframe,0,1,array)<0) return(-1); time0=array[0]; if(CopyTime(symbol_name,timeframe,time0,time,array)<0) return(-1); datetime temptime=GetTime(symbol_name,timeframe,ArraySize(array)-1); if(array[0]==temptime && temptime<=time) return(ArraySize(array)-1); elsereturn(ArraySize(array)); } //+------------------------------------------------------------------+ datetime GetTime(string symbol_name,ENUM_TIMEFRAMES timeframe,int bar) { if(bar<0) return(-1); datetime array[]; if(CopyTime(symbol_name,timeframe,bar,1,array)>0) return(array[0]); return(-1); } //+------------------------------------------------------------------+ int SignalByRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, int minutes_before, int upper_lev_rsi=70, int lower_lev_rsi=30) { //--- время 1x и 2x минут назад datetime time_before_0=TimeCurrent()-minutes_before*PeriodSeconds(PERIOD_M1); datetime time_before_1=TimeCurrent()-2*minutes_before*PeriodSeconds(PERIOD_M1); //--- смещение в барах времени 1х и 2х для заданного таймфрейма RSI (тф М15) int shift_0=GetBarShift(symbol_name,timeframe,time_before_0); int shift_1=GetBarShift(symbol_name,timeframe,time_before_1); //--- значения RSI на барах 1х и 2х минут назад для заданного таймфрейма RSI (тф М15) double prev_rsi_value_0=GetLastDataRSI(symbol_name,timeframe,shift_0); double prev_rsi_value_1=GetLastDataRSI(symbol_name,timeframe,shift_1); //--- значения цен закрытия баров 1х и 2х минут назад double prev_close_0=GetPriceClose(symbol_name,timeframe,shift_0); double prev_close_1=GetPriceClose(symbol_name,timeframe,shift_1); //--- отладочные сообщения string tf=EnumToString(TimeframeRSI); MqlDateTime server_time; TimeToStruct(TimeCurrent(),server_time); Comment( "\nВремя проверки RSI: ",TimeCurrent(),", минуты времени проверки: ",server_time.min, "\nВремя ",minutes_before," минут назад: ",time_before_0,", бар ",tf," : ",shift_0, "\nВремя ",minutes_before*2," минут назад: ",time_before_1,", бар ",tf," : ",shift_1, "\nЗначение RSI ",minutes_before," минут назад на ",tf," : ",DoubleToString(prev_rsi_value_0,4), "\nЗначение RSI ",minutes_before*2," минут назад на ",tf," : ",DoubleToString(prev_rsi_value_1,4), //--- "\nЗначение Close ",minutes_before," минут назад > ",tf," : ",DoubleToString(prev_close_0,Digits()), "\nЗначение Close ",minutes_before*2," минут назад > ",tf," : ",DoubleToString(prev_close_1,Digits()) ); //--- проверка наличия данных RSI if(prev_rsi_value_1>0 && prev_rsi_value_0>0) { //--- проверка условия на продажу if(prev_rsi_value_1<upper_lev_rsi && prev_rsi_value_0>upper_lev_rsi) { if(prev_close_0>SymbolInfoDouble(symbol_name,SYMBOL_BID)) return(OP_SELL); } //--- проверка условия на покупку if(prev_rsi_value_1>lower_lev_rsi && prev_rsi_value_0<lower_lev_rsi) { if(prev_close_0<SymbolInfoDouble(symbol_name,SYMBOL_ASK)) return(OP_BUY); } } return(-1); } //+------------------------------------------------------------------+
Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
Obrigado pelo esclarecimento!
Eu também nunca confiei em otimistas em tantos anos - acho que é um ajuste. Mas é um pouco como quanto mais rica a cor, melhor. E também - quanto mais blocos com cores saturadas, melhor. Mas o que fazer ainda mais com esta confusão - não consigo pensar. Sempre tentei construir sistemas adaptativos, e não com uma seleção estúpida de valores para a história de um testador.
Talvez haja alguém que possa nos explicar tudo isso
Eu também nunca confiei em otimistas em tantos anos - penso neles como um remendo. Mas quanto mais saturada for a cor, melhor. E também - quanto mais blocos com cores saturadas, melhor. Mas o que fazer a seguir com esta confusão - não consigo pensar. Sempre tentei construir sistemas adaptativos, e não com uma seleção estúpida de valores para a história de um testador.
Talvez haja alguém que possa nos explicar tudo isso
O mais provável é que ninguém o faça. Restam 10-12 pessoas no fórum, algumas delas foram banidas e muitas delas não voltarão. Agora se você olhar para o fórum, cerca de 5-7 pessoas aparecem, metade delas não respondem a perguntas. Minha pergunta sobre o cronograma permanece sem resposta.
Vitaly Muzichenko: É provável que ninguém explique. Restam 10-12 pessoas no fórum, algumas delas foram banidas e muitas delas não voltarão. Agora se você olhar para o fórum, há cerca de 5-7 pessoas, metade delas não responde a perguntas. Minha pergunta sobre o cronograma não foi respondida.
Tenho que olhar para o quarto fórum - vi uma explicação do otimizador lá uma vez há muito tempo, mas não me lembro do que se tratava ou onde estava...
Artyom Trishkin: Você precisa olhar no quarto fórum - vi uma explicação do otimizador lá há algum tempo, mas não me lembro bem do que se tratava e onde estava...
Aqui está, só que não corresponde ao que eu recebi durante os testes, por isso fiz uma pergunta aos conhecedores.
Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
Obrigado pelo esclarecimento!
Vitaly Muzichenko: Sim, muito provavelmente ninguém vai explicar. Restam apenas 10-12 pessoas no fórum, algumas delas foram banidas e muitas nunca mais voltaram. Agora, se você olhar para o fórum, cerca de 5-7 pessoas aparecem, metade delas não responde a perguntas. Minha pergunta sobre o cronograma ficou sem resposta.
Não há muito a explicar e ninguém está respondendo. O gráfico que você mostrou não tem sentido e como ele foi obtido é um mistério.
E a opção "Superfície bidimensional" na aba "Gráfico de otimização" do testador faz sentido (imho) quando queremos otimizar 2 parâmetros de entrada de um EA ou ver claramente, em quais valores de 2 parâmetros os resultados foram bons na história e se esses parâmetros são interdependentes, e se fazem sentido de todo.
Aqui está um exemplo da otimização de 2 parâmetros de entrada (talvez não seja o melhor, mas não consigo encontrar um exemplo melhor neste momento):
O eixo horizontal é o valor do 1º parâmetro em 16 incrementos, e o eixo vertical é o valor do 2º parâmetro, também em 16 incrementos. Quanto mais escuro o quadrado verde, maior o lucro (se a otimização pelo lucro) estava nos valores correspondentes dos parâmetros, quanto mais pálido, menor o lucro. O melhor resultado (por lucro histórico) foi no centro. O "monte" verde escuro parece estar em torno dele, o que sugere alguma dependência e regularidade entre estes 2 parâmetros e os parâmetros não são insignificantes, enquanto o resultado da otimização não é acidental. Portanto, vale a pena prestar atenção aos valores destes parâmetros 2x a partir do melhor resultado (no centro).
Em geral, tudo é muito simples. Quanto à forma de usá-la, bem, é uma questão de imaginação. Eu não olho para estes quadrados verdes por muito tempo ))
Seu gráfico tem apenas 0 nos dois eixos por alguma razão, e verticalmente estes 0's também são divididos em 3 passos intermediários, daí os "cubos um no centro, dois abaixo/cima, e dois/três no mesmo quadrado". E os resultados parecem aleatórios - "cubos" brancos e verdes são dispersos aleatoriamente. Portanto, o gráfico não tem sentido e não parece significar nada.
Estou escrevendo minha própria dll para trabalhar com o banco de dados sqlite3 a partir do indicador. O ambiente de desenvolvimento de blocos de código funciona, mas não de forma correta e, ocasionalmente, trava com uma violação de acesso.
Perguntas iniciais:
1. É possível construir dlls em blocos de código corretamente ou apenas no Visual Studio? Exemplos simples (trabalho com Int, duplo) são construídos e funcionam. Empilha e trabalha com arquivos não - o programa trava.
2. não pude começar e trabalhar com __stdcall, somente com __cdecl. Nomes de funções distorcidos , e arquivos def em blocos de código não funcionam normalmente.
Estou procurando ajuda de usuários com conhecimento de causa.
Se já existe um tópico, por favor, peça ao Admin para colocá-lo no ramo apropriado.
Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
Obrigado pelo esclarecimento!
Não abre o comércio no testador. Qual poderia ser o problema aqui?)
Bem... Primeiro, você está tentando abrir um Sell at Ask price. Enquanto você está abrindo uma venda na Bid e uma compra na Ask.
Coloquei a pesquisa de dados RSI e sua passagem de nível em uma função. Tem também uma verificação de preço. Retorna sinais: para comprar, para vender, ou nada (-1)
//| exTestValueRSI.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
//--- input parameters
input ENUM_TIMEFRAMES TimeframeRSI = PERIOD_M15; // Таймфрейм RSI
input int PeriodRSI = 14; // Период расчёта RSI
input ENUM_APPLIED_PRICE PriceRSI = PRICE_CLOSE; // Цена расчёта RSI
input int UpperRSIlevel = 70; // Верхний уровень RSI
input int LowerRSIlevel = 30; // Нижний уровень RSI
input int MinutesBefore =20; // Количество минут назад
//--- global variables
int minutesBefore; // Количество минут назад
int periodRSI; // Период расчёта RSI
int upperRSIlevel; // Верхний уровень RSI
int lowerRSIlevel; // Нижний уровень RSI
//---
double prevRSIvalue0; // Значение RSI для заданного тф xxx минут назад
double prevRSIvalue1; // Значение RSI для заданного тф xxx минут назад-x минут
//---
double prevClose_0; // Значение Close для заданного тф xxx минут назад
double prevClose_1; // Значение Close для заданного тф xxx минут назад-x минут
//---
datetime timeBefore; // Время ххх минут назад
datetime timePrevBefore; // Время ххх минут назад-x минут
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
minutesBefore=(MinutesBefore<1?1:MinutesBefore); // Количество минут назад
periodRSI=(PeriodRSI<1?1:PeriodRSI);
upperRSIlevel=(UpperRSIlevel<1?1:UpperRSIlevel>100?100:UpperRSIlevel);
lowerRSIlevel=(LowerRSIlevel<0?0:lowerRSIlevel>99?99:LowerRSIlevel);
if(upperRSIlevel<=lowerRSIlevel) upperRSIlevel=lowerRSIlevel+1;
if(lowerRSIlevel>=upperRSIlevel) lowerRSIlevel=upperRSIlevel-1;
/*
*/
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
MqlDateTime server_time;
TimeToStruct(TimeCurrent(),server_time);
//--- если значение минут серверного времени кратно заданному значению, в частности 20-ти минутам или равно 0
if(server_time.min%minutesBefore==0 || server_time.min==0) {
if(SignalByRSI(Symbol(),TimeframeRSI,minutesBefore)==OP_BUY) {
//--- получили сигнал на покупку
Print("Сигнал на покупку ",TimeCurrent()); // Проверочное сообщение в журнал
//--- проверка наличия уже открытой позиции на покупку
//--- вызов функции открытия позиции на покупку
}
if(SignalByRSI(Symbol(),TimeframeRSI,minutesBefore)==OP_SELL) {
//--- получили сигнал на продажу
Print("Сигнал на продажу ",TimeCurrent()); // Проверочное сообщение в журнал
//--- проверка наличия уже открытой позиции на продажу
//--- вызов функции открытия позиции на продажу
}
}
}
//+------------------------------------------------------------------+
double GetLastDataRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, int shift, int period_rsi=14, ENUM_APPLIED_PRICE price_rsi=PRICE_CLOSE) {
return(iRSI(symbol_name,timeframe,period_rsi,price_rsi,shift));
}
//+------------------------------------------------------------------+
double GetPriceClose(string symbol_name,ENUM_TIMEFRAMES timeframe, int shift){
double array[1];
if(CopyClose(symbol_name,timeframe,shift,1,array)==1) return(array[0]);
return(-1);
}
//+------------------------------------------------------------------+
int GetBarShift(string symbol_name,ENUM_TIMEFRAMES timeframe,datetime time) {
if(time<0) return(-1);
//---
datetime array[], time0;
if(CopyTime(symbol_name,timeframe,0,1,array)<0) return(-1);
time0=array[0];
if(CopyTime(symbol_name,timeframe,time0,time,array)<0) return(-1);
datetime temptime=GetTime(symbol_name,timeframe,ArraySize(array)-1);
if(array[0]==temptime && temptime<=time) return(ArraySize(array)-1);
else return(ArraySize(array));
}
//+------------------------------------------------------------------+
datetime GetTime(string symbol_name,ENUM_TIMEFRAMES timeframe,int bar) {
if(bar<0) return(-1);
datetime array[];
if(CopyTime(symbol_name,timeframe,bar,1,array)>0) return(array[0]);
return(-1);
}
//+------------------------------------------------------------------+
int SignalByRSI(string symbol_name, ENUM_TIMEFRAMES timeframe, int minutes_before, int upper_lev_rsi=70, int lower_lev_rsi=30) {
//--- время 1x и 2x минут назад
datetime time_before_0=TimeCurrent()-minutes_before*PeriodSeconds(PERIOD_M1);
datetime time_before_1=TimeCurrent()-2*minutes_before*PeriodSeconds(PERIOD_M1);
//--- смещение в барах времени 1х и 2х для заданного таймфрейма RSI (тф М15)
int shift_0=GetBarShift(symbol_name,timeframe,time_before_0);
int shift_1=GetBarShift(symbol_name,timeframe,time_before_1);
//--- значения RSI на барах 1х и 2х минут назад для заданного таймфрейма RSI (тф М15)
double prev_rsi_value_0=GetLastDataRSI(symbol_name,timeframe,shift_0);
double prev_rsi_value_1=GetLastDataRSI(symbol_name,timeframe,shift_1);
//--- значения цен закрытия баров 1х и 2х минут назад
double prev_close_0=GetPriceClose(symbol_name,timeframe,shift_0);
double prev_close_1=GetPriceClose(symbol_name,timeframe,shift_1);
//--- отладочные сообщения
string tf=EnumToString(TimeframeRSI);
MqlDateTime server_time;
TimeToStruct(TimeCurrent(),server_time);
Comment(
"\nВремя проверки RSI: ",TimeCurrent(),", минуты времени проверки: ",server_time.min,
"\nВремя ",minutes_before," минут назад: ",time_before_0,", бар ",tf," : ",shift_0,
"\nВремя ",minutes_before*2," минут назад: ",time_before_1,", бар ",tf," : ",shift_1,
"\nЗначение RSI ",minutes_before," минут назад на ",tf," : ",DoubleToString(prev_rsi_value_0,4),
"\nЗначение RSI ",minutes_before*2," минут назад на ",tf," : ",DoubleToString(prev_rsi_value_1,4),
//---
"\nЗначение Close ",minutes_before," минут назад > ",tf," : ",DoubleToString(prev_close_0,Digits()),
"\nЗначение Close ",minutes_before*2," минут назад > ",tf," : ",DoubleToString(prev_close_1,Digits())
);
//--- проверка наличия данных RSI
if(prev_rsi_value_1>0 && prev_rsi_value_0>0) {
//--- проверка условия на продажу
if(prev_rsi_value_1<upper_lev_rsi && prev_rsi_value_0>upper_lev_rsi) {
if(prev_close_0>SymbolInfoDouble(symbol_name,SYMBOL_BID)) return(OP_SELL);
}
//--- проверка условия на покупку
if(prev_rsi_value_1>lower_lev_rsi && prev_rsi_value_0<lower_lev_rsi) {
if(prev_close_0<SymbolInfoDouble(symbol_name,SYMBOL_ASK)) return(OP_BUY);
}
}
return(-1);
}
//+------------------------------------------------------------------+
Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
Obrigado pelo esclarecimento!
Eu também nunca confiei em otimistas em tantos anos - acho que é um ajuste. Mas é um pouco como quanto mais rica a cor, melhor. E também - quanto mais blocos com cores saturadas, melhor. Mas o que fazer ainda mais com esta confusão - não consigo pensar. Sempre tentei construir sistemas adaptativos, e não com uma seleção estúpida de valores para a história de um testador.
Talvez haja alguém que possa nos explicar tudo isso
Eu também nunca confiei em otimistas em tantos anos - penso neles como um remendo. Mas quanto mais saturada for a cor, melhor. E também - quanto mais blocos com cores saturadas, melhor. Mas o que fazer a seguir com esta confusão - não consigo pensar. Sempre tentei construir sistemas adaptativos, e não com uma seleção estúpida de valores para a história de um testador.
Talvez haja alguém que possa nos explicar tudo isso
É provável que ninguém explique. Restam 10-12 pessoas no fórum, algumas delas foram banidas e muitas delas não voltarão. Agora se você olhar para o fórum, há cerca de 5-7 pessoas, metade delas não responde a perguntas. Minha pergunta sobre o cronograma não foi respondida.
Você precisa olhar no quarto fórum - vi uma explicação do otimizador lá há algum tempo, mas não me lembro bem do que se tratava e onde estava...
Olá.
Você pode me dizer por que não é possível selecionar uma data do calendário suspenso se eu fizer isso em ambientes externos?Há alguma maneira de mudar para que você possa selecionar uma data em vez de digitá-la a partir do teclado?
Camaradas, eu nunca fiz nenhum ajuste histórico, então eu não conheço os meandros da leitura do gráfico após a otimização.
Existe tal gráfico após a passagem anual 2014-2015, onde olhar e o que isso significa? Interessado na cor e localização dos cubos, por que alguns estão no centro, outros abaixo/abaixo, e dois/três no mesmo quadrado?
Obrigado pelo esclarecimento!
Sim, muito provavelmente ninguém vai explicar. Restam apenas 10-12 pessoas no fórum, algumas delas foram banidas e muitas nunca mais voltaram. Agora, se você olhar para o fórum, cerca de 5-7 pessoas aparecem, metade delas não responde a perguntas. Minha pergunta sobre o cronograma ficou sem resposta.
Não há muito a explicar e ninguém está respondendo. O gráfico que você mostrou não tem sentido e como ele foi obtido é um mistério.
E a opção "Superfície bidimensional" na aba "Gráfico de otimização" do testador faz sentido (imho) quando queremos otimizar 2 parâmetros de entrada de um EA ou ver claramente, em quais valores de 2 parâmetros os resultados foram bons na história e se esses parâmetros são interdependentes, e se fazem sentido de todo.
Aqui está um exemplo da otimização de 2 parâmetros de entrada (talvez não seja o melhor, mas não consigo encontrar um exemplo melhor neste momento):
O eixo horizontal é o valor do 1º parâmetro em 16 incrementos, e o eixo vertical é o valor do 2º parâmetro, também em 16 incrementos. Quanto mais escuro o quadrado verde, maior o lucro (se a otimização pelo lucro) estava nos valores correspondentes dos parâmetros, quanto mais pálido, menor o lucro. O melhor resultado (por lucro histórico) foi no centro. O "monte" verde escuro parece estar em torno dele, o que sugere alguma dependência e regularidade entre estes 2 parâmetros e os parâmetros não são insignificantes, enquanto o resultado da otimização não é acidental. Portanto, vale a pena prestar atenção aos valores destes parâmetros 2x a partir do melhor resultado (no centro).
Em geral, tudo é muito simples. Quanto à forma de usá-la, bem, é uma questão de imaginação. Eu não olho para estes quadrados verdes por muito tempo ))
Seu gráfico tem apenas 0 nos dois eixos por alguma razão, e verticalmente estes 0's também são divididos em 3 passos intermediários, daí os "cubos um no centro, dois abaixo/cima, e dois/três no mesmo quadrado". E os resultados parecem aleatórios - "cubos" brancos e verdes são dispersos aleatoriamente. Portanto, o gráfico não tem sentido e não parece significar nada.
Olá.
Você pode me dizer por que é impossível selecionar uma data do calendário suspenso se eu fizer isso em ambientes externos?Há alguma maneira de mudar para que a data possa ser selecionada em vez de inseri-la a partir do teclado?