Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 622

 
neverness:

Nous ne sommes pas des enfants, nous sommes des individus parfaitement sains d'esprit.

N'essayons pas de chuchoter et de nous tromper les uns les autres.

Une fois encore, je répète ma question :

Veuillez me donner un code simple de l'indicateur, dans lequel un objet script (OnStart(), par exemple, une ellipse) est construit.

La procédure est la suivante :

Vous entrez dans le MetaEditor. Cliquez sur Fichier->Créer....

Cliquez sur Indicateur.

Et dans cet environnement vous entrez le code de l'objet script (OnStart(), par exemple, ellipse).

C'est tellement simple ! !!

Bonne chance ! !!

Pourquoi appeler un script depuis un indicateur si toutes les fonctionnalités nécessaires peuvent être décrites dans l'indicateur ?
 
Vitaly Gorbunov:
Pourquoi avoir besoin d'appeler un script depuis l'indicateur, si toutes les fonctionnalités nécessaires peuvent être décrites dans l'indicateur ?

Il s'agit de la procédure la plus simple dans tout environnement de programmation. En C++, il n'y a pas de problème du tout.

Nous construisons un objet graphique à partir d'un flux de données. La position, la forme et les autres caractéristiques de l'objet dépendent des valeurs de ce flux.

Puisque l'indicateur est responsable du flux de données d'entrée dans l'environnement MQL, nous construisons les objets d'intérêt dans cet environnement.

Tout est logique.

Mais MQL ne permet pas de construire ces objets.

Et ce, bien que ce ne soit pas un problème en C++, BASIC, JavaScript ou tout autre environnement de programmation.

Le type de "fonctionnalité nécessaire" que vous vouliez décrire est un mystère pour moi.

En général.

Les programmeurs parlent généralement dans un LANGAGE DE CODE.

Si vous pouvez le faire, veuillez me donner un EXEMPLE de CODE !

Si vous ne pouvez pas, vous n'avez pas d'autre choix que d'être d'accord avec moi.

C'est aussi simple que cela !

 

То есть, требуется не просто бросить объект на форму, или создать независимый ни  от чего объект, как в Вашем примере, а внедрить этот объект в вычислительную среду индикатора .

En d'autres termes, si le flux de données de l'indicateur change, l'objet graphique change également.

Et non pas, comme dans votre exemple, un simple mannequin sur le graphique qui ne dépend de rien.


Quel est le problème ? Si l'indicateur sait comment fonctionner avec cet objet, il fonctionnera avec cet objet. Pouvez-vous décrire concrètement le problème ? Sinon, nous discutons d'un cheval sphérique dans le vide.

 
neverness:

Il s'agit de la procédure la plus simple dans tout environnement de programmation. En C++, il n'y a pas de problème du tout.

Nous construisons un objet graphique à partir d'un flux de données. La position, la forme et les autres caractéristiques de l'objet dépendent des valeurs de ce flux.

Puisque l'indicateur est responsable du flux de données d'entrée dans l'environnement MQL, nous construisons les objets d'intérêt dans cet environnement.

Tout est logique.

Mais MQL ne permet pas de construire ces objets.

Et ce, bien que ce ne soit pas un problème en C++, BASIC, JavaScript ou tout autre environnement de programmation.

Le type de "fonctionnalité nécessaire" que vous vouliez décrire est un mystère pour moi.

En général.

Les programmeurs parlent généralement dans un LANGAGE DE CODE.

Si vous pouvez le faire, veuillez me donner un EXEMPLE de CODE !

Si vous ne pouvez pas, vous n'avez pas d'autre choix que d'être d'accord avec moi.

C'est aussi simple que cela !

Ne pas savoir utiliser la langue n'est pas une raison pour se faire insulter.

Les codes abondent dans la base de données, différents, pour tous les goûts et toutes les couleurs.

MQL5 Code Base
MQL5 Code Base
  • www.mql5.com
Две одинаковые торговые системы (для лонгов и шортов), построенные на сигналах индикатора ColorSchaffJJRSXTrendCycle, которые можно настраивать различным образом в одном эксперте с возможностью менять размер предстоящей сделки в зависимости от результатов предыдущих сделок для данной торговой системы.
 

Строим графический объект по потоку данных. Положение объекта, его форма и другие характеристики зависят от значений этого потока.

Puisque l'indicateur est responsable du flux de données d'entrée dans l'environnement MQL, nous construisons les objets d'intérêt dans cet environnement.

Tout est logique.

Mais MQL ne permet pas de construire ces objets.


Quel objet ne peut être construit dans l'indicateur ?

 
Vitaly Gorbunov:

Quel est le problème ? Si l'indicateur sait comment fonctionner avec cet objet, il fonctionnera avec cet objet. Pouvez-vous décrire précisément le problème ? Sinon, nous discutons d'un cheval sphérique dans le vide.

C'est très simple.

Prenons l'événement de l'indicateur

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

et, par exemple, on prend un fil de valeurs orn[] et si la valeur de ce fil est supérieure à celle prédéfinie, on construit un objet graphique script en un certain point du graphique avec les caractéristiques calculées.

