Comprar stop Vender stop Grid conselheiro como uma classe - página 3

 
Vladimir Karputov:

Versão 1.003:

  • agora fecha TODAS as posições opostas quando uma posição é aberta.
  • A aquisição de preços atuais foi movida dentro das funções PlacesBuy e PlacesSell para proteger contra falhas e escorregamentos.
  • NaOnTradeTransaction os pedidos pendentes são colocados em um loop de tempo - por assim dizer, estamos batendo o servidor ao soco :) - Não é a melhor solução, mas ficará por enquanto.

Na verdade, agora podemos pensar:

  1. Qual é a melhor maneira de aumentar as posições (cálculo do volume do lote)?
  2. O que fazer com as posições opostas


  1. Como melhor aumentar a posição (cálculo do volume do lote) - de forma alguma, adicionando lotes, isto é uma pirâmide, isto é diferente, o lote deve permanecer constante.
  2. O que fazer com as posições opostas - Perto como está.
 

Recomendo adicionar este indicador ao modelo "tester.tpl":LifeHack Balance Equity, então o testador mostrará imediatamente as mudanças no equilíbrio e nos fundos. Aproximadamente assim:

Equilíbrio LifeHack Equilíbrio no testador


 
Vladimir Karputov:

Feito. Conecte o Vault, atualize os arquivos do projeto do Vault.



Olá Vladimir, você pode me acrescentar, por favor? muito obrigado.

 
Cid Ougaske:


Olá Vladimir, você pode me acrescentar, por favor? Muito obrigado.


Feito, adicionado.

O plano é fazer estatísticas como esta: quantas posições de uma direção estão abertas em uma fileira antes da virada.

Por exemplo: #1 Comprar, #2 Comprar, #3Comprar e #1Vender -> fechar todas as posições Comprar. Assim, as estatísticas serão: três posições.

 
Vladimir Karputov:

... conectar o modelo e passar os parâmetros de entrada para a classe EA



Feito, conectado.

Às vezes, há parâmetros demais. Recentemente, eu me tornei preguiçoso, então eu o faço desta maneira porque não preciso me preocupar em passar parâmetros para a EA. Quais são as desvantagens?

input double LotSize = 0.1;
input int    SL      = 500;
input int    TP      = 300;
//другие входные переменные

#include <AvLib\ClassEA.mqh> // тут лежит класс советника

CClassEA MyEA;
 

Vladimir, você pode me ligar, por favor?

 

Enquanto o Expert Advisor está trabalhando, os dados são escritos para a matriz na OnTradeTransaction. O formato de gravação é o seguinte: se uma posição Comprar é aberta, gravamos "+1"; se uma posição Vender é aberta, gravamos "-1".

Por exemplo:

  • Comprar - registramos "+1".
  • Comprar - registramos "+1".
  • Comprar - registramos "+1".
  • Venda - registramos "-1".

Quando os testes são concluídos, os dados da matriz são processados no OnTester e escritos no arquivo csv. O arquivo é criado emuma pasta compartilhada de todos os terminais de clientes Arquivos Comuns. O nome do arquivo é formado desta forma:

   string file_name="Direction_of_trades"+"_"+m_symbol.Name()+"_"+IntegerToString(StepGrid());

então a extensão "csv" é adicionada ao nome do arquivo:

   int filehandle=FileOpen(file_name+".csv",FILE_WRITE|FILE_CSV|FILE_COMMON);

Algoritmo de processamento da matriz: se o registro atual é a mesma direção que o anterior (corresponde à abertura de várias posições de uma direção em uma linha) - então aumentamos o contador em um, se o registro atual é oposto ao anterior (corresponde à inversão da direção da posição) - então atribuímos-lhe o valor do contador "1".

O arquivo csv resultante é fácil de processar em Excel:

primeiro passo: clique com o botão esquerdo do mouse sobre a coluna com os dados

clique com o botão esquerdo do mouse

segundo passo: inserir a tabela recomendada

inserir tabela recomendada


Estas são as estatísticas (para o passo "35" e o passo "65"):

direção_de_operações_EURUSD_35_65

 
Alexey Volchanskiy:

Vladimir, você pode me ligar, por favor?


Feito. Adicionado (não vi logo o correio, perdi-o).

 

A lista atual de usuários conectados ao projeto:

Usuários conectados ao projeto

 

Para a etapa 35, totais ampliados:

Direção_de_operações_EURUSD_35

Aqui podemos ver que

  • praticamente 50% de todos os casos são quando a duração do comércio ininterrupto é igual a "1". Portanto, temos situações do seguinte tipo: abrimos Comprar e depois revertemos a posição (ou seja, fechamos Comprar com prejuízo e abrimos Vender) ou esta situação: abrimos Vender e depois revertemos a posição (ou seja, fechamos Vender com prejuízo e abrimos Comprar). Assim, situações com negócios ininterruptos de comprimento "1" são uma perda garantida.
  • Aproximadamente 25% de todos os casos com a duração de negócios ininterruptos igual a "2", pelo seguinte exemplo: abrimos Buy, depois abrimos outra Buy e revertemos a posição (isto é, fechamos duas Buy e abrimos Sell - resultando em uma perda igual a zero).

Acho que estas categorias mais numerosas (duração de negócios ininterruptos igual a "1" e "2") devem ser consideradas com mais detalhes a fim de corrigir a estratégia de colocar ordens Stop pendentes.

Razão: