Meu 1º EA, problemas horário, estratégia - página 3

 
Romeu Masselai:

Obrigado pela explicação, tenho noção de tudo o que falou, embora seja um iniciante com pouquissimo conhecimento na linguagem, já sou experiente no mercado, e sei que é normal acontecer algumas vezes ainda mais com lotes maiores, porém como estou em fase de testes, está com lote mínimo, o que reduzia o problema de liquidez, e ainda, o preço foi direto no alvo, quase não passou calor, fiz as alterações que @Vinicius de Oliveira gentilmente forneceu, e ainda sim aconteceu novamente hoje, o que queria saber, é se existe alguma maneira de zerar essa derrapagem, o EA só vender no preço estabelecido ou além  já no loss  essa derrapagem poderia existir, visto o perigo de a ordem não ser executada e o mercado ir contra mim.


Boa noite, 

O  SL/TP que fica ligado a posição é um gatilho que dispara uma ordem a mercado. Para ter um stop gain com lucro desejado em ticks, você precisa emitir a saída com uma ordem a preço limite... exemplo: para um BUY deve ter uma SELL LIMIT na distância correta do preço de entrada. Infelizmente o stop loss tem que ser a mercado e a derrapagem é inevitável e as vezes machuca...

 
Rogerio Giannetti Torres:

Boa noite, 

O  SL/TP que fica ligado a posição é um gatilho que dispara uma ordem a mercado. Para ter um stop gain com lucro desejado em ticks, você precisa emitir a saída com uma ordem a preço limite... exemplo: para um BUY deve ter uma SELL LIMIT na distância correta do preço de entrada. Infelizmente o stop loss tem que ser a mercado e a derrapagem é inevitável e as vezes machuca...

Entendi, 2 dos 3 gains que tive na conta real foram executados com 2 ticks a menos que o definido no input, e o gain que tive hoje 1 tick a mais 😄,  considerando que é uma estratégia de scalp, o que foi lucrativo nos backtestes poderia não ter sido em conta real, na sua opinião os gains se aproximariam mais do input utilizando vps? Visto que todo o processo que vc mencionou de o preço atingir o gatilho, o ea disparar uma ordem a mercado, etc... aconteceria de maneira mais instantânea e não dependente da minha internet e processamento da minha máquina, e quem sabe hipoteticamente reduzindo esses 2 ticks de distância dos inputs para quem sabe em média 1 tick de distância?
 
Vinicius de Oliveira:

Romeu, peço desconsiderar essa minha última sugestão, se a sua corretora utilizar o modo de execução de mercado. Recebi o feedback (muito válido) de que o campo deviation não é considerado nesse caso:



... Para os dois casos abaixo (execução a pedido e execução instantânea) a sugestão pode ser válida:


Você sabe dizer como descubro se minha corretora utiliza ou não o modo de execução a mercado? No caso de ela usar ela desconsidera o campo de derrapagem e usa uma selagem padrão?
 
Romeu Masselai:
Entendi, 2 dos 3 gains que tive na conta real foram executados com 2 ticks a menos que o definido no input, e o gain que tive hoje 1 tick a mais 😄,  considerando que é uma estratégia de scalp, o que foi lucrativo nos backtestes poderia não ter sido em conta real, na sua opinião os gains se aproximariam mais do input utilizando vps? Visto que todo o processo que vc mencionou de o preço atingir o gatilho, o ea disparar uma ordem a mercado, etc... aconteceria de maneira mais instantânea e não dependente da minha internet e processamento da minha máquina, e quem sabe hipoteticamente reduzindo esses 2 ticks de distância dos inputs para quem sabe em média 1 tick de distância?

Romeu,

ajuda, mas não resolve, veja só: Vai haver um ganho na abertura de posições, mas como os gatilhos de stops  SL/TP  da posição são controlados pelo servidor MT5, então para o SL/TP  não haverá ganho nenhum , o VPS / VM só vai melhorar  o fluxo de dados entre o seu terminal MT5 e o servidor MT5... o que acontece do servidor MT5 até a B3 é o X da questão sobre o tempo de execução de uma ordem

Resumindo: O trade ideal de 1(um) contrato é aquele que abre a posição no preço desejado e encerra com o gain desejado. Na B3  operando índice e dólar isso só vai ocorrer na sorte e nos momentos de baixa volatilidade...

Eu uso VM pela infraestrutura, um data center tem energia e internet ininterruptas.

 
Romeu Masselai:
Você sabe dizer como descubro se minha corretora utiliza ou não o modo de execução a mercado? No caso de ela usar ela desconsidera o campo de derrapagem e usa uma selagem padrão?


Você descobre rapidinho clicando no botão Nova Ordem:



Romeu Masselai:
Você sabe dizer como descubro se minha corretora utiliza ou não o modo de execução a mercado? No caso de ela usar ela desconsidera o campo de derrapagem e usa uma selagem padrão?


Aí a ordem é preenchida conforme explicou o grande @Rogerio Giannetti Torres, que entende muito desse tal de mercado financeiro e se expressa muito bem:

"Em conta real as ordens sofrem derrapagem, isto é: A execução da ordem, mais frequentemente chamada de preenchimento da ordem, é feito conforme as quantidades ofertadas em cada preço, então final do execução você tem o preço médio de execução ..."

 
Vinicius de Oliveira:


Você descobre rapidinho clicando no botão Nova Ordem:




Aí a ordem é preenchida conforme explicou o grande @Rogerio Giannetti Torres, que entende muito desse tal de mercado financeiro e se expressa muito bem:

"Em conta real as ordens sofrem derrapagem, isto é: A execução da ordem, mais frequentemente chamada de preenchimento da ordem, é feito conforme as quantidades ofertadas em cada preço, então final do execução você tem o preço médio de execução ..."

Execução bolsa



 
Romeu Masselai:

Execução bolsa


Justamente o que eu não tinha mencionado! 😃

Mas, infelizmente, o modo de execução em bolsa também não considera o campo deviation:

 
int LossNumber()
  {
   int Res = 0;
   datetime time_start = iTime(_Symbol, PERIOD_D1, 0);

   if(HistorySelect(time_start,TimeCurrent()))
      for(int i = HistoryDealsTotal() - 1; i >= 0; i--)
        {
         const ulong Ticket = HistoryDealGetTicket(i);

         if(HistoryDealGetInteger(Ticket, DEAL_MAGIC) == EA_Magic_Number && HistoryDealGetString(Ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetDouble(Ticket, DEAL_PROFIT) < 0.0)
            Res ++;
        }
   return(Res);
  }
@Vinicius de Oliveira @Rogerio Giannetti Torres Resolvi modificar as requisições de ordens do EA para classe CTrade e a função que gerenciava as perdas diárias não funciona mais, alguém poderia me explicar por que?
 
Romeu Masselai:
@Vinicius de Oliveira @Rogerio Giannetti Torres Resolvi modificar as requisições de ordens do EA para classe CTrade e a função que gerenciava as perdas diárias não funciona mais, alguém poderia me explicar por que?

Você está definindo o Magic Number?

Precisa incluir SetExpertMagicNumber(EA_Magic_Number) em OnInit().

 
Vinicius de Oliveira:

Você está definindo o Magic Number?

Precisa incluir SetExpertMagicNumber(EA_Magic_Number) em OnInit().

Somente no input, como faço esse do oninit?
Razão: