Développeurs ! Est-ce que vous testez au moins ce que vous créez ? - page 7

 

Bonjour !

С-4

Le Stock# n'est pas gratuit pour la nouvelle passerelle Cgate Plaza II.

API Cgate - distribuée gratuitement par la bourse. Écrivez votre propre terminal (bien sûr, il ne sera pas aussi joli que MQ),

n'est pas difficile, il est difficile de traduire l'API de Cgate à l'utilisateur de l'API, qui sera en mesure d'écrire dans n'importe quelle langue leur propre Expert Advisor - DLL.

En gros, mon idée est la suivante :

BASE --> PLAZAII(Cgate API) --> Simple Terminal --> Conseiller utilisateur DLL.

Dans la figure, j'obtiens un test de cotation de la bourse via le protocole Plaza II.


Le terminal est presque prêt (je l'ai écrit en 3 jours) !

Dans ce langage (dans n'importe quel conseiller DLL), vous pouvez créer tous les "gadgets" que vous voulez (tasses, boutons, graphiques supplémentaires, etc.),

vous ne serez limité que par l'environnement de développement.

Ce concept présente toutefois un gros inconvénient : la complexité du test de l'EA (uniquement par le biais des journaux, pour l'instant).

Mais les avantages indéniables - la connexion "directe" à l'échange, et tout langage de programmation.

P.S Le concept client-serveur (comme en général tout commerce électronique) repose UNIQUEMENT sur le modèle d'événement : REQUEST-Answer - c'est la BASE !

Vous pouvez inventer tout ce que vous voulez (contrôles divers, etc.), mais si cela ne fonctionne pas correctement demande-réponse, au bout du compte, il y aura quand même

Inévitablement, cela entraînera une erreur dans le conseiller expert.


 
Mikalas:

...

Ce concept présente toutefois un gros inconvénient : la difficulté de tester l'EA (uniquement par le biais des journaux, pour l'instant).

...

Le concept de MT5 présente un très grand avantage : la communication sur le forum avec des personnes intelligentes. Si cela ne coûte rien, alors...

 
Mikalas:

Le terminal est presque prêt (3 jours entiers d'écriture) !

Impressionnant pour trois jours !

La seule question qui se pose est la suivante : si tout est si bien, pourquoi utilisez-vous encore MT5 ?

DC2008:

Il y a un très gros avantage dans le concept de MT5 - la communication sur le forum avec des gars intelligents. Si ça ne coûte rien, alors...

Oui, c'est sûr. De nos jours, les produits de ce type ne peuvent pas survivre sans leur écosystème. Un forum, une communication, des milliers d'utilisateurs, des militants comme vous et moi prêts à poster, discuter, bloguer... Sans le soutien des utilisateurs, tout projet, quel qu'il soit, s'arrêtera tôt ou tard, et tous les efforts déployés pour le développer seront vains.
 

С-4 !

Le terminal - sert UNIQUEMENT à afficher quoi que ce soit !

J'ai déjà écrit que ce n'est pas difficile du tout. Le plus difficile est de transformer l'API de Cgate en API utilisateur,

J'ai fait 1/200 (pas le plus difficile) de ce qui doit être fait.

Cgate Plaza II est un client-serveur asynchrone en streaming, et les streams peuvent

contiennent plus d'un type d'information !

Malheureusement, je n'ai pas le niveau pour faire cette transformation complètement rapidement.....

Il n'y a que deux produits (payants) sur le marché qui fonctionnent via Cgate, et je ne suis pas...

Je ne suis pas sûr que ce soit le bon.

Donc, sur FORTS, jusqu'à ce que j'écrive CGate Trader, c'est MT5.

 

À propos, je suis tombé sur un article intéressant sur les événements de trading MetaTrader 5 de MetaQuotes Software Corp, daté du 24 janvier 2011. Entre autres choses, il est dit :

Сообщения о торговых событиях и об изменениях в торговой истории поступают по независимым каналам. При отправке запроса на покупку функцией OrderSend() можно сразу же узнать тикет ордера, который был создан при успешном результате проверки запроса. Но в то же время сам ордер еще может не появиться в клиентском терминале и попытка выбрать его с помощью функции OrderSelect() окажется неуспешной. 

Aussi:

Toutes les opérations sur le serveur commercial et l'envoi de messages sur les événements commerciaux sont effectués de manière asynchrone. Il n'y a qu'un seul moyen garanti de savoir ce qui a changé exactement sur un compte commercial. Cette méthode permet de se souvenir de l'état des échanges et de l'historique des échanges et de comparer le nouvel état avec celui qui a été sauvegardé.

Voici des exemples de la manière d'organiser correctement le comptoir des commandes et des échanges.

Si vous examinez attentivement le problème de l'auteur, il s'avérera qu'il n'y a pas de problème, vous devez juste trouver la force morale pour rejeter la fonction OnTradeTransaction() et attraper tous les changements dans OnTimer() avec une mise à jour en haute résolution.

En quelques minutes, j'ai rédigé mon exemple de travail avec une histoire modifiée.

///
/// Следит за поступлением новых трейдов и ордеров.
///
void OnTimer()
{
     datetime tBegin = TimeCurrent();
     HistorySelect(dataBegin, TimeCurrent());
     //Если новые трейды не поступили, то и нечего обрабатывать.
     if(HistoryDealsTotal() == 0)return;
     AddDeals();
     dataBegin = tBegin;
}
Il y a un piège caché dans cet exemple et il ne peut pas être utilisé tel quel, mais je pense que le concept est clair. À chaque fois, nous chargeons un morceau d'historique depuis la dernière transaction traitée jusqu'à l'heure actuelle. Si une nouvelle transaction arrive, nous la traitons et remettons le début du chargement de l'historique au moment de l'arrivée de la transaction.
 
C-4:

À propos, je suis tombé sur un article intéressant sur les événements de trading MetaTrader 5 de MetaQuotes Software Corp, daté du 24 janvier 2011. Entre autres choses, il est dit :

Uh-huh

 

Et je recommande à l'auteur de lire l'article Comment créer un robot de trading et ne pas perdre de temps. Il s'adapte parfaitement :

Программисты часто выбирают четвертый путь – они сразу начинают писать торгового робота и не хотят особенно тратить время на ручную торговлю. Зачем? Ведь можно сразу написать автомат, потратив на это несколько месяцев, и затем только пожинать плоды своего труда.

Mais "on ne peut pas sortir le poisson de l'étang sans main-d'œuvre", et le programmeur commence souvent à écrire toute l'infrastructure nécessaire - obtention et traitement des données sur les prix, représentation visuelle des graphiques et des indicateurs, outils personnalisés pour tester la stratégie sur l'historique, etc.

Dans le cadre de ce travail, il acquiert beaucoup d'expérience utile. Mais en même temps, il ou elle, dans la plupart des cas, n'est pas plus près de l'objectif final - la création d'un système de trading automatisé. Et même s'il va jusqu'au bout, où est la garantie que le robot écrit sera rentable ? Et s'il ou elle veut écrire un autre système de trading ? Vous devez tout reconstruire et faire face aux nouvelles erreurs de programmation inévitables.

 

Vasily !

Je comprends bien votre attachement à la MT-5, mais croyez-moi sur parole.

Il ne sert à rien de creuser dans les historiques, car des données erronées pourraient y être inscrites aussi !

Comprenez une chose simple : client-serveur = demande-réponse !

Vous voyez, l'ordre a été mis à niveau et la réponse vient qu'il a été partiellement exécuté,

que pensez-vous qu'il va se passer dans l'histoire ?

 

Roch !

Vous aussi, vous m'imposez ce que j'ai lu cinq fois.

Je ne parle pas de la fabrication d'un robot (ou de la façon d'en écrire un), mais de...

Je ne parle pas de la fabrication d'un robot (ou de la façon de l'écrire), mais d'erreurs spécifiques dans MT-5 !

Vous ne prenez même pas la peine de regarder attentivement la photo.

J'ai joint (MESSAGE TIME)

 
Mikalas:

Vous ne prenez même pas la peine de regarder attentivement la photo qui...

J'ai attaché.

Pauvre gars, j'aimerais pouvoir t'aider... tu es si tendu, tu cries.


vous pouvez me donner un fichier journal textuel au lieu de captures d'écran.

+ un code où je peux reproduire votre erreur ?