AutoGraf Série 4 - Fonctionnalités MQL. - page 35

 

Не очень понятно что Вы называете "строка кода для учёта в приложении".

Fragment de AG_Srtategy_Channal_Inside.mq4

//================================================================================== 6 ==
   if ( Channal == false)                           // Если объекта заданного типа нет
      {
      ObjectCreate ( My_Chan_Name, OBJ_STDDEVCHANNEL,0,0,0); // Создаём его.. 
      int Сoor_X2 = Time[0];                                // 1я точка СПРАВА, 2я СЛЕВА
      int Сoor_X1 = Сoor_X2 - With*60;                      // Канал длиной 3 часа
      ObjectSet( My_Chan_Name, OBJPROP_TIME1, Сoor_X1);      // Устанавливаем координаты
      ObjectSet( My_Chan_Name, OBJPROP_TIME2, Сoor_X2);      // Устанавливаем координаты 
      ObjectSet( My_Chan_Name, OBJPROP_COLOR, Orange);       // Устанавливаем координаты 
      AG_Message( Message, "АТ: Устанавливаем объект OBJ_STDDEVCHANNEL.");// Сообщение

      return(1);                 // Это необходимо, чтоб установл. канал был учтён AG 4    Имелась ввиду эта строка

      }
//---------------------------------------------------------------------------------- 7 --

J'ai été troublé par cette ligne :

La première est que la fonction AT peut négocier par elle-même - générer des ordres de négociation et les envoyer au serveur.

Il semble que la fonction AT puisse ignorer l'application et les envoyer au serveur par elle-même .......

Apparemment, c'est mon problème en raison de mon manque d'expérience. Mon cerveau n'est pas encore aiguisé pour la programmation.

 
LeonidSB писал(а) >>

.. Votre cerveau n'a pas encore été aiguisé pour la programmation.

Vous devriez écrire quelques programmes simples par vous-même.

 

Vous avez tout à fait raison. Je m'y efforce et j'espère y arriver bientôt, mais je veux d'abord comprendre ce qui, comment et pourquoi est écrit par des personnes qui ont déjà de l'expérience. En gros, acquérir des connaissances pour qu'elles se traduisent par une qualité d'expérience, sur la base de laquelle je peux écrire quelque chose moi-même.

Par essence, tout programme "complexe" est un ensemble interconnecté de programmes simples. C'est comme une maison et des briques (je suis un ancien maçon de formation et de profession), c'est-à-dire que la programmation est pour moi comme un jeu de construction.

Au fait, prenez le temps de regarder mon indicateur de travail. Il dessine et laisse la ligne cible sur le graphique, la ligne des transactions rentables et déficitaires, en les utilisant vous pouvez analyser visuellement la mise en œuvre de la stratégie sur le graphique dans le testeur, et dans la vie réelle. En outre, en activant les options appropriées, vous pouvez voir et appliquer pour un traitement ultérieur les résultats de la session dans votre propre fichier journal (non général).

extern bool   PrDeal=false;                                      // Выключатель. Печатать отчет по каждой сделке
extern bool   PrCol=false;                                       // Выключатель. Печатать отчет в колонку
extern bool   PrTab=true;                                        // Выключатель. Печатать отчет в таблицу

Jusqu'à présent, trois types de rapports sont créés simultanément dans un seul fichier. J'ai déjà mentionné que j'ai basé mon rapport sur l'indicateur développé par Vladislav Goshkov. Il y avait 280 lignes. Je l'ai amélioré jusqu'à 2300 lignes. Comme le dit le proverbe, c'était quelque chose à construire. De toute évidence, le code a été écrit de telle manière qu'il ne peut être décrit en quelques mots. Mais ce sont mes premières lignes de code et elles fonctionnent, ce qui est le plus important ! J'avance donc dans la bonne direction (mais pas de la bonne manière), et avec votre aide pour expliquer les problèmes qui se posent, ce n'est qu'une question de temps.

Merci beaucoup pour votre participation.


Profitant de l'occasion, une autre question.

C'est écrit dans le tutoriel :

