Prezados boa tarde,
Estou com um problema, mesmo eu parametrizando minha ordem limite ela está executando a mercado, alguém consegue me ajudar?
Fonte:
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade trade;
datetime expiration=TimeTradeServer()+PeriodSeconds(PERIOD_D1);
trade.BuyLimit(1,(BarData[ultimo].high + 100),_Symbol,BarData[ultimo].high - loss,BarData[ultimo].high + gain,ORDER_TIME_SPECIFIED,expiration);
Vejam o LOG do testador:
PR 0 12:38:48.883 Trade 2019.12.02 09:05:00 buy limit 1.00 WIN$N at 108785 sl: 108485 tp: 108885 (108635 / 108640 / 108635)
KO 0 12:38:48.883 Trade 2019.12.02 09:05:00 order [#2 buy limit 1.00 WIN$N at 108785] triggered
DI 0 12:38:48.883 Trades 2019.12.02 09:05:00 deal #2 buy 1.00 WIN$N at 108640 done (based on order #2)
HE 0 12:38:48.883 Trade 2019.12.02 09:05:00 deal performed [#2 buy 1.00 WIN$N at 108640]
LH 0 12:38:48.883 Trade 2019.12.02 09:05:00 order performed buy 1.00 at 108640 [#2 buy limit 1.00 WIN$N at 108785]
Veja que a ordem deveria ser executada a 108785 e ela foi executada a 108640 .
Alguém sabe me dizer o que pode ser?
Obrigado!
Leonardo,
Se você enviar uma ordem BuyLimit ela precisa ser com valor ABAIXO do valor de mercado. Caso envie BuyLimit acima do valor do mercado ela é executada ao Valor de Mercado atual.
" order performed buy 1.00 at 108640"
buy limit 1.00 WIN$N at 108785 (está acima)
Neste caso, você precisa usar BuyStop. Veja: https://www.mql5.com/pt/docs/standardlibrary/tradeclasses/ctrade/ctradebuystop
![Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / BuyStop Documentação sobre MQL5: Biblioteca Padrão / Classes de negociação / CTrade / BuyStop](https://c.mql5.com/36/31/documenta-o-sobre-mql5-biblioteca__1.png)
- www.mql5.com
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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
Prezados boa tarde,
Estou com um problema, mesmo eu parametrizando minha ordem limite ela está executando a mercado, alguém consegue me ajudar?
Fonte:
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade trade;
datetime expiration=TimeTradeServer()+PeriodSeconds(PERIOD_D1);
trade.BuyLimit(1,(BarData[ultimo].high + 100),_Symbol,BarData[ultimo].high - loss,BarData[ultimo].high + gain,ORDER_TIME_SPECIFIED,expiration);
Vejam o LOG do testador:
PR 0 12:38:48.883 Trade 2019.12.02 09:05:00 buy limit 1.00 WIN$N at 108785 sl: 108485 tp: 108885 (108635 / 108640 / 108635)
KO 0 12:38:48.883 Trade 2019.12.02 09:05:00 order [#2 buy limit 1.00 WIN$N at 108785] triggered
DI 0 12:38:48.883 Trades 2019.12.02 09:05:00 deal #2 buy 1.00 WIN$N at 108640 done (based on order #2)
HE 0 12:38:48.883 Trade 2019.12.02 09:05:00 deal performed [#2 buy 1.00 WIN$N at 108640]
LH 0 12:38:48.883 Trade 2019.12.02 09:05:00 order performed buy 1.00 at 108640 [#2 buy limit 1.00 WIN$N at 108785]
Veja que a ordem deveria ser executada a 108785 e ela foi executada a 108640 .
Alguém sabe me dizer o que pode ser?
Obrigado!