Questions des débutants MQL5 MT5 MetaTrader 5 - page 714
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
Avec l'utilisation de OnTradeTransaction, le temps d'optimisation a étrangement changé. Un système sur 15M, très simple, historique annuel, une course se produit en 0,3 - 0,4 secondes.
Après le démarrage de l'optimisation, les 200-300 premières courses vont à moins d'une seconde, les suivantes ralentissent jusqu'à 15-20 secondes (50 fois !) ;
Pas de surchauffe ni de trottement du processeur, plus de la moitié de la mémoire est libre (à partir de 16 Go).
Avant l'utilisation du gestionnaire OnTradeTransaction, il n'y avait rien de tel - même des conseillers experts plus complexes sur de petites échéances étaient optimisés avec approximativement la même vitesse.
Est-ce que HistoryDealSelect affecte autant la vitesse ? Comment éliminer les décalages ?
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
if( trans.type != TRADE_TRANSACTION_DEAL_ADD) return;
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
long deal_type =0;
double deal_volume =0;
long deal_magic =0;
if(HistoryDealSelect(trans.deal))
{
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
}
else
return;
if (deal_type == DEAL_TYPE_BUY && deal_magic == MagicNumber) current_position += deal_volume;
if (deal_type == DEAL_TYPE_SELL && deal_magic == MagicNumber) current_position -= deal_volume;
}
Salut !
Qui sait - comment afficher les barres à droite de la barre zéro dans l'indicateur et combien de maximum ? (prévision de prix à faire)
Est-ce que c'est HistoryDealSelect qui affecte gravement la vitesse ? Comment éliminer le ralentissement ?
Les développeurs recommandent de minimiser l'appel aux fonctions d'historique (coûteuses) - par la mise en cache de l'historique.
J'ai posté une solution fonctionnelle dans kodobase (MT4Orders), mais elle ne vous conviendra probablement pas.
Je n'ai pas vu de décalage après avoir utilisé la mise en cache.
Cependant, votre OnTradeTransaction ne devrait pas ralentir, même si elle n'est pas écrite de manière optimale.
Salut !
Qui sait - comment afficher les barres à droite de la barre zéro dans l'indicateur et combien de maximum ? (prévision de prix à faire)
Ajoutez PeriodSeconds() à l'heure d'ouverture de la dernière barre et dessinez-y une bougie avec des objets graphiques. Tout au plus sera-t-il visible sur la droite. Mais je n'ai pas vérifié comment il sera affiché s'il y a une sortie. Il faut probablement en tenir compte.
Ajoutez PeriodSeconds() à l'heure d'ouverture de la dernière barre et dessinez le chandelier à cet endroit. Tout au plus, vous le verrez sur la droite. Mais je n'ai pas vérifié son apparence. Il est probablement nécessaire de prendre en compte.
Sur le graphique, il dessine une continuation, mais malheureusement pas dans la fenêtre de l'indicateur.
Je me trompe peut-être, bien sûr...
Que pensez-vous - puis-je continuer la ligne de l'indicateur au-delà de la barre zéro vers la droite ?
Qui sait - la ligne de l'indicateur peut-elle être prolongée au-delà de la barre de zéro à droite ?
Vous pouvez. Vous pouvez le décaler, mais le calcul ne sera probablement pas effectué avec des valeurs inexistantes, et l'heure n'est pas utilisée dans l'affichage de l'indicateur. C'est pourquoi je parlais de l'affichage des barres à l'aide d'éléments graphiques. L'ObjectCreate() contient à la fois le numéro de la fenêtre (sous-fenêtre) et l'heure. Par conséquent, il ne devrait y avoir aucun problème lors de la création d'éléments graphiques.
Dans la fenêtre du graphique, en utilisant les horodatages, vous pouvez vous référer aux futures barres prévues. Cela a fonctionné.
Cependant, je ne peux pas faire la même chose dans la fenêtre de l'indicateur. En d'autres termes, je ne peux pas écrire de valeurs dans le tampon de l'indicateur avec l'indice -1, -2, etc.
La question est la suivante.
C'est clair, en principe. La solution consiste à créer un indicateur par des objets graphiques.
Dans la fenêtre du graphique, en utilisant les horodatages, vous pouvez vous référer aux futures barres prévues. Cela a fonctionné.
Cependant, je ne peux pas faire la même chose dans la fenêtre de l'indicateur. En d'autres termes, je ne peux pas écrire de valeurs dans le tampon de l'indicateur avec l'indice -1, -2, etc.
La question est la suivante.
En principe, c'est clair. La solution consiste à créer l'indicateur par des objets graphiques.