Creo que el error está en la forma de colocar las órdenes. Si está utilizando órdenes de stop, entonces sus órdenes están demasiado cerca del precio de mercado. Típicamente, su stop de compra debería estar al menos a "MarketInfo(Symbol(),MODE_STOPLEVEL)" pips de distancia de la demanda actual.
Si está colocando órdenes de stop, asegúrese de usar RefreshRates() y luego coloque las órdenes a la distancia requerida. Para los mercados que se mueven rápidamente, es posible que no funcione y que tenga que colocar las órdenes más lejos.
Espero que esto ayude.
Hola
Estoy recibiendo el mensaje de error paradas inválidas err 130 es decir
Imprimo mis valores y son los siguientes
2006.06.29 13:15:05 AUDUSD,H1: OrderDetails: SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2
Estoy usando lo siguiente para comprobar mi sl y tp antes de colocar la orden
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
A veces la venta pasa como lo siguiente
2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok
Tal vez mi control de paradas no está funcionando correctamente.
¿Alguna sugerencia?Tal vez usted está usando "+ 3" tanto en la compra como en la venta. En la venta hay que poner "-3" para que sea un precio válido
eso no es la molestia
Empiezo a pensar que interbankfx intenta evitar el scalping cuando el mercado está ajustado. Funciona cuando el mercado no está apretado - todavía es confuso como una vez que uno de sl y tp son mayores que MarketInfo(Symbol(),MODE_STOPLEVEL) debe abrir el comercio.
De todos modos Aquí está el código que utilizo
StopLoss = NormalizeDouble((TradeAbovePct/100)*(DemaH-DemaL)*(1/Point),0);
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
TakeProfit = NormalizeDouble(2*((DemaH-DemaL)*(1/Point)),0);
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
//Then I call a buy and sell as needed
//e.i
OpenBuy1(10);
OpenSell1(10);
////////////////////////////////////////////////
bool OpenBuy1(int pips1)
{
int ticket;
string comment="";
//reset defaults
use_MTBE = use_MTBEd;
use_split = use_splitd;
RefreshRates();
price1 = Ask;
stoploss1 = NormalizeDouble(price1-StopLoss*Point,Digits);
tp1 = NormalizeDouble(price1+TakeProfit*Point,Digits);
//expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;
Print("Openbuy lots: ", Lots);
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Orange);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,0,tp1,comment,MAGICMA,0,Orange);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY order opened : ",OrderOpenPrice());
//time1 = CurTime()+2*60*Period();
return(true);
}
}
else
{
Print("Error opening BUY order : ",GetLastError());
Print("OrderDetails: BuyPrice : ",price1," ,CurrentAsk : ", Ask," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);
return(false);
}
}
bool OpenSell1(int pips1)
{
int ticket;
string comment="";
//reset defaults
use_MTBE = use_MTBEd;
use_split = use_splitd;
RefreshRates();
price1 = Bid;
stoploss1 = NormalizeDouble(price1+StopLoss*Point,Digits) ;
tp1 = NormalizeDouble(price1-TakeProfit*Point,Digits);
// expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;
Print("Opensell lots: ", Lots);
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,0,tp1,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("SELL order opened : ",OrderOpenPrice());
// time1 = CurTime()+2*60*Period();
return(true);
}
}
else
{
Print("Error opening SELL order : ",GetLastError());
Print("OrderDetails: SellPrice : ",price1," ,CurrentBid : ", Bid," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);
return(false);
}
}
Se necesita ayuda - Error 138 al abrir los pedidos
¡¡¡Hola!!!
Bueno, como pueden ver, soy novato en este foro. Soy Ignacio, de Argentina. Y estoy tratando de desarrollar un simple EA.
Creo que la estrategia está "lista". Pero cuando ejecuto el backtest, no se abre ninguna orden. He imprimido algo de información de depuración y las condiciones están bien. El error que arroja la función OrderSend es el 138.
El código es el siguiente:
RefreshRates();
OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);
¿Alguien puede explicarme qué es lo que falla?
Gracias a todos.
ign...
Hola.
Bueno, como pueden ver, soy novato en este foro. Soy Ignacio, de Argentina. Y estoy tratando de desarrollar un simple EA.
Creo que la estrategia está "lista". Pero cuando ejecuto el backtest, no se abre ninguna orden. He imprimido algo de información de depuración y las condiciones están bien. El error que arroja la función OrderSend es el 138.
El código es el siguiente:
RefreshRates();
OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);
¿Alguien puede explicarme qué es lo que falla?
Gracias a todos.
ignorar...El error 138 significa que hubo una recotización. ¿Has probado a utilizar un valor de pip mayor para el deslizamiento, algo así como entre 3 y 5?
Gracias por vuestras respuestas,
Maji, he probado algunos valores de deslizamiento en un bucle y OrderSend me da el mismo error.
elihayun, he añadido correctamente tu condición y sigue dando el mismo error.
He hecho muchas pruebas y no hay buenos resultados
¿Alguna sugerencia? Realmente quiero terminar este para hacer otro EA más serio jejeje.
Gracias a todos
ign...
En primer lugar, para obtener la descripción del error haga lo siguiente
después del enlace #property añada la línea
#enlace de la propiedad "http://www.elihayun.com"
#include
ahora para comprobar el error haz lo siguiente
if (err != 0)
{
Print("Error # ", err, " ", ErrorDescription(err));
}Para su problema, no puedo pensar en otro problema. Quizás estés usando otro RefreshRates () Intenta comentarlo
// RefreshRates()
En primer lugar, para obtener la descripción del error haga lo siguiente
después del enlace #property añada la línea
#enlace de propiedad "http://www.elihayun.com"
#include
ahora para comprobar el error haz esto
if (err != 0)
{
Print("Error # ", err, " ", ErrorDescription(err));
}[/PHP]
For your problem, I cannot think of another problem. Maybe u are using another RefreshRates() Try to comment them out
// RefreshRates()Aquí está la salida del script:
2006.07.02 11:07:15 2006.01.04 12:00 eaButler EURUSD,H4: Error Description [#138]: requote
2006.07.02 11:07:15 2006.01.04 12:00 stdlib EURUSD,H4: loaded successfully
y aquí está el código:
[PHP]
last_ticket = OrderSend( Symbol(), OP_SELL, Lots, Slippage, Bid, 0.0, 0.0, c , magic_number, 0, Red);
if(last_ticket < 0)
{
rv = GetLastError();
Print("Descripción del error [#"+ rv + "]: " + ErrorDescription(rv));
}

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Hola
Estoy recibiendo el mensaje de error paradas inválidas err 130 es decir
Imprimo mis valores y son los siguientes
2006.06.29 13:15:05 AUDUSD,H1: OrderDetails: SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2
Estoy usando lo siguiente para comprobar mi sl y tp antes de colocar la orden
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
A veces la venta pasa como lo siguiente
2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok
Tal vez mi comprobación de paradas no está funcionando correctamente.
¿Alguna sugerencia?