Codes d'erreur - page 4

 
 

MT4 - Erreur #130 avec Ordersend()

Bonjour, j'essaie de générer un ordre en utilisant OrderSend() dans MT4 mais je continue à obtenir l'erreur #130. Je comprends que l'erreur #130 est liée au fait que les niveaux stop-loss ou take-profit sont fixés trop près du prix actuel du marché. Je les ai fait varier sans succès. J'ai utilisé des valeurs relatives et réelles.

1. Utilisation des valeurs relatives de prise de profit et de perte sèche pour un achat :

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green) ;

Utilisation des valeurs réelles de Stoploss et TakeProfit pour un achat :

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green) ;

où :

double StopLoss = NormalizeDouble(StopLoss, Digits) ;

double TakeProfit = NormalizeDouble(TakeProfit, Chiffres) ;

et ces valeurs sont définies comme des valeurs externes (par exemple, extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Mon courtier est FXCM. J'ai essayé de multiplier les valeurs StoplLoss et TakeProfit par 10. J'obtiens le même résultat pour toutes les paires de devises.

Dans chaque cas, j'obtiens l'erreur n° 130. Avez-vous une idée ?

Salutations

 

Lors de la définition du take profit pour une position d'achat. Le TP est

Bid+(50*Point)

Par opposition à Ask+...

Chris

 

Désolé, oui, c'est ma faute de frappe. Pourtant, le problème persiste, j'en ai peur.

 

Essayez de placer un commentaire ou une impression juste avant la fonction ordersend pour imprimer les niveaux stoploss et takeprofit. Assurez-vous également que les niveaux stoploss/tp sont supérieurs à la distance minimale.

Placez ceci avant l'envoi de l'ordre :

if(StopLoss!=0 && StopLoss<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

if(TakeProfit!=0 && TakeProfit<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

Chris

 
kvhutch:
Bonjour, j'essaie de générer un ordre en utilisant OrderSend() dans MT4 mais je continue à obtenir l'erreur #130. Je comprends que l'erreur #130 est liée au fait que les niveaux stop-loss ou take-profit sont fixés trop près du prix actuel du marché. Je les ai fait varier sans succès. J'ai utilisé des valeurs relatives et réelles.

1. Utilisation des valeurs relatives de take profit et de stop loss pour un achat :

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green) ;

Utilisation des valeurs réelles de Stoploss et TakeProfit pour un achat :

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green) ;

où :

double StopLoss = NormalizeDouble(StopLoss, Digits) ;

double TakeProfit = NormalizeDouble(TakeProfit, Chiffres) ;

et ces valeurs sont définies comme des valeurs externes (par exemple, extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

Mon courtier est FXCM. J'ai essayé de multiplier les valeurs StoplLoss et TakeProfit par 10. J'obtiens le même résultat pour toutes les paires de devises.

Dans chaque cas, j'obtiens l'erreur n° 130. Avez-vous une idée ?

Cheers

FXCM avec 5 chiffres... ou vous utilisez FXCM depuis quel pays ?

 

Merci pour vos réponses. Oui, j'ai utilisé des instructions d'impression pour vérifier les valeurs de Stop Loss et Take Profit. Elles semblaient correctes à l'impression.

J'utilise FXCM au Royaume-Uni. Les devises autres que le yen ont 5 chiffres après la décimale (par exemple GBPUSD : 1.55125). Les devises croisées en yen ont trois chiffres (par exemple, GBPJPY : 132,393). Je me suis dit que, dans ce cas, les valeurs devraient probablement être multipliées par 10.

Salutations

 
kvhutch:
Je me suis dit que dans ce cas, les valeurs devraient probablement être multipliées par 10. Merci.

Avez-vous quelque chose comme ça dans la fonction init ?

if (Digits == 3 || Digits == 5)

{

Factor = 10;

StopLoss *= 10;

TakeProfit *= 10;

MaxSpread *= 10;

Slippage *=10;

}
 

Non, dans l'instruction OrderSend(), je multiplie simplement les valeurs Take Profit et StopLoss par 10. Pouvez-vous nous en dire un peu plus sur l'utilisation de ces valeurs ? Merci beaucoup.

 

Ce sont juste les variables externes qui sont multipliées par dix. Vous les ajustez pour inclure vos variables. Mais vous ne faites que les variables qui diffèrent sur les courtiers à fraction de pip, comme Stoploss.

Cela signifie que si le stoploss est entré comme 20 pips dans la liste d'entrée, il sera automatiquement ajusté à 200 si le courtier est fractionnel.