Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 197
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'ai regardé la vidéo sur le travail avec un indicateur externe, j'ai écrit un petit code pour voir les valeurs des tampons dans le testeur :
void OnTick()
{
double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1) ;
double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1) ;
double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1) ;
double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1) ;
Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);
}
Les zones apparaissent et disparaissent en mode visualisation. Mais la valeur des tampons est toujours nulle de toute façon. N'y a-t-il pas moyen de formaliser ces zones dans le code ?
Peut-être existe-t-il une fonction, autre que iCustom, qui conviendrait à de tels indicateurs ? Peut-être que quelqu'un a écrit des hiboux avec de tels indicateurs ?
Pas moyen d'utiliser les tampons indicateurs, ils stockent des valeurs fractales.
Dans les propriétés de l'indicateur fractals_show = true ; vous les verrez sur le graphique.
Zones, objet graphique OBJ_RECTANGLE
Vous pouvez obtenir la valeur de ces zones en utilisant
ObjectGet
Renvoie la valeur d'une propriété d'objet spécifiée.
doubleObjectGet(
stringobject_name,// nom de l'objet
intindex// identifiant de la propriété
) ;
Vous passez en boucle tous les objets, trouvez le bon, et trouvez le chemin.
Approximativement, cela ressemble à ceci
Vous savez, juste dans ce fil, j'ai posté un modèle pour un chalut qui utilise la valeur de l'indicateur qui lui est envoyé dans ses calculs. Cherchez, ne soyez pas paresseux.
J'ai besoin d'un stop suiveur correct sur les positions ouvertes. En fin de compte, il y en a 1 ou 3 et ils sont liés par une valeur Step, c'est-à-dire un système de stop/reverse. Ou peut-être est-il plus facile de suivre tous les ordres en utilisant la fonction CalculateProfit(). Maintenant, je n'arrive pas à comprendre comment la valeur de l'indicateur dans ce schéma de traitement des ordres peut être liée au suivi du profit total des positions ouvertes.
J'ai besoin d'un stop de trailing correct sur le profit des positions ouvertes. Au final, il y en a 1 ou 3 et ils sont liés par la valeur Step, c'est-à-dire qu'il s'agit d'un système stop et reverse. D'où la complexité. Ou peut-être est-il plus facile de suivre tous les ordres à l'aide de la fonction CalculateProfit(). Maintenant, je n'arrive pas à comprendre comment la valeur de l'indicateur dans ce schéma de traitement des ordres peut être liée au suivi du profit total des positions ouvertes.
L'indicateur, sa valeur, peut être une valeur autre que, par exemple, la MAK de la barre souhaitée. La valeur du prix calculé pour déplacer l'arrêt total des positions peut être envoyée au chalut.
Cependant, il n'est pas clair quel type de chalut est en position ouverte - ce qu'il tracte et quand exactement.
Tous les sentiers sont ici. Dans le fichier TrailingFuncLib.mq4, je prends la fonction TrailingStairs - Trailing STANDARD-STANDARD. Chaque commande est suivie indépendamment.
L'indicateur, sa valeur, peut être une valeur autre que, par exemple, la MAK de la barre souhaitée. La valeur du prix calculé pour déplacer l'arrêt total des positions peut être envoyée au chalut.
Cependant, il n'est pas clair quel type de chalut est en position ouverte - ce qu'il tracte et quand exactement.
En principe, oui, on m'a proposé une fois un chalutage par prix moyen. Tout semble logique, mais qu'est-ce que cela signifie - prix moyen ? Est-ce (prix de 1 ordre + Step*Point + (prix de 2 ordres + Step*Point) + prix de 3 ordres) / 3 ? Il s'agit donc de beaucoup de paramètres - vous devez appeler les positions ouvertes et le prix actuel de chaque position. Quoi qu'il en soit, ce trailing stop me dérange moins que le fait que l'EA perde de la valeur pendant les tests. Que se passera-t-il dans le commerce réel ? Il peut être défini, mais là encore, nous ne savons pas quelle tournure prendra le graphique des devises dans une semaine ou un mois, il y a donc une faiblesse - si 3 ordres sont ouverts et qu'il y a un contre-mouvement sur le marché, le conseiller expert échouera en raison du drawdown. Il faut donc penser à limiter le drawdown et à fermer les positions avant que le dépôt ne soit annulé. Pour faire court, c'est Fox qui m'intéresse le plus))))
Je n'arrive pas à le comprendre moi-même et je n'ai pas trouvé d'informations spécifiques non plus(( L'idée est de marquer les frontières de prix dans le code, les zones les plus proches construites par l'indicateur. J'ai commencé à écrire du code, mais je suis confus et je ne sais pas si je le fais bien ou pas. Je ne sais pas si je le fais bien ou mal.
int obj_total=ObjectsTotal();
string name;
for(int i=0;i<obj_total;i++)
{
name = ObjectName(i);
if(ObjectType(name)==OBJ_RECTANGLE)
{
pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны
pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны
}
}
J'ai trouvé la solution - apparemment le terminal n'avait pas assez de mémoire - j'ai fermé quelques graphiques et ça a marché.
Merci - en effet, les calculs ont lieu.
Et si les variables ne sont pas de type int, mais bool, que faire ?
Je suis désolé, mais ce code est-il différent du précédent ?
Les différences sont minimes. L'une des variables est logique.
La sortie dira vrai ou faux
Les différences sont minimes. L'une des variables est logique.
La sortie dira vrai ou faux