mql5 - linha vertical depois de um certo tempo desde o último comércio

 

Olá a todos!

Pessoal, alguém pode ajudar/sugredir como implementar a seguinte idéia na MQL5 (eu mesmo acabei de conhecer Metatrader - ainda não estou escrevendo nenhum código).

Algoritmo de código:
1) O horário de fechamento do último comércio e o resultado do comércio são determinados.

2) Determina o resultado total do dia após o fechamento da última negociação.

3) De acordo com as configurações do indicador, uma linha vertical é traçada em um certo intervalo no futuro a partir do momento do fechamento do último comércio.
Configurações:
- se o resultado da última negociação for negativo e o resultado do dia for negativo, uma linha vertical é traçada a uma distância de 24 horas (um dia) para o futuro.
- se o resultado do último comércio for negativo e o resultado do dia for positivo, a linha vertical é traçada 2 horas para o futuro.
- se o resultado do último comércio for positivo, a linha vertical é traçada 1 hora para o futuro.

4) A linha permanece no gráfico mesmo após a abertura de uma nova negociação, mas se move após o fechamento de uma nova negociação de acordo com o algoritmo acima, porque já uma nova negociação foi a última a ser fechada.

Nota.
O resultado positivo é um resultado positivo, não importa se a ordem foi acionada ou se a posição foi fechada manualmente. Isto é, mais na balança.
Um resultado negativo é menos ou zero, como resultado de um acordo.

P.S>

A essência deste código para mim é me acostumar a fazer uma pausa após uma troca, e não ficar muito quente. Tenho notado que minhas perdas são causadas pela tentativa de ganhar de volta rapidamente negócios mal sucedidos. Para mim é possível colocar uma linha manualmente e movê-la de acordo com esta regra, mas preciso exatamente de uma variante de programa, porque no futuro quero vincular condições/filtros adicionais ao indicador, ou seja, complicar o algoritmo de tomada de decisão.

Obrigado de antemão e boa sorte!

 

A título de exemplo.

void moveVLine(string obj_name, datetime obj_time)
{
   int         tm       = PeriodSeconds(PERIOD_D1);
   datetime    next_day = obj_time + tm;
   MqlDateTime tm_str;
   
   TimeToStruct(next_day,tm_str);
   if(tm_str.day_of_week == 6)
   {
      tm *= 3;
      next_day = obj_time + tm;
   }
   ObjectMove(0,obj_name,0,next_day,0);
   
   return;
}
 
Сергей Таболин:

A título de exemplo.

Sergey, obrigado!
Eu lhe informarei como vai ser quando eu der seu exemplo
 
Сергей Таболин:

A título de exemplo.