Если в результате исполнения торгового приказа функция OrderClose() вернула значение false, то это значит, что ордер не закрыт. Чтобы выяснить причину неудачи выполняется анализ последней ошибки, возникшей при попытке осуществления торговой операции. Для этого вызывается функция Errors() (см. раздел Функция обработки ошибок). Если при исполнении этой функции обнаруживается, что ошибка является непреодолимой (например, торговля запрещена), то функция Close_All() заканчивает работу и возвращает управление в управляющую торговую функцию Trade(), что в конечном счёте приводит к завершению исполнения специальной функции start() эксперта. На следующем тике торговый терминал снова запустит на исполнение функцию start(), и если критерий закрытия на тот момент будет ещё актуален, то это снова приведёт к вызову на исполнение функции закрытия всех ордеров Close_All().

Question :

Il y a deux ordres ouverts BUY-1 et BUY-2 avec les lots 3 et 5 respectivement. Il existe un ordre de transaction utilisant la fonction Close_All(). L'ordre est clôturé dans l'ordre suivant : d'abord, BUY-2 (5 lots), puis BUY-1 (3 lots). Au même moment, l'ordre BUY-2 (5 lots) ne peut pas être fermé - l'erreur est irréversible - nous partons - l'ordre BUY-1 (3 lots) n'est pas fermé - la perte augmente - la même chose se produit au tick suivant (la perte augmente), etc. C'est-à-dire que si nous ne pouvons pas fermer le premier ordre de la liste qui ne peut pas être fermé pour une raison impérative, tous les ordres suivants de la liste resteront ouverts et resteront ouverts pendant un certain temps, ce n'est pas clair. Cela ne devrait pas être autorisé. Cela ne doit pas être autorisé par l'algorithme du programme, mais j'ai fait de mon mieux pour l'analyser et je n'ai pas réussi à comprendre.

      //--------------------------------------------------------- 4 --
      if ( Ans==false)                     // Не получилось :( 
        {                                // Поинтересуемся ошибками:
         if( Errors(GetLastError())==false)// Если ошибка непреодолимая
            return;                       // .. то уходим.
        }
      //--------------------------------------------------------- 5 --
      Terminal();                         // Функция учёта ордеров 
      Events();                           // Отслеживание событий
     }
   return;                                // Выход из пользов. функции
  }
//--------------------------------------------------------------- 6 --

Veuillez expliquer plus en détail.

Merci d'avance, avec tout le respect et les meilleurs vœux, Leonid.

 
LeonidSB писал(а) >>

Question :

Il y a deux ordres ouverts BUY-1 et BUY-2 avec les lots 3 et 5 respectivement. Il existe un ordre de transaction utilisant la fonction Close_All(). Ordres dans l'ordre rapproché : d'abord, ACHETER-2 (5 lots), puis ACHETER-1 (3 lots). Au même moment, l'ordre BUY-2 (5 lots) ne peut pas être fermé - l'erreur est irréversible - nous partons - l'ordre BUY-1 (3 lots) n'est pas fermé - la perte augmente - la même chose se produit au tick suivant (la perte augmente), etc. C'est-à-dire que si nous ne pouvons pas fermer le premier ordre de la liste qui ne peut pas être fermé pour une raison impérative, tous les ordres suivants de la liste resteront ouverts et resteront ouverts pendant un certain temps, ce n'est pas clair. Cela ne devrait pas être autorisé. Cela ne doit pas être autorisé par l'algorithme du programme, mais j'ai fait de mon mieux pour l'analyser et je n'ai pas réussi à comprendre.

Veuillez expliquer plus en détail.

Merci d'avance et respectueusement et avec mes meilleurs vœux, Leonid.

Une erreur insurmontable est une erreur qui ne peut être surmontée. Par exemple, Market_closed.

De ce point de vue, l'ordre que vous fermez ou ouvrez n'a pas d'importance. Le marché est fermé de toute façon :).

Mais si vous essayez d'exécuter une transaction, celle-ci doit être celle qui a la plus haute priorité (du point de vue de la stratégie).

 

Bonjour Mesdames et Messieurs !

Veuillez répondre à ma question.

Lequel des indicateurs affiche le plus fidèlement le changement de tendance - plat ?

