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

 
Michail_David:

Moi-même, je n'ai pas compris, Alexey, où il a déniché cette paire de devises ;)))

Cela arrive... J'ai pensé à une chose, j'ai écrit sur une autre... C'est la même chose pour moi.........))).

 
Alexey Viktorov:

Soit les skis sont mauvais... Je ne trouve aucune mention de cette paire dans les posts de Michail_David ... Partout il est dit USDJPY

Mauvaise piste )))) Moi ;) Je me suis trompé.

Mais en fait - la paire est une chaîne de caractères et il ne faut pas y mettre de guillemets.

@Michail_David

for(int i = SymbolsTotal(in_market_watch) - 1; i >= 0; i--)
   {
      if(StringFind(SymbolName(i,in_market_watch),vlt) >= 0)

vlt - la paire que vous recherchez (ou un peu de celle-ci :)))

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

Mauvaise piste )))) Moi ;) Je me suis trompé.

Mais en substance, une paire est une chaîne de caractères et il ne faut pas y mettre de guillemets.

@Michail_David

vlt - paire recherchée (ou partie de celle-ci :)))

Sergey, merci. Je comprends l'idée.

 

Bonjour. Veuillez me conseiller.

1. Un EA négociera une série d'ordres (achat-vente-achat-vente-...). La série se terminera par l'ordre qui a clôturé avec un bénéfice. Comment le mettre en œuvre ?

2. Le prochain problème. La première série n'est pas encore achevée (nous n'avons pas eu de commande de bénéfices), et la deuxième est déjà commencée. Comment les "diviser" pour le conseiller expert ?

Merci.

 
Forallf:

Bonjour. Veuillez me conseiller.

1. Un EA négocie une série d'ordres (achat-vente-achat-vente-...). La série se terminera par l'ordre qui a clôturé avec un bénéfice. Comment le mettre en œuvre ?

2. Le prochain problème. La première série n'est pas encore achevée (nous n'avons pas eu de commande de bénéfices), et la deuxième est déjà commencée. Comment les "diviser" pour le conseiller expert ?

Merci.

1 La condition est trop vague pour aider...

2 Utiliser des "magies" différentes

 

Bonjour à tous. Continuer à scier la machine du GraalJ. Je dois refaire le code en privilégiant l'utilisation de fonctions, car j'en ai assez de faire défiler une tonne de code. Je veux déplacer les fonctions dans des fichiers d'inclusion séparés. J'ai créé une fonction pour obtenir un signal par un indicateur ao dans le fichier de l'EA pour essai et cela fonctionne bien.

Mon robot ouvre même des transactions. Mais si je crée un fichier de plugin SIGNALS_INDIKATOR. Je le connecte dans mon conseiller expert comme ceci.

//+------------------------------------------------------------------+
//|                                           TREND+_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+\SIGNALS_INDIKATOR.mqh> 
// А НИЖЕ ПОШЛИ ЕНУМЫ И ЭКСТЕРН ПЕРЕМЕННЫЕ




J'ai également écrit ma fonction pour obtenir des signaux par ce type d'attachement, mais cette fonction ne montre pas mes variables externes que j'ai facilement passées à l'EA lui-même. La fonction de récupération de la valeur de l'indicateur dans l'EA est la suivante.

