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
J'apprécie vraiment l'aide que vous et tout le monde m'apportez. J'ai tout essayé ces deux derniers jours pour obtenir cette compilation et je m'excuse de ne pas avoir demandé. La plupart d'entre vous m'ont suggéré de ne pas utiliser mon propre code et d'utiliser celui de quelqu'un d'autre, mais je ne vais pas apprendre si je ne comprends pas ce que je fais mal. Pour moi, mon code semble correct. Je lui demande de compter les ordres par position et de sélectionner uniquement ceux qui répondent à mes critères, puis de modifier cette transaction spécifique. Jusqu'à présent, après 4 pages, personne n'a indiqué quelle ligne de mon code est défectueuse. Si je ne vois pas et ne comprends pas d'abord ce que je fais mal, cela ne m'aidera pas d'apprendre en utilisant le code de quelqu'un d'autre. Mon but maintenant n'est pas d'avoir un EA Trailingstop qui fonctionne, parce qu'il y en a beaucoup, mais d'apprendre à coder, pour pouvoir aller de l'avant. En fait, mon code était presque identique à celui que Jimdandy a posté dans son tutoriel Youtube sur les Trailingstops. Comme il est pratiquement identique au sien, j'ai copié le code presque mot pour mot (sauf que je veux trader manuellement), mais son code ne fonctionne que parfois aussi bien.
J'ai imprimé quelques trucs, ce trade est presque 300 points au-delà du point où j'ai spécifié que le Trailingstop se déclenche(qui était 150 points) :
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrderModify = false
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : Ask = 1.45926
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : Selectbypos = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : Selectbyticket = 1
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrderTicket = 50381828
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : ticket = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrderSelect = true
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrdersTotal = 16
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrderSymbol = EURUSD
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15 : OrderTicket = 50381828
2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15 : OrderModify = false
Cet EA n'est placé que sur l'EURAUD. Comme vous pouvez le voir, il y a 16 ordres ouverts sur 9 autres graphiques. Le numéro du ticket sélectionné pour cette paire est complètement faux et le symbole de l'ordre est complètement faux. Les deux sont pour un ordre EURUSD ouvert. Sur la base de ce qui précède, ma boucle for a sélectionné la position 0 dans ce cas, alors que l'EURAUD qu'elle était censée sélectionner était en position 14 (15-1). Pourquoi ? Je lui ai dit d'ignorer cela.
Dans la vidéo mentionnée ci-dessus, Jim s'est penché sur ce problème, et a dit qu'il utilisait le code suivant pour surmonter mon problème, cependant, il s'agit d'un compteur pour envoyer correctement les ordres et non d'une fonction pour filtrer les ordres. J'ai essayé de l'utiliser comme un filtre, mais sans succès.
Mon code ressemble maintenant à ceci : quelqu'un pourrait-il critiquer mon code afin que je puisse en tirer des leçons et me dire pourquoi il ne fonctionne pas sur plusieurs graphiques ? Je sais qu'il ne peut pas être si mauvais car il fonctionne parfaitement parfois. Merci.
Jusqu'à présent, après 4 pages, personne n'a indiqué quelle ligne de mon code est cassée.
C'est faux ! Nous avons décrit vos erreurs et proposé des solutions pour les résoudre, sous de nombreuses formes et alternatives. Pourtant, vous les ignorez et continuez à faire les choses à votre façon. Non seulement cela, mais vous avez même aggravé la situation en ajoutant d'autres erreurs.
Lorsqu'un peintre apprend à peindre, il le fait d'abord en copiant les techniques des autres qui l'ont maîtrisé. Ce n'est qu'une fois qu'il est à l'aise avec ces techniques qu'il commence à créer sa PROPRE MANIÈRE de peindre.
Voici une courte liste de "mes critiques" :
Il y a d'autres choses que je pourrais énumérer, mais corrigez au moins celles-ci, une fois pour toutes !
Le codage est une langue comme une autre. Oui, vous pouvez simplement enchaîner les mots, mais cela ne fait pas de vous un poète. Dans le codage, vous devez également avoir un rythme et une structure, afin de le rendre lisible et fonctionnel.
Voici une courte liste de "mes critiques" :
J'avais initialement des crochets pour toutes mes instructions 'if', conformément au code que j'ai posté ici plus tôt, mais comme ce code ne fonctionnait pas, j'ai essayé d'autres choses, notamment de copier le code que j'ai collé dans mon message précédent. Comme je l'ai mentionné, ce n'est même pas mon code, mais il ne fonctionne pas non plus sur toutes les paires. Je vais cependant remplacer les crochets à nouveau et suivre les autres conseils. En attendant, j'ai appris que OrderSelect imprimera le symbole du premier ordre dans le terminal et non celui sur lequel l'EA est, donc ce n'était pas faux.
EDIT : Merci pour la suggestion #3 !!!!!!! Je pense que c'était le problème, parce que l'ordre doit d'abord être sélectionné par le symbole et ensuite la valeur doit être stockée. J'ai donc déplacé la variable en dessous de ces fonctions comme ci-dessous, et il semble que cela fonctionne maintenant (mais plus de tests sont nécessaires avant que je sache avec certitude
En fait, j'avais des crochets pour toutes mes instructions 'if' initialement, conformément au code que j'ai posté ici plus tôt, mais comme ce code ne fonctionnait pas, j'ai essayé d'autres choses, y compris de copier le code que j'ai collé dans mon message précédent. Comme je l'ai mentionné, ce n'est même pas mon code, mais il ne fonctionne pas non plus sur toutes les paires. Je vais cependant remplacer les crochets à nouveau et suivre les autres conseils. En attendant, j'ai appris que OrderSelect imprimera le symbole du premier ordre dans le terminal et non celui sur lequel l'EA est, donc ce n'était pas faux.
EDIT : Merci pour la suggestion #3 !!!!!!! Je pense que c'était le problème, parce que l'ordre doit d'abord être sélectionné par le symbole et ensuite la valeur doit être stockée. J'ai donc déplacé la variable en dessous de ces fonctions comme ci-dessous, et il semble que cela fonctionne maintenant (mais plus de tests sont nécessaires avant que je sache avec certitude
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()!= Symbol()) continue;
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
if(OrderType()==OP_BUY){
if(Bid-OrderOpenPrice()>TSTP){
if(OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
}
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()!= Symbol()) continue;
// Everything below is executed if NO order is selected or a selected order is symbol
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
if(OrderType()==OP_BUY)
&& Bid-OrderOpenPrice()>TSTP)
&& OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
:
Maintenant, vous comprenez peut-être ma "critique sévère" lorsqu'ils font perdre le temps de tout le monde. Bien que je comprenne les "choses simples" pour lesquelles ils pensent qu'il est acceptable de perdre le temps de tout le monde, je ne le comprends pas.
Oui ! Malheureusement, il semble que vous ayez raison !
Merci pour les réponses.J'ai donc modifié le code pour revenir à une version antérieure comme ci-dessous.Avec ce code, il semble fonctionner parfaitement sur toutes les paires où le stoplevel est de 50 points, mais pas sur les paires où le stoplevel est plus élevé, par exemple EURAUD, même si les variables externes sont plus élevées que le stoplevel.C'est donc bizarre.
J'ai également trouvé un autre EA dont le code est très similaire au mien et j'ai comparé le code. J'ai souligné les principales différences.
1. augmentations au lieu de diminutions
2. il multiplie tout avec Point au lieu de Point*10
3. il ajoute le Trailingstop et le Trailingstep ensemble, puis en soustrait un et modifie l'ordre avec le Trailingstep. Si je comprends bien, le Trailingstart sera activé après un mouvement de 15 pips (150 points). Dans mon EA, le prix sera en retard de 5 pips et sera arrêté si le prix baisse à nouveau et atteint ce niveau de 5 pips. Dans son EA, il sera également activé après 15 pips, mais le nombre de pips en retard est de 19 (15+5-1), donc le prix doit baisser de 19 pips pour être arrêté. Par exemple : l'OrderOpenPrice est de 1.50000. Le prix monte de 150 points à 1.50150, ce qui active le Trailingstop. Si le prix redescend ensuite à 1.50100, il sera arrêté pour un profit de 5 pips. Dans son EA, le Trailingstop est également activé à 1.50150, mais le trail est à 1.49960 ce qui, je pense, provoquera l'erreur 130 puisque le stop est trop proche du stoplevel. Ou est-ce que je comprends mal ?
Mon problème pourrait-il être lié à un ou plusieurs de ces éléments ?
J'ai également trouvé un autre EA qui a un code très similaire au mien et j'ai comparé le code.
Voyons si je comprends votre logique ! Vous êtes prêt à trouver un autre EA de quelqu'un d'autre d'on ne sait où et vous êtes prêt à incorporer ce code dans le vôtre, MAIS VOUS N'AVEZ PAS LA VOLONTÉ de prendre le code qui a été spécifiquement écrit pour vous aider et corriger vos problèmes !!!
WOW ! Comme c'est LOGIQUE de votre part ! Où est SPOCK quand on a besoin de lui !
SPOCK, que tu puisses reposer en paix ! Tu nous manques à tous !
Voyons si je comprends votre logique ! Tu es prêt à trouver un autre EA de quelqu'un d'autre d'on ne sait où et tu es prêt à incorporer ce code dans le tien, MAIS TU N'ES PAS PRÊT à prendre le code qui a été spécifiquement écrit pour t'aider et corriger tes problèmes ! !!
WOW ! Comme c'est LOGIQUE de votre part ! Où est SPOCK quand on a besoin de lui !
SPOCK, que tu puisses reposer en paix ! Tu nous manques à tous !