[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 1126
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
Le code est faux. Premièrement, si la fonction start() est de type int, elle doit renvoyer une valeur entière. Vous avez un retour uniquement par condition. Et si la condition n'est pas remplie, que doit renvoyer la fonction start() au terminal ?
De plus, vous êtes trop compliqué à vérifier - mieux vaut faire comme suit : nous créons un compteur d'ordres, ouverts et fermés aujourd'hui. Si le nombre d'ordres clôturés aujourd'hui est supérieur à zéro, alors vous ne négociez pas. Sinon, nous sommes autorisés à faire du commerce.
changé int en void... n'a pas aidé
Pour être honnête, je ne comprends pas vraiment comment faire un compteur pour les ordres tout en étant capable d'activer/désactiver l'option de transaction quotidienne unique.....
....think-think-think Je vais essayer comme ceci
si(CalculateCurrentOrders(Symbol())==0 && Orders==0)
{
CheckForOpen() ;
if(WaitForNewDay) {Orders++;}
retour ;
}
Remise à zéro du compteur :
if(WaitForNewDay)CheckForNewDay() ;
void CheckForNewDay()
{
tm=iTime(Symbol(),PERIOD_D1,0) ;
if (bt!=tm) {bt=tm ; Orders=0;}
}
Bref, j'en reviens à ce que je fuyais. ))))
changé int en void... n'a pas aidé
Honnêtement, je ne comprends pas comment faire un compteur d'ordres tout en étant capable d'activer/désactiver l'option unique de trading journalier.....
-------------
Quoi qu'il en soit, revenons à ce que je fuyais. ))))
Veuillez m'aider avec le code. Je dessine et déplace manuellement une ligne horizontale et lorsque le prix la touche, cela déclenche un signal.
Le prix touche la ligne - il y a un signal. Je le comprends. Quel est le problème avec le code ?
Désolé, j'ai mal défini la tâche)). Ce dont vous avez besoin, c'est d'un code qui fasse cela.
La première chose à comprendre est qu'une ligne est un objet. Le code de programmation distingue les objets par leur nom. Vous devez écrire le nom de la ligne dans le code, puis lorsque vous déposez la ligne sur un graphique, vous devez aller dans ses propriétés et changer le nom pour celui que vous avez écrit dans le code. Ce n'est qu'alors que le code comprendra que vous devez traiter les relevés effectués sur cet objet.
Ensuite, dans le code, vous devez demander le prix où se trouve la ligne. La demande est effectuée via la double fonction ObjectGet(string name, int prop_id). Au lieu de name, vous devez spécifier le nom de votre ligne, et au lieu de prop_id, spécifiez OBJPROP_PRICE1. De cette façon, vous pouvez obtenir de manière programmatique le prix auquel cette ligne est fixée. Ensuite, dans le code, vous devez vérifier si le prix touche cette ligne. Par exemple : si le prix du tick précédent est inférieur au niveau où la ligne est fixée et qu'il est supérieur ou égal à ce niveau sur le tick actuel, alors ce toucher a eu lieu.
Alexander, si vous ne parvenez pas à faire quelque chose avec le code, ils peuvent vous aider. Si vous souhaitez que le code soit implémenté pour vous, veuillez vous rendre sur le site https://www.mql5.com/ru/job.
Je l'ai fait mais le signal ne fonctionne pas lorsque Close[0]==n. Comment le réparer ?
Eh bien, à en juger par le code, vous avez fait un indicateur. Ainsi, pour vérifier si cette partie du code fonctionne, vous devrez vous asseoir et attendre que le prochain tick touche la ligne. Il est préférable de créer un script pour tester cette partie du code, car il vous donnera des résultats instantanés.
La première chose dont vous devez vous assurer est que le code voit effectivement votre ligne. Comment faites-vous ? Vous devez demander son prix et l'afficher comme une alerte. Je le fais.
Maintenant que le script a été recompilé, nous ouvrons n'importe quel graphique et y dessinons une ligne horizontale. Ensuite, nous entrons dans ses propriétés et, puisque nous avons donné le nom "1" à la ligne dans le code, nous définissons ce nom dans les propriétés de la ligne également :
Cliquez sur OK. Nous déposons le script sur le graphique et nous nous assurons que l'alerte a renvoyé le bon prix. Nous déplaçons la ligne du graphique à un autre endroit et renvoyons le script au graphique pour nous assurer que si nous changeons la position de la ligne manuellement, le code la voit et la reconnaît toujours.
Puis on continue dans la même veine.
L'indicateur est testé par le testeur avec la visualisation activée. J'ai corrigé un peu le code, car pour que l'alerte soit déclenchée, les valeurs doivent être normalisées. Mais si vous déplacez la ligne sur la barre actuelle, disons une heure, alors l'alerte ne sera déclenchée qu'une seule fois avec le mouvement ultérieur de la ligne sur l'alerte de la barre actuelle pour une raison quelconque, cela ne fonctionne pas. Je dois attendre un autre bar.