Questions d'un "mannequin - page 66

 
Yedelkin:

Tout dépend de la logique de l'indicateur personnalisé. En principe, il peut recalculer ses valeurs une fois par jour, en sautant tous les autres ticks. Selon la volonté de l'auteur, pour ainsi dire.

En fait, certaines personnes essaient d'utiliser cette approche monstre : créer une copie de l'indicateur via iCustom, copier les données nécessaires, supprimer la copie de l'indicateur. La procédure est répétée si nécessaire.

Il y a aussi la fonction OnTimer(), je n'ai pas travaillé avec elle moi-même, mais peut-être pouvez-vous l'adapter à votre tâche.

Merci. C'est ce que je pensais. La fonction OnTimer n'est pas adaptée.

Il y a une situation où l'indicateur est sur M5 mais il est appelé une fois par heure, par exemple. Il s'avère que l'indicateur sera calculé dans l'Expert Advisor au ralenti toutes les 5 minutes pour le plaisir de l'appeler une fois par heure. C'est pourquoi je me demande s'il est possible de mettre en pause le recalcul de l'indicateur.

 
masharov:

Il y a une situation où l'indicateur est sur M5, mais il est appelé une fois par heure par exemple. Il s'avère que l'indicateur sera calculé dans l'Expert Advisor de manière inactive toutes les 5 minutes pour le plaisir de l'appeler une fois par heure.

Et vous ne pouvez pas réécrire l'indicateur pour qu'il soit appelé horaire ?
 
Yedelkin:
Puis-je réécrire l'indicateur de manière à ce qu'il calcule également par heure ?
Le commerce est sur la M5. On ne sait pas quand l'indicateur sera appelé. Cela peut être une fois toutes les deux heures, ou trois fois par heure. L'indicateur est utilisé pour confirmer la décision d'effectuer une transaction.
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
Les échanges se font sur la M5. On ne sait pas quand l'indicateur sera appelé. Cela peut être une fois toutes les deux heures, ou trois fois en une heure. L'indicateur est utilisé pour confirmer la décision de négocier.
La logique est claire. Dans de tels cas, je l'ai fait d'une manière simple et intelligente : j'ai transféré le bloc de calculs de l'indicateur directement dans le conseiller expert. C'est-à-dire qu'au lieu de la source de données externe (indicateur), le Conseiller Expert a utilisé une de ses fonctions - celle qui reproduit l'algorithme de calcul de l'indicateur. Dans ce cas, cette fonction a été appelée selon les besoins, avec un recalcul complet des valeurs nécessaires.
 

Bonjour, Pourriez-vous me dire,

1) Que faire avec des erreurs telles queTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENet dans quel cas la demande est bloquée ou la position/ordre est gelée ?

2)Je me demande également ce qu'il faut faire avecTRADE_RETCODE_INVALID_FILLet dans quel cas cela se produit ?

 
PunkBASSter:

Bonjour, Pourriez-vous me dire,

1) Que faire avec des erreurs telles queTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENet dans quel cas la demande est bloquée ou la position/ordre est gelée ?

2)Je me demande également ce qu'il faut faire avec TRADE_RETCODE_INVALID_FILLet dans quel cas cela se produit ?

1) Vérifiez la recherche dans le forum. On en a discuté il y a environ un an.

2) Regardez dans la référence ENUM_ORDER_TYPE_FILLING . Probablement une inadéquation de la demande de transaction pour le "type d'ordre d'exécution" spécifié par rapport au mode d'exécution et entraînera le code de retour spécifié.

Par exemple ORDER_FILLING_FOK et SYMBOL_TRADE_EXECUTION_MARKET.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, merci beaucoup)
 
masharov:

Je soupçonne que si l'indicateur est activé par iCustom, il est calculé à chaque tick. Et il ne dépend pas des appels qui lui sont adressés par le biais du CopyBuffer. Est-ce correct ?

Si c'est correct, est-il possible de désactiver le calcul de l'indicateur et de l'activer uniquement avant d'appeler le CopyBuffer ?

Si j'ai bien compris, vous pouvez essayer de limiter les calculs aux prochains ticks en suivant l'exemple de l'aide iFractals (voir les conditions multiples dans OnCalculate).

Peut-être, vous pouvez aussi marquer dans OnCalculate l'exécution initiale des calculs de l'indicateur pour toutes les barres nécessaires et vérifier l'heure du serveur du terminal, et après cela, remettre le drapeau à faux, permettant ainsi le recalcul, et le mettre à nouveau à vrai... et ainsi de suite.

Ou encore : écrire une fonction externe avec des calculs, l'appeler dans OnInit, où elle sera exécutée une fois au premier démarrage de l'indicateur (ainsi que lors du changement de TFs et etc., qui se produit à l'initiative de l'utilisateur), et ensuite appeler la même fonction dans OnCalculate de la deuxième manière (au moment spécifié sur le serveur et par flagging).

Mais la première méthode est bonne, non seulement elle ne charge pas le processeur avec des recalculs complets (menant souvent à aucun nouveau résultat) à chaque tick, mais elle ne fera même pas de recalculs complets à un intervalle de temps donné, et ne calculera que les barres les plus récentes (si à chaque tick, alors une nouvelle, et si une fois t, alors plusieurs accumulées pendant ce temps)... Bien que cette version soit meilleure à vérifier personnellement, je peux me tromper.... En outre, tout dépend de l'objectif spécifique de l'indicateur. S'il dépend d'une grande partie, voire de l'ensemble de l'historique du marché, il est impossible de se passer des recalculs de l'ensemble de l'historique.

 

Je n'ai pas compris l'humour de la blague (écrire un indicateur, bien que cela ne fasse aucune différence) :

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

Compile sans erreurs ni avertissements.

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

Compilé avec1 erreur(s), 0 avertissement(s): 'elements' - valeur d'index invalide.

Qu'est-ce qui peut dépasser le bon sens évident ici ?

 
x100intraday:


Qu'est-ce qui peut être au-delà du bon sens évident ici ?

le nombre d'éléments du tableau est spécifié par une constante

Si le nombre d'éléments n'est pas connu au préalable, utilisez ArrayResize pour définir la taille à l'aide de variables.

C'est la base du C++.

Donc, soit

#define  elements 4