As pessoas ajudam. Tentar obter o preço ao qual um comércio foi aberto. No início negociei através do CTrade mas o trade.result price era igual a zero. Comecei a negociar através da MqlTrade e o result.price estava a mostrar bons resultados no Strategy Tester, mas era igual a zero em Live. Tentei com a OnTradeTransaction, mas é demasiado lento no comércio ao vivo e mostra zero quando a auto-negociação é interrompida. Quais são algumas formas de obter o preço pelo qual o comércio de compra foi efectuado?
mikhail_shmakov: As pessoas ajudam. Tentar obter o preço ao qual um comércio foi aberto. No início negociei através do CTrade mas o trade.result price era igual a zero. Comecei a negociar através da MqlTrade e o resultado.preço estava a mostrar bem no Testador de Estratégia, mas era igual a zero em directo. Tentei com a OnTradeTransaction, mas é demasiado lento no comércio ao vivo e mostra zero quando a auto-negociação é interrompida. Quais são algumas formas de obter o preço pelo qual o comércio de compra foi efectuado?
structMqlTradeTransaction
{
ulong deal; // Тикет сделки ulong order; // Тикет ордера string symbol; // Имя торгового инструмента ENUM_TRADE_TRANSACTION_TYPE type; // Тип торговой транзакции ENUM_ORDER_TYPE order_type; // Тип ордера ENUM_ORDER_STATE order_state; // Состояние ордера ENUM_DEAL_TYPE deal_type; // Тип сделки ENUM_ORDER_TYPE_TIME time_type; // Тип ордера по времени действия datetime time_expiration; // Срок истечения ордера double price; // Цена double price_trigger; // Цена срабатывания стоп-лимитного ордера double price_sl; // Уровень Stop Loss double price_tp; // Уровень Take Profit double volume; // Объем в лотах ulong position; // Тикет позиции ulong position_by; // Тикет встречной позиции
};
O que quer dizer com "em comércios muito rápidos"? A OnTradeTransaction trabalha para cada comércio. Basta separar o tipo de transacção e tomar o preço em TRADE_TRANSACTION_DEAL_ADD
Например, при отсылке рыночного ордера на покупку он обрабатывается, для счета создается соответствующий ордер на покупку, происходит исполнение ордера, его удаление из списка открытых, добавление в историю ордеров, далее добавляется соответствующая сделка в историю и создается новая позиция. Все эти действия являются торговыми транзакциями...
//+------------------------------------------------------------------+ //| Получает текущее количество отложенных ордеров с указанным ORDER_MAGIC | //+------------------------------------------------------------------+ int GetOrdersTotalByMagic(longconst magic_number)
{
ulong order_ticket;
int total=0;
//--- пройдем по всем отложенным ордерам for(int i=0;i<OrdersTotal();i++)
if((order_ticket=OrderGetTicket(i))>0)
if(magic_number==OrderGetInteger(ORDER_MAGIC)) total++;
//--- return(total);
}
Olá colegas programadores. Por favor, ajude-me a modificar esta função. A função da Referência MQL5 acima. Como fazê-la calcular o número de todas as posições abertas para um determinado Magic?
Kolya32: Olá colegas programadores. Por favor, ajude-me a modificar esta função. Já introduzi esta função na MQL5 Reference. O que devo fazer para calcular o número de posições em aberto para a Magic?
Devemos pelo menos alterar as ordens*** para Posições**** e depois verificar.
Alexey Viktorov: Pelo menos mudar as ordens*** para Posições*** em todo o lado e depois verificar.
Parece estar a funcionar))) Podemos adicionar esta função à MQL5)) Embora provavelmente seja demasiado cedo, vou testá-la)
//+------------------------------------------------------------------+ //| Получает текущее количество открытых позиций с указанным ORDER_MAGIC | //+------------------------------------------------------------------+ int GetPositionsTotalByMagic(longconst magic_number)
{
ulong position_ticket;
int total=0;
//--- пройдем по всем открытым позициям for(int i=0;i<PositionsTotal();i++)
if((position_ticket=PositionGetTicket(i))>0)
if(magic_number==PositionGetInteger(POSITION_MAGIC)) total++;
//--- return(total);
}
mikhail_shmakov: As pessoas ajudam. Estou a tentar obter o preço a que um comércio abriu. No início utilizei o CTrade, mas o trade.result price era igual a zero. Comecei a negociar através da MqlTrade e o result.price estava a mostrar bons resultados no Strategy Tester, mas era igual a zero em Live. Tentei com a OnTradeTransaction, mas é demasiado lento no comércio ao vivo e mostra zero quando a auto-negociação é interrompida. Quais são algumas formas de obter o preço pelo qual o comércio de compra foi efectuado?
OrderSend envia uma encomenda. Depois temos de esperar pela sua execução e que o comércio correspondente apareça na história.
Para fazer tudo isto correctamente, é preciso ser bom na OnTradeTransaction ou escrever uma vez um código bastante pesado para OrderSend.
No segundo caso, o CTrade também funcionará como desejado.
Qual é o análogo para Dígitos que devolveria o número de casas decimais após o ponto decimal que determina a precisão da medição do preço do símbolo do gráfico seleccionado ?
Qual é o análogo para Dígitos que devolveria o número de casas decimais após o ponto decimal que determina a precisão da medição do preço do símbolo do gráfico seleccionado ?
As pessoas ajudam. Tentar obter o preço ao qual um comércio foi aberto. No início negociei através do CTrade mas o trade.result price era igual a zero. Comecei a negociar através da MqlTrade e o resultado.preço estava a mostrar bem no Testador de Estratégia, mas era igual a zero em directo. Tentei com a OnTradeTransaction, mas é demasiado lento no comércio ao vivo e mostra zero quando a auto-negociação é interrompida. Quais são algumas formas de obter o preço pelo qual o comércio de compra foi efectuado?
Olá colegas programadores. Por favor, ajude-me a modificar esta função. Já introduzi esta função na MQL5 Reference. O que devo fazer para calcular o número de posições em aberto para a Magic?
Pelo menos mudar as ordens*** para Posições*** em todo o lado e depois verificar.
Parece estar a funcionar))) Podemos adicionar esta função à MQL5)) Embora provavelmente seja demasiado cedo, vou testá-la)
Parece estar a funcionar))) Pode adicionar esta função ao manual MQL5)) Embora provavelmente seja demasiado cedo, ainda estou a testar)
As pessoas ajudam. Estou a tentar obter o preço a que um comércio abriu. No início utilizei o CTrade, mas o trade.result price era igual a zero. Comecei a negociar através da MqlTrade e o result.price estava a mostrar bons resultados no Strategy Tester, mas era igual a zero em Live. Tentei com a OnTradeTransaction, mas é demasiado lento no comércio ao vivo e mostra zero quando a auto-negociação é interrompida. Quais são algumas formas de obter o preço pelo qual o comércio de compra foi efectuado?
OrderSend envia uma encomenda. Depois temos de esperar pela sua execução e que o comércio correspondente apareça na história.
Para fazer tudo isto correctamente, é preciso ser bom na OnTradeTransaction ou escrever uma vez um código bastante pesado para OrderSend.
No segundo caso, o CTrade também funcionará como desejado.
Qual é o análogo para Dígitos que devolveria o número de casas decimais após o ponto decimal que determina a precisão da medição do preço do símbolo do gráfico seleccionado ?
Qual é o análogo para Dígitos que devolveria o número de casas decimais após o ponto decimal que determina a precisão da medição do preço do símbolo do gráfico seleccionado ?
Obrigado!