[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 916

 

Bonjour, j'ai une question. Quelle valeur retourne iCustom() d'un indicateur ?

Par exemple, j'ai un indicateur qui a un calcul qui doit donner 1, 0 ou -1.

et un Expert Advisor dans lequel iCustom() est appelé.

Je ne sais pas où mettre la valeur calculée dans l'indicateur pour l'obtenir dans le conseiller expert lorsqu'il l'appelle.

 
naked:

Bonjour, j'ai une question. Quelle valeur retourne iCustom() d'un indicateur ?

Par exemple, j'ai un indicateur qui a un calcul qui doit donner 1, 0 ou -1.

et un Expert Advisor dans lequel iCustom() est appelé.

Je ne sais pas où mettre la valeur calculée dans l'indicateur pour l'obtenir dans le conseiller expert lorsqu'il l'appelle.

Si iCustom() est -1 dans l'indicateur, iCustom() donnera également -1 dans le Conseiller Expert. Vous n'avez pas besoin de changer quoi que ce soit dans l'indicateur.
 
donc je ne comprends pas, est-ce que iCustom() doit être une variable définie ou dois-je la mettre dans return( ????), car où que je mette cette valeur iCustom() retourne 0.
 
s500:

Bonjour !

Question sur le testeur de stratégie : Lors de l'essai dans le testeur de journal aucun résultat avec les enregistrements dans le fichier journal, dans les enregistrements d'erreur de journal terminal également pas de ..... à la fin de la barre de chargement, dans le testeur, il ya un grincement méchant. conseiller se trouve dans le dossier experts toutes les cases à cocher sont réglés cent aide plz ?

Vous n'avez peut-être pas téléchargé l'historique des cotations ou configuré les paramètres pour que le conseiller n'effectue pas de transactions.
 
naked:
donc je ne comprends pas ! une certaine variable doit-elle être définie dans l'indicateur ou dois-je l'écrire dans return( ????), car iCustom() renvoie 0 quel que soit l'endroit où je place cette valeur.
cela dépend du type de l'indicateur. si les valeurs 1 0 ou -1 sont stockées par le tableau de l'indicateur, vous n'avez pas besoin de changer quoi que ce soit dans l'EA. mais si l'indicateur n'utilise pas de tampon, iCustom() ne vous aidera pas.
 
forex-k got it. pas de tableau. pas de variables globales non plus. Je vais le corriger. Merci.
 

Est-il vrai que l'EA peut être testé mais ne fonctionnera pas sur un compte démo ou réel ?

Si oui, dois-je recoder l'ensemble de l'EA pour qu'il fonctionne sur le compte réel ?

pourquoi devrais-je le recoder pour une version de test ?

mais si c'est vrai, c'est totalement ...... je ne sais pas comment écrire !!!!!!! je dois avoir relu

le tutoriel 10 fois et dans la documentation je ne discute pas tout est intelligent et beau, mais je ne comprends toujours pas

ce qui est dit là-dedans. ! !!!

 
artmedia70:

Dans l'EA, vérifiez si l'ordre est fermé sur un stop. Et si oui, changez la valeur de votre drapeau.

Vous pouvez utiliser la fonction prête à l'emploi d'Igor Kim pour déterminer si la dernière position fermée l'a été par un stop.

Ou vous pouvez le faire vous-même. Dans tous les cas, ce serait un bon exemple pour commencer :


Je n'ai pas essayé d'utiliser votre fonction, mais j'ai essayé de changer le drapeau d'une autre manière, plus simple.

Dans la boucle, qui est bien supérieure à la fonction d'ouverture des ordres (elle vérifie plus loin dans le code s'il faut fermer ses ordres). Ici, OP est une étiquette d'une commande à passer (mon drapeau) :

for(i=0 ; i<OrdersTotal() ; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
{OP=0 ;
break;// si le numéro de commande i n'existe pas, arrêter la recherche
}

....


En théorie, si la raison était la valeur du drapeau, le problème aurait dû être clos. Mais le testeur n'ouvre toujours pas d'autres ordres après la rupture du stop (((

Encore une chose : le testeur génère l'erreur de la valeur 1 pendant le test. Cela vaut-il la peine d'y prêter une attention particulière ?

 
Comment créer une fonction et l'appeler ?
 
ViktorF:


Je n'ai pas essayé la fonction que vous avez donnée, mais j'ai essayé de changer le drapeau d'une autre manière, plus simple.

Dans la boucle, qui est bien supérieure à la fonction d'ouverture des ordres (elle vérifie ensuite par code la nécessité de fermer ses ordres). Ici, OP est une étiquette d'une commande à passer (mon drapeau) :

for(i=0 ; i<OrdersTotal() ; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
{OP=0 ;
break;// si le numéro de commande i n'existe pas, arrêter la recherche
}

....


En théorie, si la raison était la valeur du drapeau, le problème aurait dû être clos. Mais le testeur n'ouvre toujours pas d'autres ordres après la rupture du stop (((

Une dernière chose : lors des tests, le testeur génère l'erreur 1. Cela vaut-il la peine d'y prêter une attention particulière ?

Vous avez une conception étrange ici. Vous faites une boucle standard des commandes du terminal. De zéro à OrdersTotal() -1. Et puis vous vérifiez l'absence totale d'ordres dans le terminal de la boucle. Pourquoi ne pas vérifier le billet pour les commandes? Ou un magik ? Et votre drapeau =0 pour une raison quelconque. Et pourquoi pas faux ? Cependant, c'est vous qui êtes le patron. C'est ta logique, tu dois faire avec. :)