Questions d'un "mannequin - page 40

 

Veuillez expliquer pourquoi aucun des EAs de MetaTrader 5 n'est testé dans le testeur de stratégie. J'appuie sur Start et rien ne se passe. Expliquez-moi.

 
PATRIOT:

Veuillez expliquer pourquoi aucun des EAs de MetaTrader 5 n'est testé dans le testeur de stratégie. J'appuie sur Start et rien ne se passe. Expliquez-moi.

Regardez dans le journal de bord (pour commencer).
 

Impossible de récupérer les données des structures prédéfinies dans les fonctions créées. Par exemple :

void OnTick()
{
//--- Объявляем структуру
 MqlRates rates[];
 ArraySetAsSeries(rates,true);

//--- Скопировать необходимое количество значений в массив
 if(CopyRates(NULL,0,0,4,rates) < 0) { Print(ErrorDescription(GetLastError())); return; }
...
}

Ensuite, lorsqu'on essaie de récupérer des valeurs dans une fonction créée :

void Trailing_Stop_Loss(ENUM_POSITION_TYPE Type, double Trailing_Stop)
{
 string Val_Time = TimeToString(rates[1].time,TIME_DATE|TIME_MINUTES);

...
}

Nous obtenons un message d'erreur :

Comment déclarer les structures pour qu'elles soient disponibles dans toutes les parties du programme ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции - Документация по MQL5
 
tol64:

Impossible de récupérer les données des structures prédéfinies dans les fonctions créées. Par exemple :

Ensuite, lorsqu'on essaie de récupérer des valeurs dans une fonction créée :

Nous obtenons un message d'erreur :

Comment déclarer les structures pour qu'elles soient disponibles dans toutes les parties du programme ?

Dans le cadre global. En dehors de la fonction.
 
Quelles fonctions peuvent être utilisées pour vérifier si un fil commercial est libre pour effectuer une opération commerciale ? Dans MQL4, les fonctions IsTradeAllowed() et IsTradeContextBusy() étaient prévues à cet effet.

La classe CAccountInfo de la bibliothèque standard possède la fonction TradeAllowed(). C'est écrit dans l'aide que cela signifie :"Le trading est autorisé/interdit pour ce compte". Je n'ai pas trouvé de code d'erreur dans les codes de retour du serveur commercial, ce qui signifie que le flux commercial est peut-être occupé. Ce contrôle est-il désormais effectué dans le terminal de négociation lui-même ? Veuillez clarifier.


 
tol64:
Quelles fonctions peuvent être utilisées pour vérifier si un fil commercial est libre pour effectuer une opération commerciale ? Dans MQL4, les fonctions IsTradeAllowed() et IsTradeContextBusy() étaient prévues à cet effet.

La classe CAccountInfo de la bibliothèque standard possède la fonction TradeAllowed(). C'est écrit dans l'aide que cela signifie :"Le trading est autorisé/interdit pour ce compte". Je n'ai pas trouvé de code d'erreur dans les codes de retour du serveur commercial, ce qui signifie que le flux commercial est peut-être occupé. Ce contrôle est-il désormais effectué dans le terminal de négociation lui-même ? Veuillez clarifier.

Dans MT5, le thread de négociation n'est jamais occupé car les opérations de négociation sont asynchrones. Réjouissez-vous.
 
tol64:
Quelles fonctions peuvent être utilisées pour vérifier si un fil commercial est libre pour effectuer des opérations commerciales ? Dans MQL4, les fonctions IsTradeAllowed() et IsTradeContextBusy() étaient prévues à cet effet.

La classe CAccountInfo de la bibliothèque standard possède la fonction TradeAllowed(). C'est écrit dans l'aide que cela signifie :"Le trading est autorisé/interdit pour ce compte ". Je n'ai pas trouvé de code d'erreur dans les codes de retour du serveur commercial, ce qui signifie que le flux commercial est peut-être occupé. Ce contrôle est-il désormais effectué dans le terminal de négociation lui-même ? Veuillez expliquer.


Dans MetaTrader5, il n'y a pas de fil de transaction occupé. Alors que MT4 ne pouvait traiter qu'un seul ordre d'un trader, dans MT5, de nombreux ordres sont traités en parallèle. Les codes de retour du serveur pour tout ordre peuvent être obtenus dans la fonction OnTrade().
 
uncleVic:

Il vous suffit de fixer le prix.

Si aucun prix n'est défini (par défaut 0.0) ou si le prix du marché est défini, CExpertTrade est invité par CExpert à ouvrir une position sur le marché.

Si le prix est meilleur que le marché (inférieur au prix actuel pour acheter et supérieur au prix actuel pour vendre), CExpertTrade placera un ordre limite (si la marge est respectée).

Si le prix est inférieur au marché (au-dessus de l'offre actuelle et au-dessous de la demande actuelle), CExpertTrade placera un ordre stop (si la marge est respectée).

bool Chhhh::OpenLongParams(double& price, double& sl, double& tp, datetime& expiration)
{
   printf("11111111");
   if(2+2==4)
   {
      price=1.5;
      sl=0;
      tp=0;
      expiration=0;
      return(true);
   }
   else
   {
      return(false);
   }
}

int Chhhh::LongCondition()
{
  printf("222222222");
  return(60);
}
OpenLongParams ne fonctionne pas du tout, il ne renvoie même pas "1111111111",
et LongCondition renvoie "2222222" et ouvre un ordre,
. Y a-t-il un problème ou un réglage différent ?
 
sergeev:

Le type spécifique est défini lors de la commande. CommanderEnvoyer
Quel est le rapport avec OrderSend?
 
Lodar:
OpenLongParams ne s'exécute pas du tout, il n'écrit même pas "1111111111",
mais LongCondition va écrire "222222222" et ouvrir un ordre,
. Est-ce que je fais quelque chose de mal ou est-ce que c'est réglé différemment ?

En principe, les choses sont beaucoup plus simples. Dans 99 % des cas, le niveau d'entrée peut être réglé à l'aide d'un paramètre d'entrée :

input double Inp_Signal_PriceLevel    =0.0;

La valeur est fixée en "grands" pips (c'est-à-dire en 2/4 chiffres).

Valeur = 0 - entrée sur le marché.

Valeur > 0 - entrée par ordre limite.

Valeur < 0 - entrée par ordre stop.

Le paramètre concerne le signal principal (dans lequel les signaux sélectionnés dans l'assistant sont rassemblés pour le vote). L'algorithme de fixation des niveaux de prix est déjà implémenté dans la classe de base CExpertSignal (dont l'instance est le signal principal).

Mais si vous voulez utiliser un algorithme qui diffère de celui qui est implémenté... Mais c'est pour plus tard, quand ce sera intéressant.