Je veux ajouter cet indicateur aux stratégies AG_Srtategy_Channal_Inside et AG_Srtategy_Channal_Outside pour passer d'une stratégie à l'autre.

 
SK. писал(а) >>

........La tâche consistait à permettre à l'utilisateur de joindre à l'application AutoGraf 4 ses propres algorithmes de trading écrits en MQL4 et exécutés sous forme de fichiers de stratégie .ex4. Pour résoudre ce problème, l'Expert Advisor AG_exp.ex4 inclut un code qui importe dans l'Expert Advisor la fonction de trading automatique AG_AT qui est disponible à la fois en fichiers .ex4 et mq4. En outre, l'utilisateur peut décider lui-même de la manière de disposer les codes. Le plus pratique est d'utiliser l'une des deux variantes suivantes : .....

Une telle variante n'a pas été envisagée : module principal avec code ouvert, le principal, qui est maintenant avec code fermé, est appelé par import, stratégie de trading par l'incluid (ou par l'incluid d'abord, et import dans l'incluid)... L'idée est la suivante : un lien intermédiaire sous la forme d'un inluder pour rendre les variables externes visibles. Il me semble que si vous réfléchissez bien, ça devrait marcher. Ne me dites pas tout de suite que c'est impossible ;)

 
LeonidSB писал(а) >>

Bonjour Mesdames et Messieurs !

Veuillez répondre à ma question.

Lequel des indicateurs affiche le plus fidèlement le changement de tendance - plat ?

Je veux ajouter cet indicateur aux stratégies AG_Srtategy_Channal_Inside et AG_Srtategy_Channal_Outside pour passer d'une stratégie à l'autre.

Et le choix n'est pas grand : STD, ATR, ADX. Egalement horloge et calendrier des communiqués de presse.

 

Merci !

Je me demande s'il existe une option permettant de mettre automatiquement à jour une page lorsqu'un commentaire y est ajouté ?

Je dois périodiquement aller sur la page et la mettre à jour manuellement.

 
Integer писал(а) >>

Cette option n'a pas été envisagée : module de base open source, le code de base qui est maintenant fermé est appelé via import, stratégie de trading via incluid (ou d'abord via incluid et ensuite import dans incluidnik)... Le point est le suivant : un lien intermédiaire sous la forme d'un inluder pour rendre les variables externes visibles. Il me semble que si vous réfléchissez bien, ça devrait marcher. Ne dites pas tout de suite que c'est impossible ;)

Il n'y a aucune difficulté à le faire. Mais expédier un produit commercial open source... vous savez, ce n'est pas la solution.

La vraie solution est attendue dans MT 5. Tout programme d'application doit être appelé depuis le programme principal. Ce qui est nécessaire, c'est la capacité de gérer les évaluations environnementales terminées. Dans ce cas, une stratégie personnalisée pourrait se composer d'une unité d'analyse et d'une unité d'appel de "sous-routine". Vous voulez - appelez le script et il dessinera un fiba, vous voulez - appelez l'indicateur, vous voulez - fermez tout et pipsqueak le soir après le travail :).

ET API. Vous pourrez alors fabriquer un outil vraiment moderne.

L'utilisateur ne se soucie pas de nos fioritures (toutes sortes de scripts, des conseillers experts, indiscernables des experts :). Il ou elle a besoin d'un service pratique, de qualité et multifonctionnel. Dans MT4, il n'était possible de faire que ce qui a été fait - un visage de type DOS et des possibilités limitées.

Tous les espoirs sont permis pour MT5.

 

Une nouvelle version de la série AG 4 - AutoGraf 4.90714 a été publiée.

Changements apportés :
1. l'algorithme d'analyse du contrôle des outils 14 Close_All a été optimisé.
2. Une nouvelle règle de gestion des outils 14 Close_All est introduite : le réglage logiciel de l'outil au moment actuel est autorisé. Pour ce faire, entrez une valeur de 1 pour le paramètre de réglage du temps d'exécution de l'outil (Instrument [0][2][32][1] = 1).

Téléchargez le logiciel ici : http://autograf.dp.ua/Pages/4/421.htm