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

 
Olá.
Não tenho separadores na janela de ferramentas do MT-5 - calendário, sinais, poderia dizer-me como adicioná-los?
 
sergey966121:
Olá.
não tenho separadores na janela de ferramentas do MT5: calendário, sinais, pode dizer-me como adicioná-los?

As definições no servidor de negociação são responsáveis pelo separador "Calendário". Se não houver tabulação, solicitar a sua inclusão ao comerciante onde a conta de negociação é aberta.

Se não houver separador "Sinais":

Se não houver um separador "Sinais" no MetaTrader

Adicionado: É o sistema operativo Windows?

 

Olá!

Posso obter os valores TP e SL de uma posição usandoPositionGet...(), mas como posso definir o takeprofit de toda a posição?

Não o consigo obter de momento.

 
Alexander Kharlamov:

Olá!

Posso obter os valores TP e SL de uma posição usandoPositionGet...(), mas como posso definir o takeprofit de toda a posição?

Obrigado!

Assim, utilizando a biblioteca padrão e a classe CTrade:

#include <Trade\Trade.mqh>
Ctrade my_trade
...
my_trade.Buy(...
//или
my_trade.Sell(...
//или
my_trade.PositionModify(...
 
Karputov Vladimir:

Aí está, utilizando a biblioteca padrão e a classe CTrade:

Obrigado!
 
Alexander Kharlamov:
Obrigado!
De nada. A utilização da biblioteca padrão torna a programação muito fácil.
 
Alexander Kharlamov:
Obrigado!

Aqui está um exemplo de um script (PositionModify(SL).mq5) - primeiro abre uma posição, e depois altera a paragem da perda desta posição:

//+------------------------------------------------------------------+
//|                                           PositionModify(SL).mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
//--- variable
CTrade   my_trade;         // object CTrade
int      my_stop_loss=30;  // stop level
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   my_trade.Buy(0.01);
   Sleep(6000);

   double m_adjusted_point;         // point value adjusted for 3 or 5 points
//--- tuning for 3 or 5 digits
   int digits_adjust=1;
   if(Digits()==3 || Digits()==5)
      digits_adjust=10;
   m_adjusted_point=Point()*digits_adjust;

   double m_stop_loss=my_stop_loss*m_adjusted_point;

   MqlTick m_tick;
   SymbolInfoTick(Symbol(),m_tick);

   double sl=NormalizeDouble(m_tick.bid-m_stop_loss,Digits());
   my_trade.PositionModify(Symbol(),sl,0);
  }

Restrição de utilização: só funcionará correctamente em contas de compensação.

Arquivos anexados:
 

Consegui definir o TP para a posição, obrigado.

Será possível utilizar a MQL5 para rastrear o evento - TP desencadeado? Ou é necessário verificar o estatuto da posição?

 
Alexander Kharlamov:

Consegui definir o TP para a posição, obrigado.

Será possível utilizar a MQL5 para rastrear o evento - TP desencadeado? Ou é necessário verificar o estatuto da posição?

Claro que sim, a posição irá informá-lo sobre o evento - é apenas uma entidade (um registo na base de dados + algo mais) no servidor da empresa de corretagem.
 

Ainda não lidei com isso devido a impraticabilidade, mas os eventos da OnTrade e OnTradeTransaction não irão rastrear o fecho de posição por take?

Trade

O evento comercial é gerado quando uma operação comercial no servidor comercial é concluída. O evento comercial é tratado pela função OnTrade() para as seguintes operações comerciais

  • definição, modificação ou eliminação de uma ordem pendente;
  • cancelamento de uma ordem pendente em caso de insuficiência de fundos ou após a expiração da mesma;
  • desencadeamento de uma ordem pendente;
  • abertura, adição ou encerramento de uma posição (ou parte de uma posição);
  • modificação de uma posição aberta (mudança em paragens).

TradeTransaction

Como resultado de certas acções realizadas numa conta comercial, o seu estado muda. Tais acções incluem:

  • Envio de um pedido comercial por qualquer aplicação MQL5 no terminal do cliente usando as funções OrderSend e OrderSendAsync e a sua posterior execução;
  • Envio de um pedido comercial através da interface gráfica do terminal e a sua posterior execução;
  • Desencadeamento de ordens pendentes e de paragem no servidor;
  • Execução de operações do lado do servidor comercial.

Como resultado destas acções, as transacções comerciais são executadas por conta:

  • processamento de um pedido comercial;
  • modificação de encomendas em aberto;
  • Alteração do histórico da encomenda;
  • Mudar a história dos negócios;
  • Mudança de posições.

Por exemplo, quando uma ordem de compra no mercado é enviada, é processada, é criada uma ordem de compra apropriada para a conta, a ordem é executada, retirada da lista de ordens abertas, adicionada ao histórico de ordens, depois o negócio correspondente é adicionado ao histórico e é criada uma nova posição. Todas estas acções são transacções comerciais. A chegada de cada transacção deste tipo ao terminal é o evento TradeTransaction. Este evento é tratado pela função OnTradeTransaction.