Olá a todos!
Estou enfrentando um problema ao tentar abrir ordens com data de expiração. Quando eu rodo meu EA no backtest para abri-las eu recebo o seguinte erro:
SellStop() method failed. Return code=10022. Code description: invalid expiration
CTrade::OrderOpen: Invalid expiration type
Olá Romeu,
você saberia me dizer qual o tipo de preenchimento da ordem que você está usando?
Abraços,
Malacarne
Boa tarde Malacarne!
salvou meu dia!! HAHAHA
eu estava utilizando ORDER_FILLING_RETURN...
com ORDER_FILLING_FOK e ORDER_FILLING_IOC funciona tranquilo.
Muito obrigado pela ajuda!
Abraço,
Romeu.
Boa tarde Malacarne!
salvou meu dia!! HAHAHA
eu estava utilizando ORDER_FILLING_RETURN...
com ORDER_FILLING_FOK e ORDER_FILLING_IOC funciona tranquilo.
Muito obrigado pela ajuda!
Abraço,
Romeu.
Era a minha suspeita!
Abraços,
Malacarne
Caros, bom dia!
Também tenho uma dúvida sobre o erro "Invalid Expiration". Eu explico:
Programei um robô que usa Pending Orders. Quando fiz backtestes dele na PETR4 ele funcionou sem problemas, mas quando o coloquei na série histórica do dólar, usando o WDO@, aparece no Log um erro de Invalid Expiration.
Usei o request.type_time=ORDER_TIME_GTC e o request.type_filling=ORDER_FILLING_FOK. Ou seja, aparentemente não vejo em que eu estaria errando.
Alguém teria alguma idéia? Muito obrigado!
P.S.: Segue o código da função BuyStop:
request.action=TRADE_ACTION_PENDING;
request.type=ORDER_TYPE_BUY_STOP;
request.volume=volume;
request.sl=stop;
request.tp=takeprofit;
request.price=preco;
request.stoplimit=0;
request.type_filling=ORDER_FILLING_FOK;
request.type_time=ORDER_TIME_GTC;
OrderSend(request,result);
hegelgb, estou com o mesmo problema, você conseguiu resolver? Estou usando o Expert para o mini índice do IBOV
A diferença é que a PETR4 (se olharem nas especificações do papel, clicando com botão direito no ativo na janela de Market Watch e clicando em "Especificação") aceita expiração de ordens do tipo: GTC, Today e Specified day, já o WING15 aceita somente Today excluindo SL/TP que podem ficar pro próximo dia. Então, para resovler esse problema das ordens pendentes a solução é setar o atributo type_time do request como ORDER_TIME_DAY.
Testem aí e digam se era isso mesmo por favor. Também já encarrei esse problema e isso resolveu pra mim
A diferença é que a PETR4 (se olharem nas especificações do papel, clicando com botão direito no ativo na janela de Market Watch e clicando em "Especificação") aceita expiração de ordens do tipo: GTC, Today e Specified day, já o WING15 aceita somente Today excluindo SL/TP que podem ficar pro próximo dia. Então, para resovler esse problema das ordens pendentes a solução é setar o atributo type_time do request como ORDER_TIME_DAY.
Testem aí e digam se era isso mesmo por favor. Também já encarrei esse problema e isso resolveu pra mim
Olá amigos!
Estou com problema semelhante porém programando através do eabuilder.com
Sempre que coloco ordem pendente ao invés de a mercado, no backtest apresenta esse tipo de erro: "OrderSend error: Invalid expiration", tanto mini dólar quanto mini indice.
Eu entendo muito pouco de linguagem de programação.
Alguém poderia me dar uma força?
Desde já agradeço a todos!
A diferença é que a PETR4 (se olharem nas especificações do papel, clicando com botão direito no ativo na janela de Market Watch e clicando em "Especificação") aceita expiração de ordens do tipo: GTC, Today e Specified day, já o WING15 aceita somente Today excluindo SL/TP que podem ficar pro próximo dia. Então, para resovler esse problema das ordens pendentes a solução é setar o atributo type_time do request como ORDER_TIME_DAY.
Testem aí e digam se era isso mesmo por favor. Também já encarrei esse problema e isso resolveu pra mim
Cara!!! essa dica do watch market foi espetacular. mto obrigado.
Só uma duvida, conforme você falou o indice futuro somente aceita ordens do tipo ORDER_TIME_DAY. Mas ainda assim você sabe informar se há como cadastrar uma hora de validade para a ordem? por exemplo 5 minutos?
![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
Olá a todos!
Estou enfrentando um problema ao tentar abrir ordens com data de expiração. Quando eu rodo meu EA no backtest para abri-las eu recebo o seguinte erro:
SellStop() method failed. Return code=10022. Code description: invalid expiration
CTrade::OrderOpen: Invalid expiration type
a função que estou trabalhando para abrir esse tipo de operação é a seguinte:
void buyStop(string pair,double price,int Lot,int TakeProfit_,int StopLoss_)
{
if(Lot<1) Lot=1;
double volume=Lot;
string symbol=pair; // specify the symbol, at which the order is placed
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // number of decimal places
double point=SymbolInfoDouble(symbol,SYMBOL_POINT); // point
double SL=0;
double TP=0;
if(StopLoss_>0)
SL=NormalizeDouble(price-StopLoss_*point,digits); //--- calculate and normalize SL and TP levels
else
SL=0;
if(TakeProfit_>0)
TP=NormalizeDouble(price+TakeProfit_*point,digits); //--- calculate and normalize SL and TP levels
else
TP=0;
datetime expiration=TimeTradeServer()+PeriodSeconds(orderexpiration);
string comment=StringFormat("Buy Stop %s %G lots at %s, SL=%s TP=%s",
symbol,volume,
DoubleToString(price,digits),
DoubleToString(SL,digits),
DoubleToString(TP,digits));
//--- everything is ready, sending a Buy Limit pending order to the server
if(!trade.BuyStop(volume,price,symbol,0,TP,ORDER_TIME_SPECIFIED,expiration,comment))
{
//--- failure message
Print("BuyStop() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("BuyStop() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
a variável orderexpiration foi definida da seguinte forma:
input ENUM_TIMEFRAMES orderexpiration=PERIOD_M5;
Eu já mudei para períodos de tempo maiores e o resultado foi o mesmo =/
Alguém por gentileza teria ideia onde eu estou errando ou alguma sugestão?
Abraço,
Romeu.