Códigos de error - página 4

 
 

MT4 - Error #130 con Ordersend()

Hola. Estoy tratando de generar una orden usando OrderSend() en MT4 pero sigo obteniendo el Error #130. Entiendo que el Error #130 se relaciona con los niveles de stop-loss o take-profit que se establecen demasiado cerca del precio actual del mercado. Los he variado sin éxito. He utilizado tanto los valores relativos como los reales.

1. Utilizando valores relativos de take profit y stop loss para una compra:

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

2.Utilizando los valores reales de Stoploss y TakeProfit para una compra:

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

donde:

double StopLoss = NormalizeDouble(StopLoss, Digits);

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

y estos valores se establecen como valores externos (por ejemplo, extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Mi broker es FXCM. He intentado multiplicar los valores de StoplLoss y TakeProfit por 10. Obtengo el mismo resultado para todos los pares de divisas.

En cada caso obtengo el Error #130. ¿Alguna idea?

Saludos

 

Cuando se establece el take profit para una posición de compra. El TP es

Bid+(50*Point)

A diferencia de Ask+...

Chris

 

Lo siento, sí, culpa mía al escribir. Aun así, me temo que el problema persiste

 

Intente colocar un comentario o una impresión justo antes de la función ordersend para imprimir los niveles de stoploss y takeprofit. Además, asegúrese de que el stoploss/tp es mayor que la distancia mínima.

Coloca esto antes del envío de la orden:

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:
Hola. Estoy tratando de generar una orden usando OrderSend() en MT4 pero sigo obteniendo el Error #130. Entiendo que el Error #130 se relaciona con los niveles de stop-loss o take-profit que se establecen demasiado cerca del precio actual del mercado. Los he variado sin éxito. He utilizado tanto los valores relativos como los reales.

1. Utilizando valores relativos de take profit y stop loss para una compra:

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

2.Utilizando los valores reales de Stoploss y TakeProfit para una compra:

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

donde:

double StopLoss = NormalizeDouble(StopLoss, Digits);

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

y estos valores se establecen como valores externos (por ejemplo, extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Mi broker es FXCM. He intentado multiplicar los valores de StoplLoss y TakeProfit por 10. Obtengo el mismo resultado para todos los pares de divisas.

En cada caso obtengo el Error #130. ¿Alguna idea?

Saludos

FXCM con 5 dígitos.. o estás usando FXCM de qué país?

 

Gracias por sus respuestas. Sí, utilicé declaraciones de impresión para comprobar los valores de Stop Loss y Take Profit. Parecía estar bien en la impresión.

Estoy usando FXCM en el Reino Unido. Las divisas que no son el yen tienen 5 dígitos después del decimal (por ejemplo, GBPUSD: 1,55125). Los cruces de yenes tienen tres dígitos (por ejemplo, GBPJPY: 132,393). Me imaginé que siendo este el caso, los valores probablemente tendrían que ser multiplicados por 10.

Saludos

 
kvhutch:
Me imaginé que siendo este el caso los valores probablemente tendrían que ser multiplicados por 10. Saludos

¿Tienes algo así en la función init?

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

{

Factor = 10;

StopLoss *= 10;

TakeProfit *= 10;

MaxSpread *= 10;

Slippage *=10;

}
 

No, en la sentencia OrderSend() sólo multiplico los valores Take Profit y StopLoss por 10. ¿Puedes explicar un poco más el uso de estos valores? Muchas gracias

 

Son sólo las variables externas multiplicadas por diez. Usted los ajusta para incluir sus variables. Pero sólo se hacen las variables que difieren en los brokers de pips fraccionarios como el Stoploss.

Esto significa que si el stoploss se introduce como 20 pips en la lista de entrada, se ajustará automáticamente a 200 si el corredor es fraccional.