Discussão do artigo "Explorando os Padrões Sazonais de Séries Temporais Financeiras com o Boxplot" - página 15

 
Maxim Dmitrievsky:

Você quer minha aprovação? Você poderia publicá-la se quisesse, com uma nota dizendo: "É aqui que precisamos investigar".

Às vezes, é irritante divulgar isso de uma forma que seja de sua responsabilidade. Estou disposto a delegar.

[Excluído]  
fxsaber:

Às vezes é irritante dizer que você não é responsável. Estou disposto a delegar.

Entregue-o a mim e você não precisará delegar.

Mas não para os ucranianos grosseiros que fazem ofertas excessivas.

 
Maxim Dmitrievsky:

Entre em contato comigo e eu não precisarei delegar.

Tenho um interesse pessoal, portanto, somente em público com um compromisso de pesquisa em público.

[Excluído]  
fxsaber:

Tenho um interesse particular, portanto, somente em público com um compromisso de pesquisa em público.

Vá em frente, vou pesquisar meu próprio bot.

 
Maxim Dmitrievsky:

Continue.

Você vai fazer isso?

[Excluído]  
fxsaber:

Você vai fazer isso?

Faço, desde que seja uma pesquisa gratuita.

 
Maxim Dmitrievsky:

Eu aceito, já que se trata de um estudo livre para todos

Consultor

// https://www.mql5.com/pt/articles/7038

#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

input int inPeriod = 25; // Período Mashka
input int inLow = -2;    // Limite inferior da diferença entre o preço e o MAP - entrada
input int inHigh = 0;    // O limite superior da diferença entre o preço e o MAP é a saída

const int hnd = iMA(NULL, 0, inPeriod, 0, MODE_SMA, PRICE_CLOSE); // https://www.mql5.com/ru/forum/170952/page152#comment_14131263

const double dLow = inLow * _Point;
const double dHigh = inHigh * _Point;

double maArr[], prArr[];

input int inStartHour = 0;
input int inCountHours = 23;

const int EndHour = inStartHour + inCountHours;

bool SystemON()
{
  int CurrentHour = (int)(TimeCurrent() / 3600) % 24;

  if ((EndHour >= 24) && (CurrentHour < inStartHour))
    CurrentHour += 24;
             
  return((inStartHour <= CurrentHour) && (CurrentHour <= EndHour));
}

sinput double inMaxAbsoluteDD = 0; // Rebaixamento máximo absoluto

const double StartBalance = AccountInfoDouble(ACCOUNT_BALANCE);

bool IsMaxAbsoluteDD()
{

  return(inMaxAbsoluteDD && ((StartBalance - AccountInfoDouble(ACCOUNT_EQUITY)) > inMaxAbsoluteDD));
}

void OnTick()
{
  static bool Position = false;

  if (!IsMaxAbsoluteDD())
  {
    CopyBuffer(hnd, 0, 0, 1, maArr);
    CopyClose(NULL, 0, 0, 1, prArr);
    
    const double pr = prArr[0] - maArr[0];
  
    Position = Position ? !((pr >= dHigh) && OrderSelect(0, SELECT_BY_POS) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0))
                        : (pr < dLow) && SystemON() && (OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0) > 0);
  }
}

sinput int inMinTrades = 500; // Número mínimo de negociações (posições).

double OnTester()
{
  return(((TesterStatistics(STAT_TRADES) >= inMinTrades) ? TesterStatistics(STAT_PROFIT_FACTOR) : 0));
}


Otimização

; Подключиться к MetaQuotes-Demo.
; Выбрать в Тестере советник по ссылке https://www.mql5.com/ru/forum/327812/page15#comment_14162754
; Этот текст скопировать в буфер обмена и сделать CTRL+V во вкладке Настроки Тестера.
; Запустить Оптимизацию, нажав Старт.
; Применить лучший проход.
; Отключить режим Оптимизации, выставить начало на 2015 год и запустить одиночный проход.
[Tester]
Symbol=EURUSD
Period=M15
Optimization=2
Model=2
FromDate=2017.01.01
ToDate=2019.12.09
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
[TesterInputs]
inPeriod=20||5||5||250||Y
inLow=-40||-500||10||100||Y
inHigh=20||-100||10||500||Y
inStartHour=0||0||1||23||Y
inCountHours=3||2||1||23||Y
inMaxAbsoluteDD=2000
inMinTrades=500
[Excluído]  
fxsaber:

Conselheiro


Otimização

Não vejo nenhuma diferença em relação ao original, exceto pelas entradas.

meu bot está funcionando desde 2012 após a otimização.

O que investigar? Algum outro intervalo de tempo encontrado?

 
Maxim Dmitrievsky:

Não vejo uma única diferença em relação ao original, exceto pelas entradas.

Você achou que eu estava brincando quando disse isso?

Tenho meu bot funcionando após a otimização desde 2012.

Eu não entendo.

O que investigar? Algum outro intervalo de tempo encontrado?

Pelo menos, o Walk-forward. + análise de cluster. Espero que @Stanislav Korotky se junte a nós com seu kit de ferramentas.


Bem, todos podem reproduzi-lo - em três minutos, o Optimiser encontra resultados não piores do que a abordagem do artigo.

[Excluído]  
fxsaber:

Achou que eu estava brincando quando disse isso?


Não estou entendendo.

O bot do artigo foi otimizado (inalterado), ele funciona em OOS, nada de novo.... Ele não foi incluído no artigo, pois o artigo não trata de otimização

fxsaber:

Pelo menos, o Walk-forward. + análise de cluster. Espero que @Stanislav Korotky se conecte com seu kit de ferramentas.


Bem, todos podem reproduzi-lo. Em três minutos, o Optimiser encontra resultados não piores do que a abordagem do artigo.

Bem, deixe-os reproduzi-lo, mas os parâmetros definidos são inúteis, levará muito tempo para otimizá-lo

Eles nunca teriam descoberto isso sem a pesquisa, até porque ainda estariam tentando vender.