Questions des débutants MQL5 MT5 MetaTrader 5 - page 1235

 
Question : existe-t-il un moyen de déterminer par programme que le testeur fonctionne dans MT5 ?
 
Maksim Mihajlov:
Question : existe-t-il un moyen de déterminer par programme qu'un testeur est en cours d'exécution dans MT5 ?
Informations sur un programme MQL5 en cours d'exécution- propriétés d'un programme mql5, ce qui permet de mieux contrôler son comportement;
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе
  • www.mql5.com
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Bonjour. Je ne sais pas à qui demander, où écrire. Est-il possible de négocier via MT5 avec Interactive Brokers ? Je leur ai posé une question, mais ils ont glissé un lien dans la réponse pour contacter https://www.metaquotes.net/ru/company/contacts, donc c'est un formulaire pour une entité légale. Il semble y avoir une sorte de pont logiciel entre MT5 et TWS, pouvez-vous me dire quelque chose à ce sujet ? S'il existe une possibilité d'acheter des cotations des bourses américaines avec la diffusion de MT5 afin de voir le graphique d'un certain instrument et d'utiliser les indicateurs de MT5, mais d'effectuer des transactions par le biais de TWS. Si ce n'est pas la bonne question, veuillez me dire où écrire et demander.
Контакты представительств компании MetaQuotes
Контакты представительств компании MetaQuotes
  • www.metaquotes.net
По вопросам приобретения торговой платформы MetaTrader 5 вы можете обратиться к нашим представителям:
 
akarustam:

Fatigué de comprendre la raison de la différence constante dans l'optimisation d'un bon EA dans MT5... Sur la même paire de devises, avec le même EA, avec les mêmes paramètres d'optimisation, il y a une différence dans les résultats d'optimisation... C'est-à-dire que j'utilise toujours le même EA et je m'attendais aux mêmes résultats, mais en fait ils sont différents...

Eclairez-nous, qui est familier de ce genre de confusion ?

MERCI.

Principalement des variables forcées non initialisées ou des références à des variables globales (celles du terminal)

 

Aide, indicateur de chandelier

#property tester_everytick_calculate
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot newCandles
#property indicator_label1  "newCandles"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrWhite
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double   newCandles_Open[];
double   newCandles_High[];
double   newCandles_Low[];
double   newCandles_Close[];
int      newCandles_index  = 0;
//--- цены формирующейся свечи
double   candle_Open    = -1.0;
double   candle_High    = -1.0;
double   candle_Low     = -1.0;
double   candle_Close   = -1.0;

int OnInit()
{
//--- indicator buffers mapping
   SetIndexBuffer(0, newCandles_Open,  INDICATOR_DATA);
   SetIndexBuffer(1, newCandles_High,  INDICATOR_DATA);
   SetIndexBuffer(2, newCandles_Low,   INDICATOR_DATA);
   SetIndexBuffer(3, newCandles_Close, INDICATOR_DATA);
//+---------------------
   PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, 0.0);
//+---------------------
   PlotIndexSetString(0,PLOT_LABEL,"newCandles("+IntegerToString(in_Candle_Size_Point)+", "+TimeToString(in_Start_Time,TIME_DATE)+")");
   IndicatorSetString(INDICATOR_SHORTNAME,"newCandles("+IntegerToString(in_Candle_Size_Point)+", "+TimeToString(in_Start_Time,TIME_DATE)+")");
//+---------------------
   ArrayInitialize(newCandles_Open,0.0);
   ArrayInitialize(newCandles_High,0.0);
   ArrayInitialize(newCandles_Low,0.0);
   ArrayInitialize(newCandles_Close,0.0);

//+---------------------
   return(INIT_SUCCEEDED);
}

OnCalculate effectue le calcul et remplit les tampons INDICATOR_DATA lorsque les conditions sont remplies.

      newCandles_Open[newCandles_index]      = candle_Open;
      newCandles_High[newCandles_index]      = candle_High;
      newCandles_Low[newCandles_index]       = candle_Low;
      newCandles_Close[newCandles_index++]   = candle_Close;

Je pensais que lorsque ces tampons étaient remplis, le chandelier devait être dessiné. Mais ce n'est pas le cas. Pourquoi ?

 
Сергей Таболин:

Aide, indicateur de chandelier

OnCalculate effectue le calcul et remplit les tampons INDICATOR_DATA lorsque les conditions sont remplies.

Je pensais que lorsque ces tampons étaient remplis, le chandelier devait être dessiné. Mais ce n'est pas le cas. Pourquoi ?

Où se trouve le code complet ? Ce que vous faites exactement dans OnCalculate n'est pas clair. À titre d'exemple, utilisez l'aideDRAW_CANDLES.

Et qu'est-ce que cette bougie avec des prix négatifs ?
 
Vladimir Karputov:

Où se trouve le code complet ? On ne sait pas exactement ce que vous faites dans OnCalculate. À titre d'exemple, utilisez l'aideDRAW_CANDLES.

Et qu'est-ce que cette bougie avec des prix négatifs ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

MQ5::Question sur l'indicateur de chandelier.

Sergey Tabolin, 2020.08.05 18:17

Edgar, merci, mais c'est clair pour moi. Ce qui n'est pas clair, c'est pourquoi il n'y a pas de tics avant 2019 ?


Maintenant, la question principale est.

Pourquoi les bougies ne sont-elles pas dessinées dans l'indicateur ? Où ai-je tort?

Source du domaine public ))))

Il s'agit juste d'une initialisation pour lancer le compte à rebours. Les prix sont comptés correctement.
Dossiers :
newCandles.mq5  21 kb
 
Сергей Таболин:
Il s'agit juste d'une initialisation pour lancer le compte à rebours. Les prix sont comptés correctement.

Lors du débogage, vérifiez dans quels cas votre condition sera remplie.


 
Vladimir Karputov:

Lors du débogage, vérifiez dans quels cas votre condition sera remplie.


Je réalise que cela peut ne pas être correct. Mais !

Ça marche. La condition est remplie lorsque l'indicateur se met en marche. Une fois. Les prix sont imprimés. Ensuite, les ticks sont calculés. Ils sont également imprimés.

2020.08.06 14:27:31.101 newCandles (USDJPY,H1)  2020.08.05 21:31:16 >>> Свеча 03623 >> open = 105.638 hihg = 105.675 low = 105.473 close = 105.473 > Сформирована за 07539 тиков.
2020.08.06 14:27:31.101 newCandles (USDJPY,H1)  2020.08.06 03:14:33 >>> Свеча 03624 >> open = 105.473 hihg = 105.635 low = 105.395 close = 105.635 > Сформирована за 19034 тика.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  2020.08.06 10:54:42 >>> Свеча 03625 >> open = 105.635 hihg = 105.695 low = 105.471 close = 105.471 > Сформирована за 08861 тик.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  ~~~~ Предварительный расчёт индикатора закончен.
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00872 Бар 03626
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00873 Бар 03626
2020.08.06 14:27:31.102 newCandles (USDJPY,H1)  Расчёт на тике 00874 Бар 03626

Mais je veux savoir pourquoi aucun chandelier n'est imprimé.

 
Сергей Таболин:

Je me rends compte que ce n'est peut-être pas la bonne chose à faire. Mais !

Ça marche. La condition est remplie lorsque l'indicateur se met en marche. Une fois. Les prix sont imprimés. Ensuite, les ticks sont calculés. Ils sont également imprimés.

Mais je veux savoir pourquoi aucun chandelier n'est dessiné.

Tout d'abord, apprenez à construire l'indicateur basé sur DRAW_CANDLES. En même temps, vous devez réfléchir à ce qu'est un chandelier "0".

Enfin, jusqu'à ce que vous vous approchiez des tics.


Pour dessiner un chandelier, vous devez remplir les quatre tampons. Vous ne faites pas cela - vous sautez à la fois newCandles_Close et .....