Codes d'erreur

 

Bonjour

J'obtiens le message d'erreur invalid stops err 130 c'est-à-dire.

J'imprime mes valeurs et elles sont les suivantes

2006.06.29 13:15:05 AUDUSD,H1 : OrderDetails : SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2

J'utilise l'exemple suivant pour vérifier mon sl et mon tp avant de passer l'ordre.

/

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

Parfois, la vente se déroule comme suit

2006.06.29 08:32:56 AUDUSD,H1 : open #5976740 sell 0.01 AUDUSD at 0.7309 sl : 0.7324 tp : 0.7278 ok

Peut-être que ma vérification des arrêts ne fonctionne pas correctement.

Avez-vous des suggestions ?

 

Je pense que l'erreur réside dans la façon dont vous placez vos ordres. Si vous utilisez des ordres stop, alors vos ordres sont trop proches du prix du marché. En général, votre ordre d'achat devrait être au moins à "MarketInfo(Symbol(),MODE_STOPLEVEL)" pips de la demande actuelle.

Si vous placez des ordres stop, assurez-vous d'utiliser RefreshRates() et de placer les ordres à la distance requise. Pour les marchés à évolution rapide, il se peut que cela ne fonctionne toujours pas et vous devrez placer les ordres plus loin.

J'espère que cela vous aidera.

 

il s'agit d'un achat/vente et non d'un arrêt

Bonjour

Merci mais ce n'est pas un stop c'est une transaction - achat/vente, je vais essayer 2*MarketInfo(Symbol(),MODE_STOPLEVEL)

 
cardio:
Bonjour

J'obtiens le message d'erreur invalid stops err 130 c'est-à-dire.

J'imprime mes valeurs et elles sont les suivantes

2006.06.29 13:15:05 AUDUSD,H1 : OrderDetails : SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2

J'utilise l'exemple suivant pour vérifier mon sl et mon tp avant de passer l'ordre.

/

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

Parfois, la vente se déroule comme suit

2006.06.29 08:32:56 AUDUSD,H1 : open #5976740 sell 0.01 AUDUSD at 0.7309 sl : 0.7324 tp : 0.7278 ok

Peut-être que la vérification des arrêts ne fonctionne pas correctement.

Des suggestions ?

Peut-être que vous utilisez "+ 3" à la fois dans l'achat et la vente. Dans la vente, vous devez mettre "-3" pour que le prix soit valide.

 

ce n'est pas le problème

Je commence à penser que c'est interbankfx qui essaie d'empêcher le scalping lorsque le marché est serré. Cela fonctionne lorsque le marché n'est pas tendu - mais c'est toujours déroutant car une fois que le sl et le tp sont supérieurs à MarketInfo(Symbol(),MODE_STOPLEVEL), la transaction devrait être ouverte.

Quoi qu'il en soit, voici le code que j'utilise

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

}

}

 

Besoin d'aide - Erreur 138 lors de l'ouverture des commandes

Salut !

Comme vous pouvez le constater, je suis un nouveau venu sur ce forum. Je m'appelle Ignacio, je viens d'Argentine. Et j'essaie de développer un EA simple.

Je pense que la stratégie est "prête". Mais lorsque je lance le backtest, aucun ordre n'est ouvert. J'ai imprimé quelques informations de débogage et les conditions sont correctes. L'erreur lancée par la fonction OrderSend est 138.

Le code est le suivant :

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Quelqu'un peut-il m'expliquer ce qui ne va pas ?

Merci à tous.

ign...

 
ignacio:
Bonjour !

Comme vous pouvez le constater, je suis un nouveau venu sur ce forum. Je m'appelle Ignacio, je viens d'Argentine. Et j'essaie de développer un EA simple.

Je pense que la stratégie est "prête". Mais lorsque je lance le backtest, aucun ordre n'est ouvert. J'ai imprimé quelques informations de débogage et les conditions sont correctes. L'erreur lancée par la fonction OrderSend est 138.

Le code est le suivant :

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Quelqu'un peut-il m'expliquer ce qui ne va pas ?

Merci à tous.

ign...

L'erreur 138 signifie qu'il y a eu une requote. Avez-vous essayé d'utiliser une valeur de pip plus grande pour le slippage, quelque chose comme entre 3 et 5 ?

 

Je pense qu'il n'y a pas de problème de requote en backtest. Le problème, à mon avis, se produit à cause des "RefreshRates" qui, peut-être en backtesting, peuvent causer un problème de requote. Considérez ceci

if (!isTesting()) RefreshRates() ;

 

Merci pour vos réponses,

Maji, j'ai testé quelques valeurs de slippage dans une boucle et OrderSend me donne la même erreur.

elihayun, j'ai bien ajouté votre condition et toujours la même erreur.

J'ai fait de nombreux tests et pas de bons résultats

Une suggestion ? Je veux vraiment finir celui-ci pour faire un autre EA plus sérieux hehee.

Merci à tous

ign...

 

Tout d'abord, afin d'obtenir la description de l'erreur, faites ce qui suit

après le lien #property, ajoutez la ligne

#lien de propriété "http://www.elihayun.com"

#include

Maintenant, pour vérifier l'erreur, faites ceci

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}

Pour votre problème, je ne peux pas penser à un autre problème. Peut-être que vous utilisez un autre RefreshRates() Essayez de les commenter

// RefreshRates()

 
elihayun:
Tout d'abord, afin d'obtenir la description de l'erreur, procédez comme suit

après le lien #property, ajoutez la ligne

#lien de propriété "http://www.elihayun.com"

#include

Maintenant, pour vérifier l'erreur, faites ceci

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

Voici la sortie du 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

et voici le code :

[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("Description de l'erreur [#"+ rv + "] : " + ErrorDescription(rv)) ;

}