Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 517

 
Alexey Viktorov:

E então você continua a usar o mesmo texto.


))) Dois objetos, um mais velho e um mais novo, eu preciso do preço do objeto mais novo (mais próximo) e eu recebo o preço do objeto mais velho (mais distante) no comentário. Por quê? Se o laço anterior, comentado, devolvia o objeto mais distante, o laço atual deve retornar o mais próximo - último, mas retorna o penúltimo. Estou sentindo falta de algo aqui.
 
PolarSeaman:
))) Dois objetos, um mais velho e um mais novo, eu preciso do preço do objeto mais novo (mais próximo) e recebo o preço do objeto mais velho (mais distante) no comentário. Por quê? Se o laço anterior, comentado, devolvia o objeto mais distante, o laço atual deve retornar o mais próximo - último, mas retorna o penúltimo. Estou sentindo falta de algo aqui.

Um, e dois - para selecionar objetos no loop pelo tempo, você precisa comparar duas vezes - o objeto anterior e o atual. Se o tempo atual for maior, então armazene-o em uma variável a ser verificada na próxima iteração do laço. No final do loop, a variável conterá o objeto mais recente criado.

 
YanSay:

Tentei, não funciona, devo estar fazendo algo errado(

O erro mais grosseiro aqui é especificar o valor 100 em vez do bilhete no argumento da função OrderDelete().

O próximo erro não é tão rude, mas está relacionado ao fato de que o valor calculado de Stop Loss é verificado ao invés de seu valor real.

O tipo de pedido também não é verificado. E se tivermos escolhido uma ordem de mercado? Como apagá-lo? O símbolo do pedido não foi verificado.

Levando em consideração estes erros, obtemos o código de eliminação da ordem pendente quando o preço atinge seu Stop Loss:

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())
      continue;

   if (OrderMagicNumber() != 100)
      continue;

   if (((OrderType == OP_BUYSTOP || OrderType() == OP_BUYLIMIT) && Bid <= OrderStopLoss()) ||
       ((OrderType == OP_SELLSTOP || OrderType() == OP_SELLLIMIT) && Ask >= OrderStopLoss() && OrderStopLoss() > 0.0))
   {
      if (OrderDelete(OrderTicket()))
         RefreshRates();
   }
                                        
}   
Também em seu código, o Stop Loss é verificado imediatamente após a abertura de um pedido. Parece que depois de abrir uma ordem pendente, este código não é mais executado. Ou seja, é preciso separar os ramos de execução. Um é responsável pela definição do pedido, e o segundo é responsável pelo seu acompanhamento.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 

Olá, senhoras e senhores!

Você pode me dizer como pegar a combinação de chaves como Ctrl+1. Eu sei como pegar uma tecla no teclado.

Mas eu preciso de uma combinação no mt4 - como fazer isso !

 
Игорь:

Olá, senhoras e senhores!

Você pode me dizer como pegar a combinação de chaves como Ctrl+1. Eu sei como pegar uma tecla no teclado.

Eu preciso de uma combinação de Mt4 - como fazer isso !

O evento OnChartEvent, analisa parâmetros lparam e sparam, porque pressionar Ctrl+1 são dois eventos.

 
Ihor Herasko:

OnChartEvent evento, analisar parâmetros lparam e sparam, já que pressionar Ctrl+1 são dois eventos.

Não, não funciona, eu tentei!!!

Ela só exibe a prensa ctrl e todas as outras mais 1's e cartas não funcionam!!!

 
Игорь:

Não, não funciona, eu tentei!!!

Ela só exibe kntrl press e todos os outros mais 1's e cartas não funcionam!!!

Eu escrevi:

pressionando Ctrl+1 são dois eventos

Apanhar dois eventos e analisar:

2018.04.05 12:26:32.170 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 17, dparam: 1.0, sparam: 285
2018.04.05 12:26:32.396 Test EURUSD,M15: OnChartEvent, id: CHARTEVENT_KEYDOWN, lparam: 49, dparam: 1.0, sparam: 2

Esta é uma prensa Ctrl+1.

 
Ihor Herasko:

Eu escrevi:

Apanhar dois eventos e analisar:

Esta é uma prensa Ctrl+1.

Aqui eu tenho apenas contracl ou 1 e nenhum evento no outro ou mostrar seu código!

Depois de pressionar ctrl nenhum outro evento até que você libere ctrl !

Eu encontrei o erro, obrigado!

 
Eliminadas as duplicatas.
 
Vitaly Muzichenko:

Com um perfil? =)

:)

Razão: