Códigos de erro - página 4

 
 

MT4 - Erro #130 com Orderend()

Olá. Estou tentando gerar um pedido usando OrderSend() no MT4, mas continuo recebendo o erro nº 130. Entendo que o Erro #130 se refere ao nível de stop-loss ou take-profit sendo definido muito próximo do preço atual do mercado. Eu os variei sem sucesso. Utilizei tanto os valores relativos como os reais.

1. Uso os valores relativos de take-profit e stop loss para uma compra:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green);

2. usando valores reais para Stoploss e TakeProfit para uma compra:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout",16384,0,Verde);

onde:

StopLoss duplo = NormalizeDouble(StopLoss, Dígitos);

double TakeProfit = NormalizeDouble(TakeProfit, Dígitos);

e estes valores são definidos como valores externos (por exemplo, StopLoss duplo externo=1,5000, StopLoss duplo externo=TakeProfit=1,6000)

Meu corretor é FXCM. Eu tentei multiplicar os valores de StoplLoss e TakeProfit por 10. Eu consigo o mesmo resultado para todos os pares de moedas.

Em cada caso eu recebo o erro #130. Alguma idéia?

Abraço

 

Ao definir o take profit para uma posição de compra. O TP é

Bid+(50*Point)

Em oposição a Ask+...

Chris ...

 

Desculpe, sim, minha culpa em digitar. Ainda assim, o problema persiste, receio

 

Tente colocar um comentário ou imprimir um pouco antes da função de envio do pedido para imprimir os níveis de stoploss e takeprofit. Além disso, certifique-se de que os stoplosss/tp sejam mais do que a distância mínima.

Coloque isto antes do envio do pedido:

if(StopLoss!=0 && StopLoss<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

if(TakeProfit!=0 && TakeProfit<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

Chris

 
kvhutch:
Olá. Estou tentando gerar um pedido usando OrderSend() em MT4, mas continuo recebendo o Erro #130. Entendo que o Erro #130 se refere ao nível de stop-loss ou take-profit sendo definido muito próximo do preço atual do mercado. Eu os variei sem sucesso. Utilizei tanto os valores relativos como os reais.

1. Usando os valores de lucro relativo e stop loss para uma compra:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green);

2.Utilizar valores reais para Stoploss e TakeProfit para uma compra:

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout",16384,0,Verde);

onde:

StopLoss duplo = NormalizeDouble(StopLoss, Dígitos);

double TakeProfit = NormalizeDouble(TakeProfit, Dígitos);

e estes valores são definidos como valores externos (por exemplo, StopLoss duplo externo=1,5000, StopLoss duplo externo=TakeProfit=1,6000)

Meu corretor é FXCM. Eu tentei multiplicar os valores de StoplLoss e TakeProfit por 10. Eu consigo o mesmo resultado para todos os pares de moedas.

Em cada caso eu recebo o erro #130. Alguma idéia?

Abraço

FXCM com 5 dígitos... ou você está usando FXCM de que país?

 

Obrigado por suas respostas. Sim, eu usei declarações impressas para verificar os valores de Stop Loss e Take Profit. Parecia estar tudo bem na impressão.

Eu estou usando FXCM no Reino Unido. As moedas que não são ienes têm 5 dígitos após a casa decimal (por exemplo GBPUSD: 1,55125). As cruzes de ienes têm três dígitos (por exemplo, GBPJPY: 132,393). Pensei que sendo este o caso, os valores provavelmente teriam que ser multiplicados por 10.

Saúde

 
kvhutch:
Pensei que sendo este o caso, os valores provavelmente teriam que ser multiplicados por 10.Cheers

Você tem algo como isto na função init?

if (Digits == 3 || Digits == 5)

{

Factor = 10;

StopLoss *= 10;

TakeProfit *= 10;

MaxSpread *= 10;

Slippage *=10;

}
 

Não, na declaração OrderSend() eu apenas multipliquei os valores Take Profit e StopLoss por 10. Você pode elaborar um pouco mais sobre o uso desses valores? Muito obrigado.

 

Elas são apenas as variáveis externas sendo multiplicadas por dez. Você as ajusta para incluir suas variáveis. Mas você só faz variáveis que diferem em corretores de tubulações fracionárias como o Stoploss.

Isso significa que se o stoploss for inserido como 20 pips na lista de entrada, ele o ajustará automaticamente para 200 se o corretor for fracionário.

Razão: