Bibliotecas: BestInterval - página 22

 
fxsaber:

Ele funcionará corretamente se você fizer com que o MT4Orders seja incluído antes do BestInterval.

A biblioteca se refere apenas a operações de negociação e seu histórico. Além disso, ela pode funcionar em paralelo com a SB e outras.

Portanto, os indicadores não a afetam de forma alguma.

Entendo, obrigado, vou tentar.
 
fxsaber:

O BestInterval na compensação somente em um caso específico (feito por mim) considera o histórico de negociação corretamente.

Qual é esse caso, se não for um segredo? Talvez eu possa usar algo semelhante sem xamanismo.

 
traveller00:

Qual é o caso, se não for um segredo? Talvez eu consiga usar algo semelhante sem nenhum xamanismo.

Um TC que muda de forma.

 
fxsaber:

Não posso responder a isso. Ainda não sei.

Dizer que estou satisfeito é claramente um eufemismo..... O BestInterval está incrível agora. E as alterações são mínimas. Como sempre, um exemplo.


Aqui está um passe de 24 horas.


Aplicamos o BestInterval clássico.

Profit = 8018.00 = 8018.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.09.14 - 2019.12.04)
00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09
SUMMARY: 00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09

Profit = 10721.00 = 8018.00 + 2703.00 (33.71%) - Amount of Delete Intervals = 1 (2019.09.14 - 2019.12.04), 13:00 - 08:00, CountHours = 18
00:00:00 - 08:03:48 : Profit = 3278.00 (30.58%), Total = 161 (79.50%), PF = 2.21, Mean = 20.36, DD = 518.00, RF = 6.33
13:07:59 - 23:59:59 : Profit = 7443.00 (69.42%), Total = 389 (74.55%), PF = 2.14, Mean = 19.13, DD = 417.00, RF = 17.85
SUMMARY: 00:00:00 - 23:59:59 : Profit = 10721.00 (100.00%), Total = 550 (76.00%), PF = 2.16, Mean = 19.49, DD = 536.00, RF = 20.00

Podemos ver que o lucro aumentou em um terço, e outros indicadores ficaram melhores.


Mas queríamos flexibilidade. E aqui está.

Profit = 8018.00 = 8018.00 + 0.00 (0.00%) - Amount of Delete Intervals = 0 (2019.09.14 - 2019.12.04)
00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09
SUMMARY: 00:00:00 - 23:59:59 : Profit = 8018.00 (100.00%), Total = 739 (73.34%), PF = 1.44, Mean = 10.85, DD = 1317.00, RF = 6.09

Profit = 4868.00 = 8018.00 + -3150.00 (-39.29%) - Amount of Delete Intervals = 1 (2019.09.14 - 2019.12.04), 20:00 - 01:00, CountHours = 4
00:00:00 - 01:31:54 : Profit = 1067.00 (21.92%), Total = 32 (87.50%), PF = 4.63, Mean = 33.34, DD = 177.00, RF = 6.03
19:29:54 - 23:59:59 : Profit = 3801.00 (78.08%), Total = 118 (83.90%), PF = 5.53, Mean = 32.21, DD = 249.00, RF = 15.27
SUMMARY: 00:00:00 - 23:59:59 : Profit = 4868.00 (100.00%), Total = 150 (84.67%), PF = 5.29, Mean = 32.45, DD = 310.00, RF = 15.70


O lucro não aumentou, ele diminuiu! Mas veja os outros indicadores. Em vez de encontrar o intervalo com o maior lucro e a maior probabilidade de ajuste, foi encontrado um intervalo muito mais estreito, mas muito mais saboroso do que o clássico.


A inovação é adicionada da seguinte forma

#define  BESTINTERVAL_SLIPPAGE // Criando um filtro artificial para calcular o BestInterval.


A qualidade da pesquisa de padrão de mercado agora está muito melhor. Implicações significativas para o trabalho com vários testadores.

[Excluído]  
Portanto, 150 negociações é uma opção muito mais provável, não?
 
trader_number_one:
Portanto, 150 negociações é um ajuste muito mais provável, não?

Onúmero de negociações depende do comprimento do intervalo.

 

Às vezes, a exclusão de intervalos dá errado. Nomeadamente

const double Profit = dDeals[i].Profit + SlipPerLot * dDeals[i].Lots;

produz NaN porque dDeals[i].Lots é igual a NaN em i=0.

Parece que as pernas crescem a partir da função int Set( const DEAL &dDeals[] ) em que o campo Lotes não é preenchido quando Amount=0. Ou é mais correto dizer que Lots não é preenchido em void ToNull( void )?

De qualquer forma, o bug é muito desagradável, raramente ocorre e não é fácil de depurar.

 
traveller00:

Mas, de qualquer forma, o bug é muito desagradável, raramente se manifesta e não é fácil de depurar.

Sim, fiquei feliz em publicá-lo sem verificá-lo adequadamente. Vou dar uma olhada, obrigado.

 
Corrigi a função int Set( const DEAL &dDeals[] ) preenchendo Lots com zero. Se eu tiver corrigido errado ou deixado passar alguma outra coisa, por favor, me escreva de volta. Obrigado.
 
traveller00:
Corrigi a função int Set( const DEAL &dDeals[] ) preenchendo Lots com zero. Se eu tiver corrigido errado ou deixado passar alguma outra coisa, por favor, me escreva de volta. Obrigado.

Até o momento, fiz apenas isso

        const double Profit = dDeals[i].Profit ? dDeals[i].Profit + SlipPerLot * dDeals[i].Lots : 0;

O restante não precisa ser corrigido para Lotes. Mas há erros relacionados a outro (antigo). Precisam ser corrigidos.