//НАЧАЛО ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+
double f_ao_sell()
{ double ao_sell = iCustom(Symbol(),PeriodForWork, //Таймфрейм на котором искать дивергенции

"1)SEARCH_DIVERGENCE",
Params, // Параметры транслирования сигналов
ModeSignalsCTS, // транслировать сигналы в cts?
LifetimeOfSignal, //Время жизни сигнала в баарх рабочего тф
CTS_Name, // имя для cts 
Div_Params, // параметры поиска дивергенции
PeriodForWork, // Таймфрейм на котором искать дивергенции

SearchAccuracy, // Режим поиска совпадений
NumBarAccuracy, // количество баров не точности поиска пиков
KoeffDistanceBetween,// коэффициент разницы между экстремумами
WidthChartLine, // толщина линий на графике цены

WidthIndicatorstLine,// толщина линий в окне индикаторов
ShiftArrow, // смещение значков
AO_Params,  // Параметры АО
UseAO,  // Искать дивергенции на АО
ColorUpperAO,  // цвет верхних линий дивергенций АО
ColorLowerAO, // цвет нижних линий дивергенций АО
Stoch_Params, // параметры стохастик
UseStoch, // искать дивергенции на стохастик
ModeLineSTO, // ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ STOCHASTIC:
Period_K, // период %К стохастик
Period_D, // период %Д стохастик
Slowing, // замедление стохастик
AppledPriceSTO, // цены расчёта стохастик
MethodMAStoch, // метод МА стохастик
UpperLevelSTO, // верхний уровень стохастик
LowerLewelSTO, // нижний уровень стохастик
ColorUpperSTO, // цвет верхних линий дивергенций стохастик
ColorLowerSTO, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ STOCHASTIC

RSI_Params, // ПАРАМЕТРЫ RSI
UseRSI, // ИСКАТЬ ДИВЕРГЕНЦИИ НА  RSI?
PeriodRSI, // ПЕРИОД RSI
AppledPriceRSI, // ПРИМЕНИТЬ К
UpperLevelRSI, // ВЕРХНИЙ УРОВЕНЬ RSI
LowerLewelRSI, // НИЖНИЙ УРОВЕНЬ RSI
ColorUpperRSI, // ЦВЕТ ВЕРХНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
ColorLowerRSI, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ RSI
MACD_Params, // ПАРАМЕТРЫ MACD
UseMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ НА  MACD
ModeLineMACD, //  ИСКАТЬ ДИВЕРГЕНЦИИ ПО ЛИНИИ MACD:
FastEMA_MACD, // БЫСТРОЕ EMA MACD
SlowEMA_MACD, // МЕДЛЕННОЕ EMA MACD
PeriodSignalMACD, // ПЕРИОД СИГНАЛЬНОЙ SMA MACD
AppledPriceMACD, // ПРИМЕНИТЬ К:
ColorUpperMACD, // ЦВЕТ ВЕРХНИХ  ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
ColorLowerMACD, // ЦВЕТ НИЖНИХ ЛИНИЙ ДИВЕРГЕНЦИЙ MACD
Notifications_Params, // ПАРАМЕТРЫ ОПОВЕЩЕНИЙ 
UseAlerts, // ОПОВЕЩАТЬ В ТЕРМИНАЛЕ О СИГНАЛЕ 
UseMail, // ОПОВЕЩАТЬ НА E-MAIL О СИГНАЛЕ 
UsePush, // ОПОВЕЩАТЬ О СИГНАЛЕ НА МОБИЛЬНЫЙ 
2, //ВТОРОЙ БУФЕР- АО СЕЛЛ
0 // СИГНАЛ НА НУЛЕВОЙ СВЕЧЕ ИЗ-ЗА ОСОБЕННОСТЕЙ ИНДИКАТОРА
);

return(ao_sell);



}//КОНЕЦ ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+

Si cette fonction se trouve dans le fichier EA en dessous du tick et du timer, les variables qui sont déclarées comme externs sont clairement visibles dans cette fonction. Mais si je copie et colle complètement cette fonction dans un fichier include, les variables externes ne sont pas visibles dans la fonction.

La question est la suivante : que dois-je faire pour que les variables externes soient visibles dans les fonctions du fichier include, et que ces variables soient visibles dans les fonctions EA, que j'écris sous le timer ?

 
DanilaMactep:

Bonjour à tous. Continuer à scier la machine du GraalJ. Je dois refaire le code en privilégiant l'utilisation de fonctions, car j'en ai assez de faire défiler une tonne de code. Je veux déplacer les fonctions dans des fichiers d'inclusion séparés. J'ai créé une fonction pour obtenir un signal par un indicateur ao dans le fichier de l'EA pour essai et cela fonctionne bien.

Mon robot ouvre même des transactions. Mais si je crée un fichier de plugin SIGNALS_INDIKATOR. Je le connecte dans mon conseiller expert comme ceci.


J'ai également écrit ma fonction pour obtenir des signaux par ce type d'attachement, mais cette fonction ne montre pas mes variables externes que j'ai facilement passées à l'EA lui-même. La fonction de récupération de la valeur de l'indicateur dans mon EA est la suivante.

Si cette fonction se trouve dans le fichier EA en dessous du tick et du timer, les variables qui sont déclarées comme externs sont clairement visibles dans cette fonction. Mais si je copie et colle complètement cette fonction dans un fichier include, les variables externes ne sont pas visibles dans la fonction.

La question est la suivante : que dois-je faire pour que les variables externes soient visibles dans les fonctions du fichier include, et que ces variables soient visibles dans les fonctions EA, que j'écris sous le timer ?

variables externes - que sont-elles ?
 
MakarFX:
les variables externes - quelles sont-elles ?

Je vais insérer un morceau de code avec eux...


