Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 386
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
Hmm... Je n'avais pas pensé à changer les coordonnées. Merci pour le conseil.
Alors voici une question. Il existe une condition de point d'entrée. Je l'ai implémenté par le biais de variables statiques, afin qu'il ne soit pas remis à zéro à chaque tick. Eh bien, à certains endroits du graphique, le robot dessine un point d'entrée où il n'y a pas de niveaux horizontaux et, par conséquent, leur intersection avec la MA. Veuillez exécuter le code dans votre testeur et vous verrez le problème. Sur EURUSD. Peut-être ce problème doit-il être mis en œuvre d'une manière différente ? Je ne suis pas un pro de la programmation.
Autrement dit, le modèle est apparu, des niveaux ont été tracés et le robot attend trois croisements de l'un des niveaux.
Qu'en pensez-vous ?
Hmm... Je n'avais pas pensé à changer les coordonnées. Merci pour le conseil.
Alors voici une question. Il existe une condition de point d'entrée. Je l'ai implémenté par le biais de variables statiques, afin qu'il ne se remette pas à zéro à chaque tick. Eh bien, à certains endroits du graphique, le robot dessine un point d'entrée où il n'y a pas de niveaux horizontaux et, par conséquent, leur intersection avec la MA. Veuillez exécuter le code dans votre testeur et vous verrez le problème. Sur EURUSD. Peut-être ce problème doit-il être mis en œuvre d'une manière différente ? Je ne suis pas un pro de la programmation.
Autrement dit, le modèle est apparu, des niveaux ont été tracés et le robot attend trois croisements de l'un des niveaux.
Qu'en pensez-vous ?
Qui en a besoin, si je peux me permettre ? Regardez d'où le robot tire ses valeurs et vous trouverez une autre solution au problème.
Help Two donne des erreurs ! J'ai souligné les erreurs en rouge, aidez moi PLZ !
//+------------------------------------------------------------------+
//| Trailing Stop by Asyll.mq4 |
//| Copyright 2017, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Alibek Asyll"
#lien de propriété "https://www.mql4you.com"
extern int TralType = 0 ; // 0-Sar, 1-ATR, 2-HMA.
extern double SAR_Step = 0.02 ;
extern double SAR_Max = 0.2 ;
extern int ATR_Period = 14 ;
extern double ATR_K = 2.0 ;
extern inttern MMA_Period = 16 ;
extern int MMA_Method = 3 ;
extern inttern MMA_Shift = 0 ;
datetime LBT ;
//+------------------------------------------------------------------+
//| Fonction d' initialisation de l'expert |
//+------------------------------------------------------------------+
int init()
{
//---
//---
retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation experte |
//+------------------------------------------------------------------+
int deinit()
{
//---
retour(0) ;
}
//+------------------------------------------------------------------+
//| fonction tick expert |
//+------------------------------------------------------------------+
int start()
{
bool error = false ;
si (LBT!=Time[0] {
si (OrdersTotal()>0) {
for (int i=o ; i<OrdersTotal() ; i++) {
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()<2) {
double SL = OrderStopLoss() ;
if (OrderType()==0) {
switch (TralType) {
cas 0 : SL = iSAR(NULL,0,SAR_Step, SAR_Max,0) ;
pause ;
cas 1 : SL = High[1] - iATR(NULL,0,ATR_Period,1)*ATR_K ;
pause ;
cas 2 : SL = iCustom(NULL,0, "VininI_HMA_sound&",HMA_Period, HMA_Method, 3, HMA_Shift,false,false,",1,0,0) ;
pause ;
}
si (SL<OrderStopLoss())
SL = OrderStopLoss() ;
}
si (OrderType()==1){
switch (TralType){
cas 0 : SL = iSAR(NUll,0,SAR_Step, SAR_Max,0) ;
pause ;
cas 1 : SL = Low[1] + iATR(NULL,0,ATR_Period,1)*ATR_K ;
pause ;
cas 2 : SL = iCustom(NULL,0, "VininI_HMA_sound&",HMA_Period, HMA_Method, 2, HMA_Shift,false,false,",1,0,0) ;
pause ;
}
si (SL>OrderStopLoss())
SL = OrderStopLoss() ;
}
si (SL!=OrderStopLoss()) {
si (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0))
erreur = vrai ;
}
}
si (!error)
LBT = Time[0] ;
}
retour() ;
}
//+-------------------------------------------------------------------+
Il est logique d'utiliser le bouton SRC pour insérer du code. Signaler le texte des erreurs. Supprimez le texte pour accélérer le travail de l'examinateur :
Il faut du temps pour appeler ces fonctions - et elles sont vides. Et il serait plus facile de travailler avec le texte du programme sans eux. Comptez les accolades. Pour vous faciliter la tâche, essayez le stylet dans le menu Outils. Jetez les lignes vides.
Bonne journée à tous.
J'ai une idée simple que j'essaie de coder et de tester sur un testeur MT-4
Ouvrir des ordres lorsque les conditions suivantes sont présentes en même temps
1. A l'ouverture d'une bougie d'une minute
2 Au prix que je veux
3. à la date souhaitée
4.la valeur du prix doit coïncider strictement avec la valeur du jour.
Par exemple, le 27ème jour était un chandelier d'une minute avec un prix d'ouverture de 1,2414.
J'ai besoin d'ouvrir un ordre 1) sur le chandelier ouvert 2) à 1.2414 3) mais le jour suivant qui suit le 27.
Par exemple, le 28, nous avons eu un chandelier d'une minute ouvert à 1,2438.
J'ai besoin d'ouvrir un ordre 1) sur le chandelier ouvert 2) à 1.2438 3) MAIS LE JOUR SUIVANT APRES LE 28.
Par exemple, le 12, il y avait un chandelier de 1 minute ouvert à 1.2451.
J'ai besoin d'ouvrir un ordre 1) sur le chandelier ouvert 2) à 1.2451 3) MAIS LE JOUR SUIVANT APRES LE 12.
Pour réaliser cette idée, j'ai commencé à étudier le thème des tableaux et j'ai créé deux tableaux unidimensionnels, mais cela ne fonctionne pas.
Je vous serais très reconnaissant si vous pouviez corriger mon code pour mettre en œuvre l'idée ci-dessus.
Je suis lent à comprendre, donc je vous serais très reconnaissant si vous pouviez écrire le bon code, au lieu de l'expliquer en mots.
De cette façon, je le comprendrai beaucoup plus vite.
Voici mon code.
Bonjour ! Ce code est destiné à déplacer les niveaux de signal lorsque le prix se déplace au-delà du niveau supérieur ou inférieur, mais cela ne se produit pas. Veuillez me dire quelle est l'erreur.
J'ai besoin d'ouvrir un ordre 1) à l'ouverture d'une bougie 2) à 1.2414 3) MAIS LE DERNIER JOUR APRES LE 27.
Voici mon code.Premièrement, il n'est guère raisonnable de normaliser un DIS déjà normalisé, à moins que l'instructeur ne vous dise de le faire...
Deuxièmement, qu'est-ce qu'on obtient ? Le 27, le prix apparaît et vous entrez d'urgence les données dans le tableau, pour le déclencher le 28 ? Et si le 28, quelque chose d'urgent se produit ? Tu mets des données dans un tableau qui est difficile à calculer. Vos données doivent être calculables. Je vous suggère de déboguer votre EA par étapes. 1) Déterminez le prix requis et affichez-le à l'aide de la fonction Alert(). Si vous êtes sûr qu'elle est correcte, calculez et affichez la suivante... et ainsi de suite jusqu'à la fin. Il est trop tôt pour écrire tout le code à l'avance car il devra être modifié au fur et à mesure du débogage. Que pensez-vous de cette technologie du simple au complexe ?
Voyons ce qui est écrit ici. Premièrement, les lignes devraient être plus courtes. Ils s'afficheront mieux à l'écran et le compilateur travaillera plus rapidement.
Si la DIB est plus importante, vous devez faire quelque chose. Ensuite, si la DIS est inférieure, la même chose doit être faite. Vous pouvez le formuler plus brièvement : si le prix est plus ou moins élevé, alors ...Vous écrivez quelque chose dans les commentaires à propos du déplacement de quelque chose, mais tout ce que vous faites est de supprimer tous les objets. Vos 10 lignes sont remplacées par quatre.
Mais ! !! Le signe OR devrait être utilisé ailleurs, n'est-ce pas ? Il semble qu'au lieu de mettre à zéro cet OR, nous devrions créer de nouveaux objets ici. Ou encore plus simple : au lieu de supprimer des objets, il suffit de les déplacer vers un nouvel emplacement - cela ne représente que 3 lignes de code. Ou l'instructeur exige-t-il plus ?
Du simple au faux ou vice versa ?Tout d'abord, la normalisation d'une DIS déjà normalisée n'est guère recommandée, à moins que le professeur ne vous dise de le faire.
Deuxièmement, qu'avons-nous ici ? Le 27, un prix se produit et vous entrez d'urgence les données dans le tableau, pour qu'il fonctionne le 28 ? Et s'il y a une situation urgente le 28 ? Tu mets des données dans un tableau qui est difficile à calculer. Vos données doivent être calculables. Je vous suggère de déboguer votre EA par étapes. 1) Déterminez le prix requis et affichez-le à l'aide de la fonction Alert(). Si vous êtes sûr qu'elle est correcte, calculez et affichez la suivante... et ainsi de suite jusqu'à la fin. Il est trop tôt pour écrire tout le code à l'avance car il devra être modifié au fur et à mesure du débogage. Que pensez-vous de cette technologie du simple au complexe ?
Merci beaucoup pour l'astuce.
Mais il me semble que dans votre raisonnement vous supposez que j'essaie d'écrire un VRAI EA.
Je suis désolé de ne pas vous avoir dit que ce n'était pas le cas.
J'essaie de tester la présence d'une certaine régularité, d'une corrélation entre les paramètres ci-dessus, c'est-à-dire de confirmer ou de rejeter l'idée, qui peut être la base d'un Conseiller Expert TORKING.
Je vous serai donc reconnaissant de bien vouloir corriger mon code, afin que tout soit conforme à mon idée ci-dessus.
Et vos commentaires me seront bien sûr utiles lorsque je rédigerai un conseiller expert pour le commerce.
Merci.
Merci beaucoup pour le conseil.
Mais ce que je vois, c'est que dans votre raisonnement, vous supposez que j'essaie d'écrire un VRAI EA.
Je suis désolé de ne pas vous avoir dit que ce n'était pas le cas.
J'essaie de tester la présence d'une certaine régularité, d'une corrélation entre les paramètres ci-dessus, c'est-à-dire de confirmer ou de rejeter l'idée, qui peut être la base d'un Conseiller Expert TORKING.
Je vous serai donc reconnaissant de bien vouloir corriger mon code, afin que tout soit conforme à mon idée ci-dessus.
Vos commentaires me seront bien sûr utiles lorsque je rédigerai un conseiller expert pour le commerce.
Merci.
Désolé pour l'intrusion. Mais... En quoi la logique de traçage des lignes devrait-elle être différente pour une EA commerciale et non commerciale ?
Lorsque vous êtes au travail, regardez-vous votre montre différemment de la façon dont vous la regardez à la maison ?