Tout est d'une simplicité élémentaire.

En d'autres termes, nous devons intégrer l'objet de script OnStart() dans le champ de données OnCalculate() et construire l'objet d'intérêt avec des valeurs calculées.

C'est simple et élémentaire.

Comment le faire en MQL ?

 
Vitaly Muzichenko:

Ne pas savoir utiliser la langue n'est pas une raison pour se sentir insulté.

Les codes abondent dans kodobase, de toutes sortes, pour tous les goûts et toutes les couleurs.

Unskillfulness s'écrit ensemble -> https://ru.wiktionary.org/wiki/неумение

J'ai déjà dit que j'ai délibérément laissé de côté la "coquille mathématique" de MQL.

Cela concerne également ces "codes très différents", qui "abondent dans la kodobase" et sont de tous "goûts et couleurs".

Eh bien, cher Vitaly !

Je prends moi-même de telles remarques à mon égard comme une insulte.

Et soyez assez aimable pour obtenir une partie de la réponse.

C'est ici.

Comme vous l'avez fait remarquer à juste titre, toutes sortes de "codes miracles" qui assurent un bénéfice de 1000% dans la kodobase sont vraiment plus que suffisants.

Mais tout le problème est de savoir dans quelle mesure les informations qui nous sont proposées par les auteurs de ces codes sont vraies.

Et si nous formulons de manière mathématiquement stricte la tâche consistant à construire des "EA gagnant-gagnant", cette tâche ressemblera à quelque chose comme ceci

La formulation du problème :

Est-il possible de construire un EA qui donne un résultat gagnant-gagnant dans toute situation sélectionnée par cet EA ?

Solution du problème.

Donc.

Quant à la solution purement mathématique du problème, il s'avère que nous pouvons spécifier la combinaison de

de flux de cotations, dans lequel cet EA perdra sciemment, et le trader perdra sciemment ses fonds.

Bien sûr, je ne donnerai pas une solution purement mathématique à ce problème, mais vous pouvez être sûr que c'est vrai.

C'est-à-dire que d'un point de vue mathématique, pour tout conseiller, vous pouvez spécifier telle ou telle situation dans laquelle les actions de cet EA ne seront pas rentables pour un trader.


Si nous abordons maintenant la question d'un point de vue juridique, toutes les offres de vente d'un conseiller ne sont rien d'autre qu'un autre "système frauduleux",

parce qu'aucun conseiller expert n'est capable de fournir un "gagnant-gagnant".


Par conséquent, cher Vitaly, aucun "savoir comment utiliser la langue" et aucun "savoir comment utiliser les codes" ne protégera un trader des pertes.

Et il ne peut certainement pas s'agir d'une insulte.

Alors la prochaine fois, choisissez votre langue plus soigneusement.

 
Vitaly Gorbunov:

Quel objet ne peut être construit dans l'indicateur ?

Eh bien, construisez-en.

Personnellement, je ne vois à l'horizon aucun objet de ce type qui puisse être construit.

J'aimerais voir au moins quelque chose.

Je suis un "novice" en matière de MQL, après tout. Peut-être que je ne sais pas quelque chose ou que j'ai négligé quelque chose.

 
neverness:

C'est simple.

Nous prenons un événement indicateur

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

et, par exemple, prendre un fil de valeurs oren[], et si la valeur de ce fil est supérieure à celle prédéfinie, nous construirons un objet graphique script à un certain point calculé du graphique avec les caractéristiques calculées.

Tout est d'une simplicité élémentaire.

En d'autres termes, nous devons intégrer l'objet de script OnStart() dans le champ de données OnCalculate() et construire l'objet d'intérêt avec des valeurs calculées.

C'est simple et élémentaire.

Comment le faire en MQL ?

Eh bien, construisez cet objet, puis contrôlez-le.

Décrivez-moi une tâche simple et j'essaierai de la réaliser lundi.

 
Vitaly Gorbunov:

Donc, construire cet objet et le contrôler. Où est le problème ?

Disons que vous décrivez une tâche simple et que je vais essayer de la mettre en œuvre lundi.

J'ai déjà décrit une tâche simple.

Ouvrez MetaEditor.

Cliquez sur Fichier->Créer.

Dans le champ contextuel, sélectionnez Indicateur.

Dans l'indicateur OnCalculate(), introduisez n'importe quel objet script avec l'événement OnStart().

Personnellement, je ne sais pas comment faire. Par exemple, comme ceci :

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
for(int i = 1 ; i < 100;i++)

{

si(open[i] > Max)

{

OnStart()

Et ici, nous devons écrire un script pour construire l'objet qui nous intéresse. Par exemple, une ellipse ou une lettre sur un graphique ou autre chose...

} //if(open)

} //for(int i)
//--- retourner la valeur de prev_calculée pour le prochain appel
return(rates_total) ;
} // OnCalculate

Cela doit ressembler à quelque chose comme ça.

Mais ce code n'est pas accepté par le traducteur MQL.

Raison: