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

 
Alexey Kozitsyn:
Parece estar tudo no ponto e mesmo com referências... Justamente quando alguém declara ter lido a documentação e pede para remover a rede (que, a propósito, é utilizada em FORTS)... é preciso ser sarcástico aqui.
Terei isso em mente, preparem-se para ser sarcásticos.
 
Anatoli Kazharski:
Certifique-se de que não é mandado embora. )
é demasiado tarde, já lá estás.
 
new-rena:
tarde, já lá estás.
É óbvio quem e onde. )
 
Vladimir Karputov:

Exemplo para uma conta de cobertura:

A primeira operação é Comprar 0,02 e a segunda operação é Vender 0,01. Total de duas posições: Comprar 0,02 e Vender 0,001. Depois fechamos a posição Vender 0,01 e fechamos a posição Comprar 0,02:

//+------------------------------------------------------------------+
//|                                                       TestEA.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>
#include <Trade\PositionInfo.mqh>
CTrade         m_trade;                      // trading object
CPositionInfo  m_position;                   // trade position object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%300==0 && counter<700)
     {
      static int number=0;
      number++;
      if(number==1)
         m_trade.Buy(0.02);
      if(number==2)
         m_trade.Sell(0.01);
     }
   if(counter>7000)
     {
      int positions= PositionsTotal();
      if(positions == 0)
         return;
      int positions_total=PositionsTotal();
      for(int i=positions_total-1;i>=0;i--)
         if(m_position.SelectByIndex(i))
            m_trade.PositionClose(m_position.Ticket(),-1);
     }
  }
//+------------------------------------------------------------------+

e Jornal:

