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)
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...
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 ?
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
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()
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
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)) ;
}
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
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 ?