Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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
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
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 ?
CheersFXCM 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
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 ?
{
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.