Boa tarde,
Não sei se ajudo, olhando na documentação para alterar uma ordem pendente são necessários informar no método:
//•action•order•price•sl•tp•type_time•expiration
Olhando por cima do seu código, informou a propriedade action?
TRADE_ACTION_DEAL ;
TRADE_ACTION_SLTP ;
TRADE_ACTION_MODIFY ;
TRADE_ACTION_REMOVE ;
TRADE_ACTION_CLOSE_BY ;
O price no seu caso seria Valor_MA_2?
At.
Daniel
Boa Tarde Daniel,
Usando a classe Ctrade seria equivalente a TRADE_ORDER_MODIFY.
Não estou usando esse modelo, pois não consigo nem a atualização do preço de entrada, mas como no código atual consigo a atualização do preço, mas não dos stops.
Sim Valor_MA_2 é minha variável que recebe o preço de entrada.
Usava o código abaixo, mas não consegui resultado nenhum na conta produção e passei a usa-lo do jeito apresentado acima.
mrequest.action = TRADE_ACTION_MODIFY;
mrequest.order = Numero_Ordem_Venda;
mrequest.price = Valor_MA_2;
mrequest.sl = NormalizeDouble (Valor_MA_2 + STP,_Digits);
mrequest.tp = NormalizeDouble (Valor_MA_2 - TKP,_Digits);
mrequest.type_time = ORDER_TIME_DAY;
OrderSend (mrequest, mresult);
Bacana o seu código, então, indo por partes, se todos os argumentos necessários foram colocados, eu verificaria se o valor das variáveis estão de acordo para ver se não tem nenhuma inconsistência.
At.
Daniel
Bacana o seu código, então, indo por partes, se todos os argumentos necessários foram colocados, eu verificaria se o valor das variáveis estão de acordo para ver se não tem nenhuma inconsistência.
At.
Daniel
Daniel,
Verifiqueis as variáveis e está tudo normal, no BT e na demo funciona, sai tudo como previsto. Se tivesse algum erro acho que daria na demo também.
Já não sei o que fazer, só dá erro na conta real.
Esse EA já está rodando, só que ao invés de modificar a ordem ele exclui e coloca outra no lugar. Acho que vou ter que voltar a fazer desse jeito.
Phelipe, bom dia!
Sou novato também, na minha estratégia ainda não tive que alterar ordem pendente (que não foram executadas) , vou fazer um teste e depois te digo o resultado se consigo fazer.
Outra coisa, no post abaixo, recomendaram que após cada ordem é bom zerar a memória de todas as opções do comando, porque pode na próxima ordem ficar algum parâmetro da ordem anterior e gerar conflito.
https://www.mql5.com/pt/forum/90642
At.
Daniel
- www.mql5.com
Vou testar..
Muito Obrigado Daniel.
Uso o código abaixo para mudar o valor da minha entrada em uma ordem pendente, porém apenas o preço de entrada é atualizado. Os valores de SL e TP nunca atualizam.
O código de retorno é o 10008 ( ordem colocada).
O problema acontece somente na conta real, na conta demo funciona perfeitamente.
if (!trade.OrderModify(Numero_Ordem_Compra,Valor_MA_2,Valor_Stop,Valor_Gain,ORDER_TIME_DAY,ORDER_TIME_EXPIRATION,0))
{
Print("Метод PositionModify() method failed. Return code=",trade.ResultRetcode(),". Descrição do código: ",trade.ResultRetcodeDescription());
}
else
{
Print("PositionModify() method executed successfully. Return code=",trade.ResultRetcode()," (",trade.ResultRetcodeDescription(),")");
}
Uso o código abaixo para mudar o valor da minha entrada em uma ordem pendente, porém apenas o preço de entrada é atualizado. Os valores de SL e TP nunca atualizam.
O código de retorno é o 10008 ( ordem colocada).
O problema acontece somente na conta real, na conta demo funciona perfeitamente.
if (!trade.OrderModify(Numero_Ordem_Compra,Valor_MA_2,Valor_Stop,Valor_Gain,ORDER_TIME_DAY,ORDER_TIME_EXPIRATION,0))
{
Print("Метод PositionModify() method failed. Return code=",trade.ResultRetcode(),". Descrição do código: ",trade.ResultRetcodeDescription());
}
else
{
Print("PositionModify() method executed successfully. Return code=",trade.ResultRetcode()," (",trade.ResultRetcodeDescription(),")");
}
https://www.mql5.com/pt/docs/constants/errorswarnings/enum_trade_return_codes
Boa Tarde Daniel,
Usando a classe Ctrade seria equivalente a TRADE_ORDER_MODIFY.
Não estou usando esse modelo, pois não consigo nem a atualização do preço de entrada, mas como no código atual consigo a atualização do preço, mas não dos stops.
Sim Valor_MA_2 é minha variável que recebe o preço de entrada.
Usava o código abaixo, mas não consegui resultado nenhum na conta produção e passei a usa-lo do jeito apresentado acima.
mrequest.action = TRADE_ACTION_MODIFY;
mrequest.order = Numero_Ordem_Venda;
mrequest.price = Valor_MA_2;
mrequest.sl = NormalizeDouble (Valor_MA_2 + STP,_Digits);
mrequest.tp = NormalizeDouble (Valor_MA_2 - TKP,_Digits);
mrequest.type_time = ORDER_TIME_DAY;
OrderSend (mrequest, mresult);
Falta o seguinte:
Boa Tarde Daniel,
Usando a classe Ctrade seria equivalente a TRADE_ORDER_MODIFY.
Não estou usando esse modelo, pois não consigo nem a atualização do preço de entrada, mas como no código atual consigo a atualização do preço, mas não dos stops.
Sim Valor_MA_2 é minha variável que recebe o preço de entrada.
Usava o código abaixo, mas não consegui resultado nenhum na conta produção e passei a usa-lo do jeito apresentado acima.
mrequest.action = TRADE_ACTION_MODIFY;
mrequest.order = Numero_Ordem_Venda;
mrequest.price = Valor_MA_2;
mrequest.sl = NormalizeDouble (Valor_MA_2 + STP,_Digits);
mrequest.tp = NormalizeDouble (Valor_MA_2 - TKP,_Digits);
mrequest.type_time = ORDER_TIME_DAY;
OrderSend (mrequest, mresult);
Falta:
ZeroMemory(mrequest)
E ainda:
mrequest.type_filling
Sempre é bom preencher a boleta inteira...
- 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
Uso o código abaixo para mudar o valor da minha entrada em uma ordem pendente, porém apenas o preço de entrada é atualizado. Os valores de SL e TP nunca atualizam.
O código de retorno é o 10008 ( ordem colocada).
O problema acontece somente na conta real, na conta demo funciona perfeitamente.
if (!trade.OrderModify(Numero_Ordem_Compra,Valor_MA_2,Valor_Stop,Valor_Gain,ORDER_TIME_DAY,ORDER_TIME_EXPIRATION,0))
{
Print("Метод PositionModify() method failed. Return code=",trade.ResultRetcode(),". Descrição do código: ",trade.ResultRetcodeDescription());
}
else
{
Print("PositionModify() method executed successfully. Return code=",trade.ResultRetcode()," (",trade.ResultRetcodeDescription(),")");
}