Pessoal,
Estou tentando criar um EA para scalp em conta HEDGE, mas preciso fazer com que a saída ocorra no preço exato. Por exemplo, compro em 10,00 e quero sair em 10,02.
Só estou conseguindo fazer sair com ordem a mercado, aí com o spread, acaba saindo por 10,01 ou mesmo 10,00. Mas nunca pega o 10,02.
Alguma dica?
Valeu!
Simplesmente compensar o spread ao preço de saída não seria suficiente?
Por exemplo, se o spread é de 0.02 e você deseja sair quando ao preço de 10.02, bastaria configurar a saída para 10.04 (ou 10.00), e a ordem seria executada ao preço de 10.02.
Tenha em mente que existem dois preços: o gráfico que você observa normalmente exibe o preço BID, enquanto as operações de compra e venda podem ser executadas a preços diferentes devido ao spread.
Ou seja, o preço de execução da entrada ou saída da operação nem sempre será exatamente o mesmo preço observado no candle
Pessoal,
Estou tentando criar um EA para scalp em conta HEDGE, mas preciso fazer com que a saída ocorra no preço exato. Por exemplo, compro em 10,00 e quero sair em 10,02.
Só estou conseguindo fazer sair com ordem a mercado, aí com o spread, acaba saindo por 10,01 ou mesmo 10,00. Mas nunca pega o 10,02.
Alguma dica?
Valeu!
ordem limitada stop ou ordem limitada. No exemplo esta comprado no 10 e quer vender no 10,02 coloca venda limitada no 10,02. Se quiser comprar mais digamos no 10,03, teria que colocar a ordem limite stop para quando bater 10,03 enviar a ordem limitada no preço desejado.
Depois quando a posição for criada, voce pode anular elas com o close by.
Pessoal,
Estou tentando criar um EA para scalp em conta HEDGE, mas preciso fazer com que a saída ocorra no preço exato. Por exemplo, compro em 10,00 e quero sair em 10,02.
Só estou conseguindo fazer sair com ordem a mercado, aí com o spread, acaba saindo por 10,01 ou mesmo 10,00. Mas nunca pega o 10,02.
Alguma dica?
Valeu!
void CloseOppositePositions(ulong ticket) { for (int i = 0; i < PositionsTotal(); i++) { ulong oppositeTicket = PositionGetTicket(i); if (oppositeTicket != ticket && PositionGetString(POSITION_SYMBOL) == _Symbol && PositionGetInteger(POSITION_MAGIC) == MagicNumber) { if (PositionSelectByTicket(ticket) && PositionSelectByTicket(oppositeTicket)) { ENUM_POSITION_TYPE currentType = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); ENUM_POSITION_TYPE oppositeType = (currentType == POSITION_TYPE_BUY) ? POSITION_TYPE_SELL : POSITION_TYPE_BUY; if ((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) == oppositeType) { if (trade.PositionCloseBy(ticket, oppositeTicket)) { Print("Posição oposta fechada com Close By: ", ticket, " fechou ", oppositeTicket); return; // Sai do loop se uma posição foi fechada com sucesso } else { Print("Erro ao fechar posição oposta com Close By: ", GetLastError()); } } } } } } void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if (trans.type == TRADE_TRANSACTION_DEAL_ADD) { if (result.retcode == TRADE_RETCODE_DONE) { Print("Transação detectada - Type: ", trans.deal_type, ", Order Type: ", trans.order_type); // Verifica se a transação era uma ordem LIMIT executada para TP if ((trans.deal_type == DEAL_TYPE_BUY || trans.deal_type == DEAL_TYPE_SELL) && (trans.order_type == ORDER_TYPE_BUY_LIMIT || trans.order_type == ORDER_TYPE_SELL_LIMIT)) { Print("Tentando fechar posições opostas..."); CloseOppositePositions(result.order); } } } }
Estou tentando sair pelo CLOSE BY da conta hedge, a operação é feita, no take profit é feita uma operação oposta com ordem LIMIT, mas elas não estão fechando pelo close by.
Alguém teria uma abordagem para solucionar?
trans.type == TRADE_TRANSACTION_DEAL_ADDentão o result.retcode == TRADE_RETCODE_DONEnão vai estar preenchido.Veja na documentação o que é preenchido para cada caso:
https://www.mql5.com/pt/docs/constants/structures/mqltradetransaction
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Pessoal,
Estou tentando criar um EA para scalp em conta HEDGE, mas preciso fazer com que a saída ocorra no preço exato. Por exemplo, compro em 10,00 e quero sair em 10,02.
Só estou conseguindo fazer sair com ordem a mercado, aí com o spread, acaba saindo por 10,01 ou mesmo 10,00. Mas nunca pega o 10,02.
Alguma dica?
Valeu!