Códigos de error

 

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?

 

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.

 

es una compra/venta no un stop

Hola

Gracias pero no es un stop es una operación - compra/venta, voy a probar 2*MarketInfo(Symbol(),MODE_STOPLEVEL)

 
cardio:
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...

 
ignacio:
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?

 

Creo que no existe la recotización en el backtest. El problema, para mi opinión, está ocurriendo por los "RefreshRates" que quizás en el backtesting pueden causar un problema de recotización. Considere lo siguiente

if (!isTesting()) RefreshRates();

 

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

int err = GetLastError();

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()

 
elihayun:
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

int err = GetLastError();

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));

}