//+------------------------------------------------------------------+
//|                                           TREND+DIVERGENCE_V_1.0 |
//|                                                    ДАНЯ ГАГАРКИН |
//|                                     https://vk.com/danila_mastep |
//+------------------------------------------------------------------+
#property copyright "ДАНЯ ГАГАРКИН"
#property link      "https://vk.com/danila_mastep"
#property version   "1.00"
#property strict
//НАЧАЛО ВХОДНЫХ ПЕРЕМЕННЫХ И ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ------------------------------------------------------------------------------------------+
int intBars;// ПЕРЕМЕННАЯ ДЛЯ ОПЕРДЕЛЕНИЯ КОЛИЧЕСТВА БАРОВ, ЧТОБЫ ОПРЕДЕЛИТЬ ПОЯВЛЕНИЕ НОВОГО



#include <TREND+DIVERGENCE\SIGNALS_INDIKATOR.mqh> 



enum enumCoincidence
  {
   enCoinAccurate=1,    // Точный
   enCoinApproximate=0, // Приближенный
  };
  enum enumYN
  {
   enYes=1, // Да
   enNo=0,  // Нет
  };
  
  enum enumSL //ПЕРЕЧИСЛЕНИЕ ДЛЯ СТОП ЛОССА
  {
   en_fiks=1, // ФИКСИРОВАННЫЙ В ПУНКТАХ
   en_po_atr=0,  // ПО АТР
  };
  // ПЕРЕЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ПЕРВОГО ЭКРАНА
  
   enum enum_screen1 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ПЕРВОГО ЭКРАНА
  {
   en_on_screen1=1, //  1 ЭКРАН ON
   en_off_screen1=0,  //  1 ЭКРАН OFF
  };
  //ЕНУМ 2-ГО ЭКРАНА
  
   enum enum_screen2 //ПЕРЕЧИСЛЕНИЕ ДЛЯ ВТОРОГО ЭКРАНА
  {
   en_on_screen2=1,    //  2 ЭКРАН ON
   en_off_screen2=0,  // 2 ЭКРАН OFF
  };
  
    enum enum_use_filter //ПЕРЕЧИСЛЕНИЕ ДЛЯ ОТКРЫТИЯ ОТОЛЖАК С ФИЛЬТРОМ ИЛИ БЕЗ
  {
   en_bez_filtra=1,    // БЕЗ ЦЕНОВОГО ФИЛЬТРА
   en_c_filbtpom=0,  // С ЦЕНОВЫМ ФИЛЬТРОМ
  };
  
  //-- ПЕРЕЧИСЛЕНИЕ ДЛЯ ТИПА ОРДЕРОВ
  
  enum enum_tip_orderov
  {
   en_otlojki=1,    // ОТЛОЖЕННЫЕ
   en_rbIno4nbIe=0, // РЫНОЧНЫЕ
  };
  
  //--- ПЕЕРЧИСЛЕНИЕ ДЛЯ ВКЛЮЧЕНИЯ ТРАЛА
      enum enum_use_tral 
  {
   en_on_tral=1,    // С ТРАЛОМ
   en_off_tral=0,  // БЕЗ ТРАЛА
  };
  
  
  enum enumModeLINE
  {
   enMdMain=MODE_MAIN,  // Main
   enMdSign=MODE_SIGNAL,// Signal
  };
  enum enumSignalsMode
  {
   enBuy=0,             // Только Buy
   enSell=1,            // Только Sell
   enBoth=2,            // Buy и Sell
   
  };
  
  extern string  Params = "-- ПАРАМЕТРЫ ОТКРЫТИЯ СДЕЛКИ --";//======================================
  
  extern int slippages= 5; // ПРОСКАЛЬЗЫВАНИЕ
  extern int MaxRisk=1;//  % УБЫТКА ПРИ SL
  extern int razmer_fikc_sl= 500;// ФИКСИРОВАННЫЙ SL П/П?
  extern enum_screen1 flag_screen1= en_on_screen1; // ВКЛ-ВЫКЛ 1 ЭКРАН
  extern enum_screen2 flag_screen2= en_on_screen2; // ВКЛ-ВЫКЛ 2 ЭКРАН
  extern enum_tip_orderov kakie_ordera= en_rbIno4nbIe;// ОРДЕРА ОТКРЫТИЯ?

J'ai souligné les variables externes en jaune. Ces variables sont affichées lorsque l'EA est attaché au graphique dans l'onglet des paramètres d'entrée.

 
DanilaMactep:

Je vais insérer un morceau de code avec eux...


J'ai souligné les variables externes en jaune. Ces variables sont affichées lorsque l'EA est attaché au graphique dans l'onglet des paramètres d'entrée.

Ils utilisent maintenant "input" au lieu de "extern".

Vous devez également déplacer vos "variables externes" dans la bibliothèque SIGNALS_INDIKATOR.mqh.

 
DanilaMactep:

Je vais insérer un morceau de code avec eux...

Lesvariables globales dans le corps de l'EA ne sont visibles que pour l'EA et non pour les plugins,

mais les variables globales dans le corps du plugin sont visibles partout.