Estou tentando encerrar as posições após certo horário no ativo WIN$ pela corretora Genial com modelação de Cada Tick(com OHLC e Tick real ocorre o mesmo erro). Porém, PositionClose() retorna 0 e trade.ResultRetCode() retorna status de done(10009) e GetLastError() retorna 4753.
Alguma sugestão do que acontece ?
Boa noite!
Eu não utilizo bibliotecas (falha minha), mas esse currentPrice definido como ulong está correto? Não seria double não?
Boa noite!
Eu não utilizo bibliotecas (falha minha), mas esse currentPrice definido como ulong está correto? Não seria double não?
Boa noite !
Na verdade não, essa função recebe ulong mesmo !
Na verdade você está errado.
Desculpe...mas em que estou errado ?
Desculpe...mas em que estou errado ?
Pela imagem acima, a função PositionClose possui 2 versões: numa, você informa symbol e deviation (ou apenas symbol); noutra, informa ticket e deviation (ou apenas ticket). O erro está em informar o preço como parâmetro. 👍
Pela imagem acima, a função PositionClose possui 2 versões: numa, você informa symbol e deviation; noutra, informa ticket e deviation. O erro está em informar o preço como parâmetro. 👍
Eu entendo que existem duas funções mas o segundo parâmetro é opcional. Entendi que tem que passar o ticket, mas quando passo ele recebe invalid price por que tenta efetuar operações em preços que o WIN não permite, por isso eu estava passando o preço pois vi em algum lugar do forum dessa forma. Você sabe como resolver isso com ticket ? ahh,e em ambas funções acontece o mesmo...invalid price.
Eu entendo que existem duas funções mas o segundo parâmetro é opcional. Entendi que tem que passar o ticket, mas quando passo ele recebe invalid price por que tenta efetuar operações em preços que o WIN não permite, por isso eu estava passando o preço pois vi em algum lugar do forum dessa forma. Você sabe como resolver isso com ticket ? ahh,e em ambas funções acontece o mesmo...invalid price.
no meu metatrader não esta escrito que é opcional...esta escrito para preencher ulong_max, é o desvio
no meu metatrader não esta escrito que é opcional...esta escrito para preencher ulong_max, é o desvio
Sim esse parâmetro é opcional ser fornecido, porem se não preenchido será usado o valor default que é ulong_max, ou seja qualquer deviation.
Esse erro provavelmente é por conta de outra coisa, use o depurador para entender o que ocorre nas chamadas, isso pode se meio obvio, mas depure todo o caminho ate mesmo quando entrar nas classes standart.
Outro erro é que você não valida o numero magico, então pode ocorrer de fechar posição que não seja do EA.
A função abaixo funciona perfeitamente.
bool CloseAtMarket(void) { bool res=false; CTrade *trade=new CTrade(); for(int i = PositionsTotal()-1; i>=0; i--) { if(PositionGetSymbol(i) == ::Symbol() && PositionGetInteger(POSITION_MAGIC) == InpMagicEA) { if(!trade.PositionClose(PositionGetInteger(POSITION_TICKET))) { Print("Falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription()); } else res=true; } } if(trade!=NULL) { delete trade; trade=NULL; } return res; }
Sim esse parâmetro é opcional ser fornecido, porem se não preenchido será usado o valor default que é ulong_max, ou seja qualquer deviation.
Esse erro provavelmente é por conta de outra coisa, use o depurador para entender o que ocorre nas chamadas, isso pode se meio obvio, mas depure todo o caminho ate mesmo quando entrar nas classes standart.
Outro erro é que você não valida o numero magico, então pode ocorrer de fechar posição que não seja do EA.
A função abaixo funciona perfeitamente, note, não há quase nenhuma diferença com o seu código.
- 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
Estou tentando encerrar as posições após certo horário no ativo WIN$ pela corretora Genial com modelação de Cada Tick(com OHLC e Tick real ocorre o mesmo erro). Porém, PositionClose() retorna 0 e trade.ResultRetCode() retorna status de done(10009) e GetLastError() retorna 4753.
Alguma sugestão do que acontece ?