Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1406

 
Marco Nicholas #:
Olá. Você pode aconselhar como implementar corretamente esta condição no código.

Preciso abrir a primeira posição após o tempo especificado nos ajustes (hora, minuto, exemplo "abrir primeiro comércio após 23-55") e depois desconsiderar esta condição.

Este código funciona perfeitamente, mas abre absolutamente todos os negócios após "one_time_current.hour" e "one_time_open.min". Só preciso executar esta condição uma vez (para abrir 1 posição) e não aplicá-la às subseqüentes.

Olá, Marco!

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min && PositionsTotal()==0)

Cumprimentos, Vladimir.

 
MrBrooklin #:

Olá Marco!


Atenciosamente, Vladimir.

Obrigado, é um nome um pouco errado. Este código não abre muitas posições. Sem ela, abre muito mais.
 
Marco Nicholas #:
Olá. Você pode aconselhar como implementar corretamente esta condição no código.

Preciso abrir a primeira posição após o tempo especificado nos ajustes (hora, minuto, exemplo "abrir primeiro comércio após 23-55") e depois desconsiderar esta condição.

Este código funciona perfeitamente, mas abre absolutamente todos os negócios após "one_time_current.hour" e "one_time_open.min". Só preciso executar esta condição uma vez (para abrir 1 posição) e não aplicá-la às subseqüentes.

Olá Marco! Você pediu ajuda para que uma posição fosse aberta. Agora você está escrevendo isso:

Спасибо, немного не то. Такой код не дает открыть много позиции. Без него открывает намного больше.

Primeiro você precisa decidir quantas posições você quer abrir - muitas ou uma. Talvez a tradução automática das palavras não permita que você formule corretamente seu pedido.

Cumprimentos, Vladimir.

 
Marco Nicholas #:
Olá. Você pode aconselhar como implementar corretamente esta condição no código.

Preciso abrir a primeira posição após o tempo especificado nos ajustes (hora, minuto, exemplo "abrir primeiro comércio após 23-55") e depois desconsiderar esta condição.

Este código funciona perfeitamente, mas abre absolutamente todos os negócios após "one_time_current.hour" e "one_time_open.min". Só precisamos executar esta condição uma vez (para abertura de 1 posição) e não aplicá-la às subseqüentes.

Então deve haver outra condição para as próximas, mas sem ignorar a condição "depois das 23:55", é assim que eu a entendo?

 
MrBrooklin #:

Olá Marco! Você pediu ajuda para abrir uma posição. Agora você está escrevendo isso:

Primeiro, você precisa decidir quantas posições você quer abrir - muitas ou uma. Talvez a tradução automática das palavras não permita que você formule corretamente seu pedido.

Cumprimentos, Vladimir.

Sim, é verdade, nós nos entendemos mal. Quando eu escrevi:

"Este código funciona bem, mas absolutamente todas as negociações são abertas após "one_time_current.hour" e "one_time_open.min". mas só precisamos executar esta condição uma vez (para abrir 1 posição) e não aplicá-la às subseqüentes".

Eu queria esclarecer isto, não para abrir uma posição " 1 posição" (você deve ter entendido desta forma), eu queria aplicar a condição de abrir apenas a primeira posição e não aplicá-la às posições seguintes.

Obrigado por responder.

 
Alexey Viktorov #:

Então deve haver outra condição para as próximas posições, mas sem ignorar a condição "depois das 23:55", é assim que eu entendo isso?

Acontece, sim, que não precisa ser aplicada (cancelada) para as próximas posições. Só precisamosabrir a primeira posição (como para o início da EA, após uma determinada hora e minuto), e para as posições subseqüentes esta condição não precisa ser aplicada.

É possível fazer tudo isso em uma única condição?

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
 
Marco Nicholas #:

Acontece que sim, não precisa ser aplicada (cancelada) às posições seguintes. Só precisa seraplicada para abrir a primeira posição (como para o início da EA, após uma determinada hora e minuto), e para posições subseqüentes esta condição não precisa ser aplicada.

É possível fazer tudo isso em uma única condição?

  bool first_position_was_opened=false;
  ...
  if(first_position_was_opened || ( one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min))

E não se esqueça de definir "first_position_was_opened=true" após abrir qualquer posição.

A variável "first_position_was_opened" deve ser global ou estática.
 
Por favor, ajudem!!!
Preciso de uma função que calcule os lucros da última semana para um símbolo e um magik específicos.
Eu encontrei exemplos sem magik, mas não consigo fazer magik funcionar((.
 
JRandomTrader #:

E não se esqueça de definir "first_position_was_opened=true" após abrir qualquer posição.

A variável "first_position_was_opened" deve ser global ou estática.

Obrigado. Interessante variante de trabalho.

Também quero notar que minha primeira variante também funcionou originalmente, sob uma condição: se você dividir as vagas para a primeira e para as posições subseqüentes. Também é possível por outro meio.

if(one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)
if(item_positions==0) для первой


if(item_positions>0) для последующих

Graças a suas respostas, o aprendizado do mql5 é muito mais rápido.
 

Ou você pode usar PositionsTotal() em vez da variável first_position_was_opened no código de @JRandomTrader:

if(PositionsTotal() > 0 || (one_time_current.hour>=one_time_open.hour && one_time_current.min>=one_time_open.min)) {}

Nesse caso, essa variável não é necessária e você não precisa definir essa variável como True após a abertura e como False após o fechamento de todas as posições.