O exemplo não compilava :(
Como entendi - o código é um fragmento e é necessário acrescentar alguns componentes obrigatórios (#propriedade, etc.)?
 

Encontrei um indicador semelhante que simplesmente desenha uma linha vertical em um determinado momento - vou tentar usá-lo como base, adicionando os algoritmos necessários em vez de um tempo estático pré-determinado.
https://www.mql5.com/ru/code/18449

Vertical line
Vertical line
  • www.mql5.com
Индикатор рисует, а затем перемещает нарисованную вертикальную линию (OBJ_VLINE) на заданное время (часы и минуты). Входные параметры: Из параметра "Use only Hours and minutes" используются только часы и минуты.  Вертикальная линии рисуется для текущего дня. Если начинается новый день, то нарисованная линия переносится на этот новый день на...
 
Estupidez.
Há uma fonte (código acima) que desenha uma linha em uma barra em um determinado momento. Basta remover o tempo dos parâmetros de entrada e obter o valor de tempo do histórico de negócios. Olhando através da documentação Funções comerciais, suspeito que a verdade está em algum lugar entre as funções do grupo História. Até agora eu não vejo nada :(
Alguém pode me ajudar/dizer como obter dados do último negócio da história (hora de fechar uma posição e fixar o resultado de um negócio)?
 
renatmt5:
O exemplo não compilava :(
Como entendi - o código é um fragmento e é necessário acrescentar alguns componentes obrigatórios (#propriedade, etc.)?

Esta é uma função de transferência de linha vertical. Deve ser chamado a partir do código principal, se certas condições forem cumpridas. Além disso, a própria linha já deve estar lá.

 
Сергей Таболин:

Esta é uma função de transferência de linha vertical. Deve ser chamado a partir do código principal, se certas condições forem cumpridas.

OK, obrigado novamente!
 
renatmt5:

Olá a todos!

Pessoal, alguém pode ajudar/sugredir como implementar a seguinte idéia na MQL5 (eu mesmo acabei de conhecer Metatrader - ainda não estou escrevendo nenhum código).

Código Algoritmo:
1) Determina a hora de fechamento do último comércio e o resultado comercial.

2) Determina o resultado total do dia após o último fechamento comercial.

3) De acordo com as configurações do indicador, uma linha vertical é traçada em um certo intervalo no futuro a partir do momento de fechamento da última negociação.
Configurações:
- se o resultado da última negociação for negativo e o resultado do dia for negativo, uma linha vertical é traçada sobre uma distância de 24 horas (24 horas) para o futuro.
- se o resultado do último comércio for negativo e o resultado do dia for positivo, a linha vertical é traçada 2 horas para o futuro.
- se o resultado do último comércio for positivo, uma linha vertical é traçada a uma distância de 1 hora para o futuro.

4) A linha permanece no gráfico mesmo após a abertura de um novo comércio, mas é movida após o fechamento de um novo comércio de acordo com o algoritmo acima, já que o novo comércio já se tornou o último comércio fechado.

Nota.
Um resultado positivo é uma vantagem, independentemente de a ordem ter sido acionada ou de uma posição ter sido fechada manualmente. Isto é, mais na balança.
Um resultado negativo é um menos ou zero, como resultado do comércio.

P.S>.

A essência deste código para mim no seguinte - acostumar-me a fazer uma pausa após os negócios e não quebrar uma onda de calor. Notei que minhas perdas são causadas pela tentativa de reconquistar rapidamente negócios mal sucedidos. Para mim é possível colocar uma linha manualmente e movê-la de acordo com esta regra, mas preciso exatamente de uma variante de programa, porque no futuro quero vincular condições/filtros adicionais ao indicador, ou seja, complicar o algoritmo de tomada de decisão.

Agradecemos antecipadamente e boa sorte a todos!

Portanto, vamos chamá-lo de um indicador.

Portanto, vamos colocar as coisas desta maneira. Vamos definir que vamos interrogar o histórico comercial uma vez por minuto. Então, precisamos de mais dois parâmetros:

  • levar em conta os últimos acordos somente para o símbolo atual (o símbolo no qual o indicador está rodando) ou para todos?
  • e contabilidade do número mágico (considere apenas um ou todos)?


Vou precisar de uma resposta sua. Tentarei aparecer novamente nesta linha até a hora do almoço.

 
Vladimir Karputov:

Um indicador é um indicador.

Portanto, é assim. Vamos definir que vamos interrogar o histórico comercial uma vez por minuto. Então, precisamos de mais dois parâmetros:

  • levar em conta os últimos acordos somente para o símbolo atual (o símbolo no qual o indicador está rodando) ou para todos?
  • e contabilidade do número mágico (considere apenas um ou todos)?


Vou precisar de uma resposta sua. Tentarei aparecer novamente nesta linha até a hora do almoço.

Vladimir, obrigado por ter tido tempo para fazer minha pergunta. Tão simples quanto possível inicialmente, pois eu mesmo espero refiná-lo a longo prazo, em vez de pará-lo :)
- somente sobre o símbolo atual
- Em relação ao número mágico - não tenho certeza do que se trata. Como algum tipo de identificação? Para ser honesto, não é tão importante para mim. Eu só preciso de dados sobre uma última transação fechada

 

Gostaria de esclarecer o termo "último comércio".

É o último negócio dentro do dia atual? Ou para os últimos N dias?