Caractéristiques du langage mql5, subtilités et techniques - page 16

 
Andrey Dik:
Pouvez-vous faire en sorte que la commande"Ouvrir le graphique" dans l'onglet "Backtest" ajoute automatiquement tous les indicateurs qui ont été utilisés dans l'EA avec les paramètres appropriés au graphique ouvert après le test ?

Pas encore.

Pour l'instant, vous pouvez sauvegarder le modèle de test visuel et l'appliquer dans le terminal du client.

 
Slawa:

Pas encore.

Pour l'instant, vous pouvez enregistrer un modèle de test visuel et l'appliquer dans le terminal du client.

Et si vous faites ce qui suit dans l'EA dans OnDeinit

ChartSaveTemplate ()


avec le nom tester.tpl puis après avoir ouvert le graphique en utilisant la commande"Open Chart", obtiendrez-vous ce dont vous avez besoin ?

 
Andrey Dik:

Et si dans le Conseiller Expert dans OnDeinit faire

ChartSaveTemplate ()


avec le nom tester.tpl, vous obtiendrez ce dont vous avez besoin après avoir ouvert le graphique en utilisant la commande"Open Chart" ?

Non. ChartSaveTemplate enregistrera le modèle dans le dossier local Files de l'agent de test.

Je voulais dire enregistrer manuellement le modèle à partir du moteur de rendu via le menu principal.

Tester.tpl ne fonctionne que dans un sens - du terminal du client vers le visualiseur.

 
Slawa:

Non. ChartSaveTemplate enregistrera le modèle dans le dossier local Files de l'agent de test.

Je voulais dire enregistrer manuellement le modèle à partir du visualiseur via le menu principal.

Tester.tpl ne fonctionne que dans un sens - du terminal du client vers le visualiseur.

Non, c'est trop lent, c'est trop de travail, et c'est souvent trop cher de faire tous les tests visuels juste pour sauver le modèle, surtout quand vous devez le faire souvent...

Cela signifie qu'il devrait être possible d'ouvrir un graphique après avoir effectué des tests avec des indicateurs.

SZY. Dans le testeur ne fonctionne pas :

//——————————————————————————————————————————————————————————————————————————————
void OnDeinit (const int reason)
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
    
  EventKillTimer ();
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
double OnTester ()
{
  if(ChartSaveTemplate(0, "testersdfsdfsdfsdf"))
    Print (__FUNCTION__ + ": Шаблон сохранён");
  else
    Print (__FUNCTION__ + ": Шаблон НЕ сохранён");
  return (-DBL_MAX);
}
//——————————————————————————————————————————————————————————————————————————————

résultat :

2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnTester : Modèle NON sauvegardé
2017.03.07 12:22:15.422 Core 1 solde final 1129.18 USD
2017.03.07 12:22:15.422 Core 1 Résultat OnTester -1.797693134862316e+308
2017.03.07 12:22:15.422 Core 1 2017.03.06 23:58:59 OnDeinit : Modèle NON sauvegardé

 
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

La couleur de l'indicateur ne peut pas être réglée de cette façon.

Alors pourquoi certaines personnes disent-elles "ce n'est pas un bug, c'est une fonctionnalité" ?

Cependant, la réponse officielle m'a donné entière satisfaction :

Nous allons réfléchir à la manière de changer la couleur et le style de l'indicateur à partir du programme MQL5.

Entre-temps, utilisez les variables d'entrée du type couleur pour définir la couleur de l'indicateur.

 
Roffild:
void OnStart()
  {
   int indic = iCustom(Symbol(), Period(), "Examples\\ATR", 7, PRICE_CLOSE, clrGreen);
   ChartIndicatorAdd(0, 1, indic);  
   Sleep(10000);
  }

La couleur de l'indicateur ne peut pas être réglée de cette façon.

Alors pourquoi certaines personnes disent-elles "ce n'est pas un bug, c'est une fonctionnalité" ?

Cependant, la réponse officielle me satisfait pleinement :

Parce que vous ne pouvez pas définir les propriétés de l'affichage (partie dessin) par le biais de la poignée de l'indicateur (partie calcul). Un bogue, c'est quand quelque chose est écrit d'une certaine manière et qu'il fonctionne d'une autre manière.

Une approche différente est nécessaire ici. Accès à l'indicateur par son nom court, comme dans le groupe de fonctions ChartIndicatorXXX. Quelque chose comme ChartIndicatorSetInteger(chart_id,sub_window,indicator_name,PROP_COLOR,mod,value)

Nous y avons déjà pensé, mais nous ne l'avons pas encore fait.

 

Pourquoi avez-vous besoin de régler quelque chose par le biais d'une poignée ? La couleur est définie dans l'indicateur lui-même par la propriété PLOT_LINE_COLOR.

L'indicateur_colorN définit uniquement la couleur d'origine qui est modifiée par PLOT_LINE_COLOR.

indicator_colorN n'est pas différent de l'entrée lorsqu'un indicateur est appelé et ensuite défini par PLOT_LINE_COLOR.

Vous ne devriez pas du tout autoriser la modification de ces propriétés via le handle.

Et il est temps d'autoriser le paramétrage dynamique des indicator_buffers.

 
Roffild:

Pourquoi avez-vous besoin de régler quelque chose par le biais d'une poignée ? La couleur est définie dans l'indicateur lui-même par la propriété PLOT_LINE_COLOR.

L'indicateur_colorN définit uniquement la couleur d'origine qui est modifiée par PLOT_LINE_COLOR.

indicator_colorN n'est pas différent de l'entrée lorsqu'un indicateur est appelé et ensuite défini par PLOT_LINE_COLOR.

Ces propriétés ne peuvent pas du tout être modifiées par le biais de la poignée.

Et il est temps d'autoriser le paramétrage dynamique des indicator_buffers.

Ne parlez pas de la poignée. Je me suis dit que la poignée ne pouvait pas être utilisée pour définir les propriétés du dessin. Et j'ai expliqué pourquoi.

N'oubliez pas qu'en plus des indicateurs personnalisés, il existe également des indicateurs intégrés, qui doivent également changer de couleur après leur ajout au graphique.

 

Je suggère seulement d'étendre les fonctions de l'appel de l'indicateur:

iCustom(... inputs, PRICE_CLOSE,
         [color color1, int width1, int style1]... );

iAlligator(... params, PRICE_CLOSE,
         [color color1, int width1, int style1]... );
Rien d'autre ne doit être ajouté.
 
Roffild:

Je suggère seulement d'étendre les fonctions de l'appel de l'indicateur:

Err, pourquoi quand tu ne peux pas le voir de toute façon ?
Raison: