Damn Error 130 to Hell

 

Quelqu'un sait-il pourquoi j'obtiens l'erreur 130 ? Je me suis assuré que mon SL est suffisamment large et qu'il se trouve du bon côté du marché (c'est-à-dire en dessous pour un achat). Toute aide serait très appréciée et constituerait un grand soulagement*.

if(BUYING)
{
if(stoploss > 0) //SL est fixé à 35
realSL = Ask - (stoploss * Point) ;
if(takeprofit > 0)
realTP = Ask + takeprofit * Point ;
//UTILISATION ! !
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red) ;

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError()) ;
Alert("CODE_TEST : BUY BUY BUY") ;

Merci à tous,

Pat

 
FXpipclash:

Quelqu'un sait-il pourquoi j'obtiens l'erreur 130 ? Je me suis assuré que mon SL est suffisamment large et qu'il se trouve du bon côté du marché (c'est-à-dire en dessous pour un achat). Toute aide serait très appréciée et constituerait un grand soulagement*.

if(BUYING)
{
if(stoploss > 0) //SL est fixé à 35
realSL = Ask - (stoploss * Point) ;
if(takeprofit > 0)
realTP = Ask + takeprofit * Point ;
//UTILISATION ! !
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red) ;

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError()) ;
Alert("CODE_TEST : BUY BUY BUY") ;

Merci à tous,

Pat

Essayez ceci... Je pense que vous confondez l'utilisation du Bid et du Ask.


if(BUYING)
{
if(stoploss > 0) //SL est fixé à 35
realSL = Bid-(stoploss * Point) ;
if(takeprofit > 0)
realTP = Bid+ takeprofit * Point ;
//UTILISATION ! !
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red) ;

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError()) ;
Alert("CODE_TEST : BUY BUY BUY") ;



************************************

Règle générale... si vous entrez sur la demande, vous sortez avec l'offre, si vous entrez sur l'offre, vous sortez avec la demande.


LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limit*Point)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)



ShortStop = Ask+(stoploss*Point)

ShortLimit =Ask-(limite*Point)

Entrée courte = BID

ShortTrail = Demande+(perte d'arrêt*Point)




Loup de mer

 
seawolf wrote >>

Essayez ceci... Je pense que vous confondez l'utilisation de l'offre et de la demande.

if(BUYING)
{
if(stoploss > 0) //SL est fixé à 35
realSL = Bid-(stoploss * Point) ;
if(takeprofit > 0)
realTP = Bid+ takeprofit * Point ;
//UTILISATION ! !
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red) ;

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError()) ;
Alert("CODE_TEST : BUY BUY BUY") ;

************************************

Règle générale... si vous entrez sur la demande, vous sortez avec l'offre, si vous entrez sur l'offre, vous sortez avec la demande.

LongStop = Bid-(stoploss*Point)

LongLimit =Bid+(limit*Point)

LongEntry= ASK

LongTrail = Bid-(stoploss*Point)

ShortStop = Ask+(stoploss*Point)

ShortLimit =Ask-(limite*Point)

Entrée courte = BID

ShortTrail = Demande+(perte d'arrêt*Point)

Seawolf

Merci pour votre réponse Seawolf, donc dans mon morceau de code original, si je vais acheter, ne devrais-je pas utiliser le prix demandé pour mon calcul, parce que ce sera le prix que je vais devoir payer ?

 
Qui est votre courtier ?
 

C'est le prix que vous payez à l'entrée, mais vous devez couvrir le spread et vous payez donc l'autre prix à la sortie... Le fait que vous utilisiez le ask pour les entrées ET les sorties est absolument faux.


Suivez la règle du pouce que je vous ai donnée et tout fonctionnera bien... Je sais que cela peut être très confus, c'est pourquoi je le garde écrit sur mon tableau blanc et après de nombreuses années de trading et de programmation, je m'y réfère encore presque quotidiennement. Après des années de trading et de programmation, je m'y réfère encore presque quotidiennement. J'ai trouvé beaucoup d'articles qui n'y parviennent même pas, alors ne vous sentez pas mal.

 

Bonjour

Bien que le code original soit erroné parce que vous utilisez le Bid au lieu du Ask pour acheter, il aurait dû fonctionner si le stoploss était vraiment de 35 points. Assurez-vous que le système sur lequel vous travaillez n'est pas passé à 5 décimales, sinon le stoploss devrait être de 350 points. Interbank utilisait 5 décimales sur la démo mais 4 sur le système live à un moment donné.

 
FXpipclash:

Quelqu'un sait-il pourquoi j'obtiens l'erreur 130 ? Je me suis assuré que mon SL est suffisamment large et qu'il se trouve du bon côté du marché (c'est-à-dire en dessous pour un achat). Toute aide serait très appréciée et constituerait un grand soulagement*.

if(BUYING)
{
if(stoploss > 0) //SL est fixé à 35
realSL = Ask - (stoploss * Point) ;
if(takeprofit > 0)
realTP = Ask + takeprofit * Point ;
//BUYING !!
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, slippage, realSL, realTP, nameEA, 887722,0,Red) ;

if(ticket < 0)
Print("OrderSend (",nameEA,") failed with error #", GetLastError()) ;
Alert("CODE_TEST : BUY BUY BUY") ;

Merci à tous,

Pat

Eh bien, je peux affirmer catégoriquement que Seawolf et Ruptor parlent de leur derrière collectif.

Pour un ordre OP_BUY, vous avez tout à fait raison d'utiliser le prix Ask pour générer votre prix d'entrée et vos stops.

Ce que vous devez faire, c'est vérifier les valeurs de vos stops en utilisant une instruction Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) directement avant l'envoi de votre ordre afin de vous assurer que les valeurs sont conformes à vos attentes. Si c'est le cas, vous devez vérifier les valeurs acceptables en utilisant la fonction MarketInfo() avec l'identifiant MODE_STOPLEVEL.

 
Utilisez-vous un courtier à 5 chiffres ? Si c'est le cas, votre variable "Point" rendra tous vos SL/TP 1/10e de la valeur réelle.
 
cloudbreaker wrote >>

Eh bien, je peux affirmer catégoriquement que Seawolf et Ruptor parlent de leur derrière collectif.

Pour un ordre OP_BUY, vous avez tout à fait raison d'utiliser le prix Ask pour générer votre prix d'entrée et vos stops.

Ce que vous devez faire, c'est vérifier les valeurs de vos stops en utilisant une instruction Print("realSL =, "DoubleToStr(realSL,Digits)," realTP=",DoubleToStr(realTP,Digits)) directement avant l'envoi de votre ordre afin de vous assurer que les valeurs sont conformes à vos attentes. Si elles sont conformes à vos attentes, vous devez alors vérifier les valeurs acceptables en utilisant la fonction MarketInfo() avec l'identifiant MODE_STOPLEVEL.

Merci cloudbreaker, je savais que j'avais raison de payer le ask, mais je n'ai jamais indiqué que je payais aussi le ask en sortant de la transaction, l'impression de la valeur SL est une excellente idée, merci pour tous vos commentaires.

 
eacoder wrote >>
Utilisez-vous un courtier à 5 chiffres ? Si c'est le cas, votre variable "Point" rendra tous vos SL/TP 1/10ème de la valeur réelle.

Non, j'utilise FXDD qui est un broker à 4 chiffres, tout cela est plutôt mystérieux pour moi, je vais essayer

 
FXpipclash wrote >>

Merci Cloudbreaker, je savais que j'avais raison de payer le ask, je n'ai jamais dit que je payais aussi le ask à la sortie de la transaction, imprimer la valeur du SL est une excellente idée, merci pour tous vos commentaires.

D'accord, Cloud, celui-ci m'a donné du fil à retordre mais je pense l'avoir résolu, pour une raison quelconque, le TP et le SL étaient retransmis à 1.0 (bien trop petit). J'ai donc tracé mes variables tout au long du processus et j'ai remarqué que j'avais déclaré les valeurs takeprofit et stoploss en tant que doubles et les valeurs realSL et realTP en tant qu'entiers, changer realTP et realSL en doubles a résolu le problème, merci encore.