Trade   2016.02.25 00:13:35   instant buy 0.02 EURUSD at 1.10167 (1.10158 / 1.10167 / 1.10158)
Trades  2016.02.25 00:13:35   deal #2 buy 0.02 EURUSD at 1.10167 done (based on order #2)
Trade   2016.02.25 00:13:35   deal performed [#2 buy 0.02 EURUSD at 1.10167]
Trade   2016.02.25 00:13:35   order performed buy 0.02 at 1.10167 [#2 buy 0.02 EURUSD at 1.10167]
TestEA (EURUSD,H1)      2016.02.25 00:13:35   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.10167 [done at 1.10167]
Trade   2016.02.25 00:30:17   instant sell 0.01 EURUSD at 1.10157 (1.10157 / 1.10164 / 1.10157)
Trades  2016.02.25 00:30:17   deal #3 sell 0.01 EURUSD at 1.10157 done (based on order #3)
Trade   2016.02.25 00:30:17   deal performed [#3 sell 0.01 EURUSD at 1.10157]
Trade   2016.02.25 00:30:17   order performed sell 0.01 at 1.10157 [#3 sell 0.01 EURUSD at 1.10157]
TestEA (EURUSD,H1)      2016.02.25 00:30:17   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.10157 [done at 1.10157]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   PositionClose #3 POSITION_TYPE_SELL 0.01
Trade   2016.02.25 02:12:06   instant buy 0.01 EURUSD at 1.10131, close #3 (1.10123 / 1.10131 / 1.10123)
Trades  2016.02.25 02:12:06   deal #4 buy 0.01 EURUSD at 1.10131 done (based on order #4)
Trade   2016.02.25 02:12:06   deal performed [#4 buy 0.01 EURUSD at 1.10131]
Trade   2016.02.25 02:12:06   order performed buy 0.01 at 1.10131 [#4 buy 0.01 EURUSD at 1.10131]

TestEA (EURUSD,H1)      2016.02.25 02:12:06   CTrade::OrderSend: instant buy 0.01 position #3 EURUSD at 1.10131 [done at 1.10131]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   PositionClose #2 POSITION_TYPE_BUY 0.02
Trade   2016.02.25 02:12:06   instant sell 0.02 EURUSD at 1.10123, close #2 (1.10123 / 1.10131 / 1.10123)
Trades  2016.02.25 02:12:06   deal #5 sell 0.02 EURUSD at 1.10123 done (based on order #5)
Trade   2016.02.25 02:12:06   deal performed [#5 sell 0.02 EURUSD at 1.10123]
Trade   2016.02.25 02:12:06   order performed sell 0.02 at 1.10123 [#5 sell 0.02 EURUSD at 1.10123]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   CTrade::OrderSend: instant sell 0.02 position #2 EURUSD at 1.10123 [done at 1.10123]

O que é que não é exactamente claro? Que precisa de abrir uma ordem oposta com o mesmo volume para fechar a posição?

Obrigado! Vou tentar.
 

Quem sabe - o"POSITION_PROFIT" inclui comissão e troca?

Se não, que parâmetro deve ser utilizado para descobrir o montante da comissão de uma encomenda na MQL5?

 
new-rena:

Quem sabe - o"POSITION_PROFIT" inclui comissão e troca?

Se não - que parâmetro é necessário para descobrir o montante da comissão acumulada na MQL5?

POSITION_PROFIT é simplesmente o lucro da posição (sem dedução de comissões, swaps ...). Para descobrir a troca acumulada deuma posição, faça o seguinte:

POSIÇÃO_SWAP

Troca acumulada

duplo


E a comissão final e o swap total, podem ser obtidos após o encerramento da posição, na história das transacções:

DEAL_COMMISSION

Deal_commission

duplo

DEAL_SWAP

Troca acumulada no fecho

duplo

 
new-rena:

Quem sabe - o"POSITION_PROFIT" inclui comissão e troca?

Se não, que parâmetro deve ser utilizado para descobrir o montante da comissão cobrada por uma encomenda na MQL5?

Em russo, uma ordem não pode ter lucro ou prejuízo e é apenas uma ordem a executar. Quando a ordem é executada, recebe a sua posição no mercado ao preço que escolheu.


Vladimir Karputov:

POSITION_PROFIT é apenas o lucro da posição (sem quaisquer comissões, swaps ...). Pode descobrir a troca acumulada daposição desta forma:

E a comissão final e a troca final, pode descobrir após o encerramento da posição, na história das transacções:

Bem, isto está tudo errado, ou melhor, incompleto.

Porque preciso de saber a comissão após o encerramento, ou melhor, preciso de saber, mas em qualquer altura, vamos assumir que a conta tem uma comissão e um drawback ou breakeven, como posso calcular de modo a que o primeiro gatilho seja no nível em que a comissão e os swaps são sobrepostos em caso de rollback e encerramento de preços. Acrescento 1pp para cobrir a comissão. E os swaps, já que a posição pode permanecer no mercado durante uma semana e durante esse tempo pode demorar 3pp para ganhar swaps e ser fechado com um drawback quando o Breakeven é accionado?

Ou talvez eu não compreenda os cálculos?

 
Vitaly Muzichenko:

Em russo, uma ordem não pode ser nem um lucro nem uma perda, é apenas uma ordem a executar. Uma vez executada a ordem, obtém a sua posição no mercado ao preço que escolheu.


Isto está tudo errado, ou melhor, incompleto.

Porque preciso de saber a comissão após o encerramento, ou melhor, preciso de saber, mas em qualquer altura, vamos assumir que a conta tem uma comissão e um saldo de saldo ou de break-even, como calcular para que o primeiro acerto seja a um nível que se sobreponha à comissão e troque em caso de recuo e encerramento do preço. Acrescento 1pp para cobrir a comissão. E os swaps, já que a posição pode permanecer no mercado durante uma semana e durante esse tempo pode demorar 3pp para ganhar swaps e ser fechado com um drawback quando o Breakeven é accionado?

Ou estou a perder algo nos cálculos?

Compreendo que"POSITION_PROFIT" já contém tudo (troca, lucro, comissão), e isto é suficiente para concluir se o lucro é rentável para mim ou não?
 
new-rena:

Quem sabe - o"POSITION_PROFIT" inclui comissão e troca?

Se não, que parâmetro é necessário para descobrir o montante da comissão cobrada por uma encomenda na MQL5?

Não estou a impor a biblioteca MT4Orders. Mas talvez fosse mais fácil simplesmente chamar a boa e velha Comissão da Ordem?

Funciona não só em contas de cobertura, mas também em contas líquidas.

 
new-rena:
Compreendo que"POSITION_PROFIT" já inclui tudo (troca, lucro, comissão).
Agora vamos verificar isso com um simples Expert Advisor...