FORTS Veuillez nous aider - page 10

 
Mikalas:

Vous êtes aussi notre "lecteur"... Question :

Pourquoi construire des séries temporelles si les données sont prêtes ( CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times) ) ?

Ils ne sont pas prêts. Ils sont probablement sur le disque. Il est même possible qu'ils soient synchronisés avec l'historique du serveur (si le graphique est ouvert ou si un autre programme les a demandés récemment).

Mais cela ne signifie pas que la fonction va simplement le croire. Vous devez interroger les données à partir du disque, construire un cache en mémoire, et ce n'est qu'alors que vous pouvez dire que l'historique est là et qu'il commence à cette date.

Mais ni cette réponse de ma part, ni les réponses répétées des développeurs, ni le code de travail, ni la documentation ne vous aideront. La fonction ne fonctionne pas comme vous le pensiez, il y a une défaillance ici.

 
antt:

Lisez la documentation plus attentivement, et non de manière sélective. La présence de données historiques sur le disque ne signifie pas nécessairement pour le terminal "Tout est là". Dans ce cas (lorsqu'on y accède à partir de l'indicateur), les fonctions ne fonctionnent qu'avec le cache des séries chronologiques en mémoire. Cela signifie qu'un accès synchrone à la mémoire est effectué et que s'il n'y a pas de série chronologique préparée, la date SERIES_FIRSTDATE (du premier élément du tableau) ne sera pas renvoyée. Mais bien sûr, la demande initie la préparation - le chargement des séries temporelles en mémoire.

La demande SERIES_TERMINAL_FIRSTDATE est liée à l'initialisation de la base de données et à la synchronisation avec le serveur, donc le premier appel ne fonctionnera pas immédiatement de toute façon.

En principe, la possibilité d'obtenir l'historique requis est vérifiée à l'aide de SERIES_SERVER_FIRSTDATE. Bien sûr, on peut compter sur X itérations de demande d'historique, mais si le terminal confirme la présence d'historique dans SERIES_SERVER_FIRSTDATE, alors la disponibilité des données de séries temporelles n'est qu'une question de temps (synchronisation de la base m1 avec le serveur et génération des séries temporelles).

J'ai compris, mais dites-moi, pourquoi cela ne pourrait-il pas être fait de la manière que j'ai décrite ci-dessus ?

Cela n'aurait en aucun cas affecté la vitesse de traitement de l'information :

S'il y avait une information sur un instrument - enregistrez la date de sa première apparition et stockez-la en mémoire - 8 octets !

Vous pouvez même ne pas le stocker, mais lorsque vous faites SymbolSelect(), vous le mettez en mémoire.

Lorsque nous l'adressons avec la fonction SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE), nous obtenons :

A -1 - pas de données

Б. 0 - aucune donnée disponible mais pas prêt

В. Date de la première information

Tout serait alors clair et transparent.

-1 - Aller vers le serveur

0 - Attendre la prochaine itération pour vérifier et/ou construire les séries temporelles

> 0 Construire des séries temporelles

D'après votre référence, j'ai compris que VOUS aviez presque fait cela, mais il s'avère que non.

Apparemment, un programmeur a commencé à écrire et un autre a terminé.

Votre mise en œuvre est bonne pour le FOREX, mais très gênante pour le FORTS.

Pour FORTS, les cotations peuvent ne pas arriver pendant une longue période et la série chronologique est téléchargée de la plateforme.

et vous devez répéter tout le processus à nouveau, et vous devez aller au serveur!

2015.03.27 20:24:56.568  (GAZR-6.15,M1) OnCalculate: Не скопированы тийминги по символу - GAZR-9.15
2015.03.27 20:25:34.092  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.100  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:34:40.098  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:34:40.126  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:37:21.475  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:21.491  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:41.563  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:41.051  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:40:56.579  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:56.595  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:58.886  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:58.896  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:59.436  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:41:00.892  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
 
Mikalas:

Votre mise en œuvre est bonne pour le FOREX, mais très gênante pour le FORTS.

Sur FORTS, les cotations peuvent ne pas arriver avant un long moment, et la série chronologique est déchargée du paiachi.

et vous devez recommencer tout le processus d'obtention des données, avec le serveur qui se connecte!

Mikalas, j'ai toujours foi en toi. Vous allez certainement lire tout ce qui a été dit ici.

FORTS Veuillez nous aider.

L'indicateur multidevises n'est pas si simple.

Tout d'abord, vérifiez la disponibilité des instruments :

bool CorrectSymbol( string symbol )
{
        ResetLastError();
        if ( SymbolInfoDouble( symbol, SYMBOL_BID ) > DBL_EPSILON ) return(true);

        // символ не выбран в "Обзоре рынка" (нет в списке доступных)
        if ( GetLastError() == 4302 )
        {
                if ( SymbolSelect( symbol, true ) && SymbolInfoInteger( symbol, SYMBOL_SELECT ) ) return(true);
        }

        return(false);
}

Ouvrez ensuite les graphiques de tous les instruments utilisés (un objet graphique invisible suffit) afin que l'historique se charge normalement.

Et seulement ensuite, essayez de charger l'historique en utilisant CheckLoadHistory.

Mais cela pourrait ne pas suffire non plus.


 

Et d'ailleurs, je n'aime pas non plus cette situation avec l'analyse multi-devises et la construction d'indicateurs. Comment il est mis en œuvre.

C'est une danse du tambourin, avant de commencer à calculer quelque chose, il faut faire un tas de vérifications... Je n'ai vu cela sur aucune autre plateforme. Tout y est plus simple du point de vue de l'utilisateur.

Ce n'est pas un secret que de nombreuses personnes, même celles qui ont appris la programmation MT4, ont peur de la complexité de la programmation MT5.

Si j'étais le développeur, j'essaierais de nous faciliter la vie. Combiner tout ce tambourin en une seule commande, comme

GatData(RTS,1000)

et le terminal résout cette tâche, effectue des contrôles, si nécessaire, ouvre des graphiques, échange des historiques, met à jour, etc.

Et après son exécution, j'ai des données réelles avec lesquelles travailler.

Z.I. Je me souviens qu'il y avait une devise : "Terminal pour les femmes au foyer"...

 
komposter:

Mikalas, j'ai toujours foi en toi. Vous lirez sûrement tout ce qui a été dit ici.


komposter !

(Tout autre chose - sans vouloir vous offenser !)

Qu'avez-vous trouvé de MAL dans mon modèle d'obtention d'informations sur les tamseries ?

Parce que ce n'est pas de toi ! ?

J'essaie de faire passer le message aux développeurs pour faciliter les choses pour nous tous.

"vie", mais il y a TOUJOURS des gens comme vous qui sont les plus intelligents !

Alors ce sera comme ça !

 
Prival-2:

Et d'ailleurs, je n'aime pas non plus cette situation avec l'analyse multi-devises et la construction d'indicateurs. Comment il est mis en œuvre.

C'est une danse du tambourin, avant de commencer à calculer quelque chose, il faut faire un tas de vérifications... Je n'ai vu cela sur aucune autre plateforme. Tout y est plus simple du point de vue de l'utilisateur.

Ce n'est pas un secret que de nombreuses personnes, même celles qui ont appris la programmation MT4, ont peur de la complexité de la programmation MT5.

Si j'étais le développeur, j'essaierais de nous faciliter la vie. Combinez tout ce tambourin en une seule commande, comme

GatData(RTS,1000)

et le terminal résout cette tâche, effectue des contrôles, si nécessaire, ouvre des graphiques, échange des historiques, met à jour, etc.

Et après son exécution, j'ai des données réelles avec lesquelles travailler.

Rappelez-vous la devise : "Terminal pour femmes au foyer"...

Salut !

Une approche universelle et simple rendrait impossible l'écriture de programmes efficaces. Vous ne pouvez pas créer une seule fonction DyData qui effectuera tous les contrôles - ce sera une corvée, inutile pour l'utilisateur dans 95 % des cas.
Dans le cas de l'indicateur - il travaille aussi vite que possible avec les données de son graphique. Il est conçu à cet effet. Si nous la rendons "prête à toutes les situations", une MA simple ralentira comme un monstre complexe.

Je ne défends pas les développeurs, loin de là. Je n'aime pas beaucoup de choses non plus.
Mais j'essaie d'être constructif, et je comprends que je ne connais pas tous les rouages du terminal.

D'une certaine manière, Mikalas a raison : il suffit de se taire (ne pas lire) et de continuer à crier "Malaise !" pour que les discussions deviennent populaires et visibles pour les développeurs. Et ils font quelque chose à ce sujet (ils ont déjà corrigé quelques bogues sur son conseil).
Donc, je suis probablement en train de rouspéter pour rien )

 
Mikalas:

komposter !

(Tout autre chose, sans vouloir vous offenser !)

Qu'avez-vous trouvé de MAUVAIS dans mon modèle d'obtention d'informations sur les tamserials ?

Parce que ce n'est pas de vous ! !!?

J'essaie de faire passer le message aux développeurs pour faciliter les choses pour nous tous.

"vie", mais il y a TOUJOURS des gens comme vous qui sont les plus intelligents !

Alors ce sera comme ça !

Je l'ai déjà.

La tâche consistait simplement à écrire un indicateur. Et il s'est avéré que nous devions améliorer la langue.

Je ne donnerais aucun conseil si c'était comme ça).

 
komposter:

Je l'ai déjà.

C'est juste que la tâche a été exprimée - écrire un indicateur. Mais il s'est avéré qu'il était nécessaire d'améliorer la langue.

Je ne donnerais aucun conseil si c'était le cas).

Andrey !

Vous avez passé beaucoup plus de temps à écrire vos posts ici.

Vous auriez pu écrire un indicateur pour "mes" revendications (pour FORTS) pendant cette période.

Et vous avez vous-même vu ces "béquilles" dont je parle !

 
Mikalas:

Andrei !

Vous avez passé plus de temps à poster ici.

Pendant ce temps, vous auriez pu rédiger un indicateur pour "mes" plaintes (pour FORTS).

Et vous avez vu par vous-même ces "béquilles" dont je parle !

J'ai écrit, c'est pourquoi je sais de quoi je parle.

Vous auriez déjà obtenu votre indicateur, si le but était d'obtenir un indicateur, et non de corriger la langue.

 
komposter:

J'ai écrit, c'est pourquoi je sais de quoi je parle.

Vous auriez également obtenu votre indicateur à l'heure actuelle, si le but était d'obtenir un indicateur, et non de corriger la langue.

J'ai écrit un indicateur, mais il est impossible de l'utiliser.

Je ne peux pas l'utiliser ! J'ai beau essayer, j'ai des problèmes partout !

J'ai OrderSendAsync() - pas de mécanisme de suivi, bien qu'il y ait ORDER_ID

Il y a une variable globale - quand je ferme le terminal, elle se réinitialise...

Il y a des retards "incompréhensibles" dans l'exécution des ordres - à moitié fait et le suivant...

une accusation de charlatanisme....

Et ainsi de suite...

Je soulève des questions parce que les problèmes et les erreurs existent.

(Je ne les invente pas !)

Je négocie sur le BUREAU pour de l'argent réel, pas pour de l'humour !

Et donc il est ARCHIVAL pour moi et TOUS ceux qui font du commerce que les fonctions de commerce

ARCHIVE que les fonctions de négociation sont FRÉQUENTES.

L'architecture de MT5 est SUPER, je l'aime beaucoup, mais tout doit fonctionner correctement et...

L'accès aux données doit être rapide et facile.

И... Arrêtons là pour aujourd'hui, s'il vous plaît.