- Caractéristiques du langage mql5, subtilités et techniques
- Réseaux neuronaux artificiels.
- Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes.
Pour clôturer un ordre, il n'est pas du tout nécessaire de définir le type d'ordre et le prix correspondant à ce type. Il suffit d'écrire OrderClosePrice()
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
Il y a beaucoup plus d'inexactitudes dans l'aide. Prenons l'exemple deSetIndexBuffer(). Quel est le problème de l'aide ?
"Paramètres
indice
[in] Numéro du tampon de l'indicateur. La numérotation commence par 0. Le nombre doit être inférieur à la valeur déclarée dans #property indicator_buffers". (cette affirmation est fausse)
La #propriété indicator_buffers spécifie le nombre de tampons à afficher. Peut-être que ce que l'aide veut dire, bien que je ne l'aie pas vérifié, est que les tampons utilisés pour le calcul n'ont pas besoin de recevoir un numéro par SetIndexBuffer(). Mais ce que j'ai vérifié, c'est que si le tampon utilisé pour le calcul reçoit un numéro avec SetIndexBuffer(), sa valeur peut être récupérée via iCustom().
Puisque les développeurs visitent le fil de discussion - il y a une question sur les "subtilités et les astuces" :
Exemple d'une impression formatée : PrintFormat("Bid=%.5f", Bid)
Question : existe-t-il un moyen, au lieu d'une précision fixe (ici5), de spécifier une condition dans la description du format pour que la précision dépende de _Digits ? Pour faire sans 'prétraitement' comme PrintFormat("Bid=%s", DoubleToString(Bid, _Digits))
Question : au lieu d' une précision fixe (ici5), est-il possible de spécifier une condition dans la description du format pour que la précision dépende de _Digits ?
- www.mql5.com
Описание проблемы
J'écris un indicateur dans MQL4. J'ai été confronté à une fonctionnalité non documentée du style DRAW_HISTOGRAM.
Pour afficher les valeurs sur le graphique, j'ai besoin de deux tampons : pour la valeur supérieure de l'histogramme et pour la valeur inférieure. Lors du mappage des tampons du tableau des indicateurs, si les tampons du style auront les valeurs 0 et 1, 2 et 3, 4 et 5, etc. tout s'affiche normalement. Cependant, si les tampons de style se voient attribuer des valeurs commençant par OTHER, c'est-à-dire 1 et 2, 3 et 4, 5 et 6, les lignes de l'histogramme ne seront pas affichées correctement dans le graphique, bien que les valeurs dans la fenêtre de données soient correctes.
Veuillez ajouter une mention de cette particularité à la documentation, ou la corriger, car ce n'est pas toujours le cas que la description du style DRAW_HISTOGRAM commence par un tampon pair !
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
-Aleks-, 2017.02.07 18:21
Pouvez-vous me dire si dans un Expert Advisor MT4, si un indicateur personnalisé avec plus d'un tampon graphique est constamment appelé, alors le recalcul se fait à chaque appel ou tous les tampons sont calculés en une fois et vous pouvez vous référer à l'indicateur dans le code de nombreuses fois et ne pas s'attendre à ce qu'il y ait un gaspillage de ressources. Je suis également intéressé de savoir ce qui se passe si le code n'est pas terminé (s'exécute plus d'un tick), mais que la valeur de l'indicateur change.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Slawa, 2017.02.08 08:20
Tous les tampons sont calculés en même temps. Interroger tranquillement les valeurs de l'indicateur - il n'y aura pas de nouveau calcul.Dans MT4 l'indicateur appelé depuis l'Expert Advisor travaille dans le flux de cet EA et sur une copie de ses données historiques. Vous pouvez boucler l'Expert Advisor, mais en même temps vous recevrez les données de l'indicateur calculées au moment de l'appel OnTick. Jusqu'à ce que vous appeliez RefreshRates. RefreshRates met à jour les données historiques de l'Expert Advisor, après quoi toutes ses données seront recalculées au premier appel de l'indicateur.
Pour clôturer un ordre, il n'est pas nécessaire de préciser le type d'ordre et le prix correspondant à ce type. Il suffit d'écrire close au prix OrderClosePrice()
Ainsi, vous pouvez utiliser OrderClosePrice uniquement APRÈS le OrderSelect correspondant. Parce que OrderSelect copie une fois les données pour les fonctions Order(const), et le même RefreshRates n'est pas capable de les mettre à jour.
C'est-à-dire que si, par exemple, OrderClosePrice ne parvient pas à clôturer, vous devez refaire OrderSelect avant la prochaine tentative (RefreshRates n'est pas nécessaire).
ZS Ce fil de discussion date de 2005! Voici les arguments détaillés des développeurs.
C'est une honte...
---
Pour que le poste ne soit pas inutile :
au lieu de StringGetCharacter("a", 0), vous pouvez écrire juste 'a'- souvent nécessaire lors de l'analyse des chaînes de caractères avec StringSplit
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation