L'auteur - page 4

 
J'ai réglé le problème de la synchronisation. Veuillez m'indiquer s'il existe un moyen de geler le terminal (afin qu'il n'accepte pas les cotations) pendant la durée du script ou du conseiller expert.
 
ivandurak:
J'ai réglé le problème de la synchronisation. Veuillez m'indiquer s'il existe un moyen de geler le terminal (afin qu'il n'accepte pas les citations) pendant que le script ou le conseiller expert fonctionne.

C'est absurde.

C'est pour quoi faire ?

 
her.human:

C'est absurde.

Pourquoi est-ce nécessaire ?

Le testeur multidevises qui peut être intégré dans un indicateur ou un script EA est pratiquement terminé, je l'espère. Le principal problème de synchronisation des différents outils de trading se posait en présence de trous dans l'historique. Par exemple, nous analysons les actions Euro et Gazprom, il est clair que le temps de négociation est différent, et donc il y a beaucoup d'écarts dans Gazprom par rapport à Euro, y compris les week-ends et les jours fériés. De la position est sorti - un ensemble exemplaire d'heures d'ouverture à une période sélectionnée sans lacunes dans la partie sélectionnée de l'histoire. Ensuite, l'heure d'ouverture d'un tableau exemplaire est comparée à l'heure d'ouverture d'un instrument de trading, et lorsque l'heure coïncide, le numéro de barre de l'instrument de trading est mémorisé, et ce numéro est transmis au TS. Maintenant, nous avons quelques instruments de trading et pendant leur recalcul, la barre suivante peut commencer à la dernière, en conséquence, la barre qui a été retournée pour les calculs s'avère être décalée avec tout ce que cela implique. La solution est la possibilité de corriger le numéro de barre de façon permanente, mais cela complique considérablement le code. Nous pouvons retourner le temps d'ouverture d'une barre au lieu de son numéro, comme vous le suggérez, mais dans ce cas c'est une complication pour un utilisateur (je penche pour cette variante jusqu'à présent). Alors j'ai pensé, le testeur intégré ne donnera pas une nouvelle valeur de prix tant que le Deinit ne fonctionne pas, peut-être y a-t-il un moyen de ralentir le terminal jusqu'à ce que le programme fonctionne.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
ivandurak:
Pour revenir au TS pas le numéro du bar, mais l'heure d'ouverture du bar, mais alors il est une complication pour l'utilisateur
CopyTime("EURUSD",0,Время,Количество_Баров,Time);
CopyOpen("EURUSD",0,Время,Количество_Баров,OpenEU);
Il ne semble pas y avoir de complication.
 

Voici la première hirondelle de la multidevise. Je dois vous avertir tout de suite, ce n'est même pas une version, le code n'est pas optimisé et pas entièrement débogué et il y a forcément des bogues. S'il n'est pas difficile de regarder et d'exprimer vos souhaits, crachez encore trop tôt.

Le testeur est conçu pour les tests multidevises d'un morceau d'histoire sélectionné. Toutes les fonctions de négociation sont tirées de 4 . Instructions détaillées après l'achèvement des travaux .

J'ai oublié d'ajouter qu'il faut ouvrir tous les graphiques d'intérêt sur les mêmes périodes.

Dossiers :
Tester.mqh  61 kb
 

Première version

Bonjour à vous, un cours pour écrire un testeur multi-devises à l'intérieur de scripts, indicateurs ou Expert Advisors. Le test est fait en ouvrant les prix.

Méthodes de classe

void Initialization() ;// Cette méthode effectue la mise à zéro des variables.

void AddSymbol(string Symb) ;// méthode d'ajout d'un symbole en test au testeur ; le symbole doit être chargé et le terminal doit afficher un graphique sur la période en test .

bool SetBeginEnd( int Begined, int Ended) ;// définit le début et la fin de l'historique testé . L'indexation commence par la fin selon la norme, c'est pourquoi la barre de début de l'historique testé est plus grande que la barre de fin.

void Visualisation(true) ; // Activation de la visualisation des transactions .

voidPrinting(true) ;//la sortie des résultats des transactions dans le journal est désactivée par défaut.

bool Start(datetime &IndexInstrum[]) cette méthode vérifie la fin de la période testée, et renvoie le tableau des heures de début de barre pour les instruments testés. Ceci est nécessaire pour synchroniser les tests des différents instruments s'il y a des lacunes .

int GetBarsNambe(string GSimb,datetime TimeOpen);//renvoie le numéro de la barre selon le symbole sélectionné et l'heure d'ouverture de la barre.

void Vedenie_v() est la méthode principale où nous vérifions tous les ordres établis pour le déclenchement, la fermeture au stop ou au profit.

Les tests sont basés sur les règles du Mql4, c'est-à-dire que chaque ordre a sa propre vie, nous pouvons donc verrouiller et ouvrir des ordres opposés.

Toutes les fonctions de négociation sont également tirées de Mql4. Ceci a été fait pour permettre une adaptation facile des EAs écrites dans ce langage.

Veuillez noter que la méthode OrderClose_v ferme complètement la position sélectionnée.

OrderCloseBy manquant .

Le double OrderProfit_v( ) calcule le profit sans effet de levier, l'effet de levier peut être différent pour les différents symboles testés.

Le reste du code reste inchangé, voir la documentation.

Ordre de la demande

La première étape est l'initialisation. Ensuite, nous sélectionnons l'histoire sous test . Ensuite, nous ajoutons les instruments testés. Activez la visualisation si nécessaire . Activez la sortie du rapport si nécessaire .

Le test lui-même a lieu à l'intérieur de la boucleDo -While .

Tout d'abord, la méthode obligatoire

aaa=Test.Start(timeopen) ; Renvoie la fin du test et le tableau des temps d'ouverture des barres pour les instruments testés. La dimension de timeopen doit coïncider avec le nombre d'instruments testés. Si par exemple timeopen[0] < 0, alors c'est un signe de manque dans l'historique, voir exemple .

Ensuite, le système de trading lui-même dispose d'un nombre illimité de barres. nambebars=Test.GetBarsNambe(Symbol(),timeopen[0]) ; où le symbole et le temps d'ouverture de la barre sont des co-symboles. En fonction de ce nombre, vous pouvez calculer les valeurs des indicateurs et définir le signal de trading selon la logique du TS.

À la toute fin doit aller méthode Vedenie_v .

Après la fin du test (sortie du cycle), l'historique des transactions est disponible pour tous les ordres. Voir la description et le forum de Mql4

Vous avez également besoin du fichier HeadTester.mqh pour recouvrir entièrement le format des fonctions de trading Mql4.

Bonne chance et prospérité.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
Dossiers :
Tester.mqh  69 kb
 
ivandurak:

Première version

...

Bonne chance et prospérité.

Merci. Vous pourriez peut-être écrire un article ? L'immortaliser, pour ainsi dire. )))
 

Messieurs PLZ. Quelque part, je suis en train de ralentir très intensément. La question concerne le SOM. Si c'est possible sur un exemple concret .

Supposons que nous ayons une carte composée de 50X60 neurones (cellules rectangulaires). Prenons un vecteur d'apprentissage aléatoire, sa dimension x1={x1,x2,x3,x4,x5}, supposons que la longueur totale de l'échantillon d'apprentissage est de 5000 vecteurs. Supposons que le neurone le plus proche du vecteur d'entrée ait l'indice 25,30 - je l'ai trouvé et mon enfant étudie déjà la géométrie à l'école. Et alors mon réseau neuronal n'est plus optimisé. En fait, j'ai un tas de questions.

1 Comment calculer les indices des neurones à entraîner à l'étape 1.

2 Comment calculer les indices des neurones à entraîner à la 2ème étape.

3 Combien d'étapes de formation au total doivent être effectuées pour le vecteur d'entrée X1.

4 Si je suis bloqué par la règle d'apprentissage de Kohonen, je demanderai plus.

PS : j'ai lu l'article, j'ai lu la littérature supplémentaire, j'ai regardé les codes, la conclusion exige un pendentif.

 

Je pense avoir déterminé le voisinage du neurone gagnant au sein duquel l'apprentissage a lieu. Maintenant, la question suivante est.

Existe-t-il un critère permettant de savoir combien de fois il faut entraîner les neurones du voisinage ? Cette question est mal décrite, je ne comprends pas si on l'enseigne une fois puis on prend le vecteur suivant. Ou bien entraînez-vous jusqu'à ce que l'erreur moyenne soit réduite à, disons, 5 %.

 

Un algorithme de coloration de la carte de Kohonen est nécessaire. Il y a un grand désir de ne pas peindre toutes les cartes, mais de faire avec une seule, respectivement, chaque cluster devrait attribuer sa propre couleur. L'esprit du comment faire n'est pas. Lafigure montre la carte que j'ai. Le principe de la coloration est qu'un vecteur de plus grande longueur est peint dans la couleur la plus claire. Bien que ce ne soit pas correct, les vecteurs X1 = (1,1) et X2 = (-1,-1) ont la même longueur mais appartiennent à des zones différentes.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5