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
Gumko:
Ça fait deux jours qu'elle est debout.
Bonjour à tous.
Modification et problèmes.
Fonction externe :
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){
//---- structure de liaison et résultats commerciaux
Demande MqlTradeRequest ;
MqlTradeResult résultat ;
//---- structure d'initialisation de la recherche de transactions MqlTradeRequest pour la modification de la position
request.action = TRADE_ACTION_SLTP;
request.symbol = symbol ;
request.sl = StopLoss ;
request.tp = Takeprofit ;
string word = "" ;
StringConcatenate(mot,
"<< ============ Modifyposition() : modifier la position ",
symbole," ============ >>>") ;
Imprimer(mot) ;
//---- modifier la position et vérifier les résultats de la recherche commerciale
if(!OrderSend(request,result)|| result.deal==0)
{
Print("Erreur de modification =", GetLastError() ;
retour (faux) ;
}
retour (vrai) ;
}
Mais ça ne marche pas comme ça.
Comment faire ?
Merci :)
Essayez de cette façon :
Essayez de cette façon :
Yedelkin,
Merci, ça n'a pas marché.
J'ai vérifié s'il compte correctement pour le début de l'appel de fonction.
Voilà comment j'ai fait :
double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits) ;
double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits) ;
double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits) ;
double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits) ;
if(Open > 0){
start_buy = Ask - Open ; Print("start_buy=",start_buy) ;
start_sel = Open - Bid;Print("start_sel=",start_sel) ;
}
Surprise dans le journal :
MR 0 Core 1 10:21:49 2012.10.01 10:12:42 deal #2 sell 0.10 EURUSD at 1.28146 done (based on order #2)
GH 0 Core 1 10:21:49 2012.10.01 01 01:12:42 transaction effectuée [#2 vendre 0.10 EURUSD à 1.28146].
NI 0 Core 1 10:21:49 2012.10.01 01 01:12:42 ordre exécuté vendre 0.10 à 1.28146 [#2 vendre 0.10 EURUSD à 1.28146 (0.00000)
OF 0 Core 1 10:21:49 2012.10.01 01 01:12:43 start_buy=0.0001299999999999635
DR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=5.000000000010552e-005
LE 0 Core 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00010999999998325
FR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=7.00000000000145e-005
Bien sûr, je me demandais, tout comme Sela, d'où venaient ces chiffres ?
Je pense avoir écrit la fonction correctement comme indiqué :
Modification de SL et TP
Ordre de transaction pour la modification des niveaux StopLoss et/ou TakeProfit. Nécessite 4 champs :
Alors qu'est-ce qui a exactement "échoué" ?
Insérez le code correctement (Ctrl+Alt+M) :
Ici, la normalisation doit être utilisée dans un ordre différent.
1. Comme les valeurs de type SymbolInfoDouble(Currency,SYMBOL_BID) proviennent du serveur, elles sont déjà considérées comme normalisées. Et il n'est pas nécessaire de les normaliser une seconde fois. C'est-à-dire que vous pouvez simplement les écrire :
Mais après toute opération arithmétique, la normalisation disparaît, donc si vous avez besoin d'obtenir un nombre normalisé, vous devez l'écrire comme ceci :
Je réfléchis encore au reste.
DR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=5.000000000010552e-005
FR 0 Core 1 10:21:49 2012.10.01 01:12:43 start_sel=7.0000000145e-005
Bien sûr, seul le sel nous intéresse - d'où viennent de tels chiffres ?
7,00000000000145e-005 n'est qu'une des façons d'enregistrer la valeur d'un nombre réel. Je crois que ça s'appelle "scientifique". Pour plus de détails, voir."Guide de référence MQL5 / Notions de base du langage / Types de données / Types réels (double, flottant)".
Yedelkin,
Merci de vous être attaqué à ce problème.
Voici le code. Les fonctions pour ouvrir la position ont été écrites par Nikolay Kositsin.
Par exemple, j'ai ajouté une MA à MFI et je veux enregistrer cette MA dans mon EA. Je ne sais pas où et comment le faire.
Merci pour votre réponse)
1. Je dirais ceci : utilisez le code de quelqu'un d'autre avec beaucoup de précaution. Parce que le code de quelqu'un d'autre signifie aussi les erreurs de quelqu'un d'autre.
2. Ici(https://www.mql5.com/ru/forum/6343/page64#comment_357008), j'ai suggéré que vous essayiez de mettre correctement à zéro les variables avant de les utiliser. Mais votre code n'a pas encore mis en œuvre cette suggestion. De plus, votre code contient des constructions du type suivant :
Vous voyez, dans cette construction, les variables de demande et de résultat sont remises à zéro non pas avant mais après leur utilisation. De plus, lorsque ces variables locales sont mises à zéro, la fonction cesse de fonctionner, c'est-à-dire que cette mise à zéro n'a aucun sens. En d'autres termes, une telle construction est un bon exemple de la manière dont les variables MqlTradeRequest et MqlTradeResult ne doivent pas être mises à zéro. Donc, si vous êtes impatient, s'il vous plaît, essayez d'effacer les variables correctement. Si quelque chose ne fonctionne pas, veuillez décrire en détail ce qui "ne fonctionne pas".
3. La bibliothèque standard possède une classe de commerce"MQL5 Reference / Standard Library / Trade Classes / CTrade". Essayez de trouver comment l'appliquer dans la pratique. Au stade initial de l'immersion dans la langue, ce cours peut être tout à fait suffisant. Par exemple, cette classe a la méthode suivante :"MQL5 Reference / Standard Library / Trade Classes / 2CTrade/ PositionModify". Il est mis en œuvre comme suit :
La ligne "ClearStructures() ;" efface la variable m_request avant de l'utiliser.