FORTS: Para ajudar iniciantes - página 4

 
Sergey Chalyshev:
O que isso tem a ver com os ava? Ele não pode escrever no fórum, ele está permanentemente banido.
OK, eu não sabia que havia uma proibição "parcial". É uma vergonha.
 
Sergey Chalyshev:
O que isso tem a ver com os ava? Ele não pode escrever no fórum, ele está proibido para sempre.

Não, ele não foi banido.

Os usuários proibidos são escritos em cruz.

 
Andrey Khatimlianskii:

Não, ele não foi banido.

Os usuários proibidos são escritos em cruz.

Eu também pensei assim, é melhor perguntar aos moderadores, eles sabem com certeza.
 
Mikhail Filimonov:

Características:

Recebendo confirmação (TRADE_RETCODE_PLACED ) em OrderSend() código de retorno e bilhete de pedido,

e para a função OrderSendAsync() na OnTradeTransaction(), isso não significa de forma alguma que

o pedido é realmente EXPOSTO a uma troca.

Portanto, uma verificação adicional do status do pedido é necessária (assim como para outras ações no pedido).

if ( OrderSend( request, result ) )
{
  if ( result.retcode == TRADE_RETCODE_PLACED )
  { 
    ticket = result.order;
  }
}

https://www.mql5.com/ru/docs/constants/structures/mqltraderesult

Ele diz que o bilhete é preenchido somente quando o tipo decomércio éTRADE_ACTION_PENDING.

Se a operação for TRADE_ACTION_DEAL, o ticket do pedido será devolvido no resultado.order?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sim.
 
Sergei Vladimirov:
Sim.

Quando ocorre o erro 10013 em resposta ao OrderCheck()?

Aqui está o código do meu roteiro:

   MqlTradeRequest   m_request;         
   MqlTradeCheckResult m_check_result;  
   
   m_request.action      =TRADE_ACTION_DEAL;
   m_request.symbol      =Symbol();
   m_request.magic       =001;
   m_request.volume      =1.00;
   m_request.type        =ORDER_TYPE_SELL;
   m_request.type_filling=ORDER_FILLING_RETURN;
   if(!OrderCheck(m_request,m_check_result))
      Print(__FUNCTION__+": order check failed.");
   else
      Print(__FUNCTION__+": order check passed.");
   Print(__FUNCTION__+": symbol=",m_request.symbol,", operation=",m_request.type,", volume=",m_request.volume);
   Print(__FUNCTION__+": retcode=",m_check_result.retcode,", balance=",m_check_result.balance,", equity=",m_check_result.equity,", profit=",m_check_result.profit,
            ", margin=",m_check_result.margin,", margin_free=",m_check_result.margin_free,", margin_level=",m_check_result.margin_level,
            ", comment=",m_check_result.comment);

Aqui está o registro que estou recebendo:

Check (RTS-6.16,M30)    OnStart: retcode=10013, balance=0.0, equity=0.0, profit=2.121995790965272 e-314, margin=0.0, margin_free=0.0, margin_level=0.0, comment=Invalid request
Check (RTS-6.16,M30)    OnStart: symbol=RTS-6.16, operation=1, volume=1.0
Check (RTS-6.16,M30)    OnStart: order check failed.
 
igorbel:

Quando ocorre o erro 10013 em resposta ao OrderCheck()?

Aqui está o código do meu roteiro:

Aqui está o registro que eu recebo:

Aprovado quando adicionado m_request.expiration =0, embora a ajuda diga:

Execução de câmbio.

Ordem comercial para abrir uma posição no modo de execução de câmbio. Requer 5 campos a serem especificados:

  • ação
  • símbolo
  • volume
  • tipo
  • type_filling

Você também pode especificar campos mágicos e de comentários.

 

Mas a estranheza não termina aí.

1 lote Comprar:

Check (RTS-6.16,M30) OnStart: retcode=0, balance=530863.24, equity=538989.4399999999, profit=2.121995790965272e-314, margin=211242.25, margin_free=319620.99, margin_level=255.1522907941001, comment=Done

Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=1.0

A margem para a transação 211242,25, a mesma que a margem atual - tudo correto como a posição curta atual para o RTS-6,16 é de 2 contratos. Margem inicial para 1 contrato RTS-6.16 17388.75

Eu acrescento mais um lote.

2 lotes Comprar:

Check (RTS-6.16,M30) OnStart: retcode=0, balance=651428.4399999999, equity=659212.76, profit=2.121995790965272e-314, margin=211242.25, margin_free=440186.19, margin_level=312.0648260468727, comment=Done

Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=2.0

Tudo bem, como a posição atual é 2 Sell, a margem permanece inalterada.

Agora 3 Contratos de compra:

2016.04.28 01:26:47.319 Check (RTS-6.16,M30) OnStart: retcode=0, balance=651428.4399999999, equity=658739.4, profit=2.121995790965272e-314, margin=246019.75, margin_free=405408.69, margin_level=267.7587470111648, comment=Done

2016.04.28 01:26:47.319 Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=3.0

Valor da margem de uma vez 246019,75. Como assim? Para 1 contrato apenas 17k. E quanto aos outros valores (nos casos anteriores também)? De onde veio a equidade e o equilíbrio? Eu nem tenho tanto em minha conta. margem_livre também está errado, não falar de lucro.

Alguém pode verificar por mim, talvez eu esteja fazendo algo errado?


 
igorbel:

Passou quando adicionei m_request.expiration =0, mesmo que o diga em ajuda:

Sempre inicializar todas as variáveis e estruturas com zeros imediatamente após a declaração. Você tinha algum lixo no campo de expiração, então você recebeu um erro.

MqlTradeRequest   m_request;         
MqlTradeCheckResult m_check_result; 

ZeroMemory(m_request);
ZeroMemory(m_check_result);
// теперь заполняйте нужные поля
 
Sergei Vladimirov:

Sempre rubrique todas as variáveis e estruturas com zeros imediatamente após a declaração. Você tinha algum lixo no campo de expiração, por isso você recebeu o erro.

Obrigado. Mas abandonei a OrderCheck(), é quase inútil, pelo menos na FORTS. Antes de mais nada, dá resultados pouco claros. Mas mesmo quando os valores são mais ou menos corretos, há sempre uma probabilidade de que a ordem seja rejeitada na troca. É por isso que temos que olhar o status do pedidoORDER_STATE_REJECTED e também ver o comentário. Então temos que diminuir o volume no pedido e enviá-lo novamente. É claro que tudo isso não torna a negociação mais rápida, mas o que podemos fazer?