新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1377

 
Michail_David:

我自己也不明白,阿列克谢,他在哪里挖到了这个货币对 ))

它发生了......想了一件事,写了另一件事......同样的事,我自己.........))

 
Alexey Viktorov:

要么是滑雪板坏了......我在Michail_David的 帖子中找不到关于这对货币的任何提及......到处都说是USDJPY

错误的轨道 ))))我;)我弄错了。

但事实上--这一对是一个字符串,不应该在其中放入反转逗号。

@Michail_David

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

vlt--你要找的那一对(或者说有点像:))。

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

错误的轨道 ))))我;)我弄错了。

但从本质上讲--一对是一个字符串,不应该在其中放入反转逗号。

@Michail_David

vlt--寻求配对(或部分配对:))。

谢尔盖,谢谢你。我有了这个想法。

 

你好。请告知。

1.一个EA将交易一系列的订单(买-卖-买-卖-...)。该系列将以盈利收盘的订单结束。如何实施?

2.下一个问题。第一个系列还没有完成(我们还没有利润订单),第二个系列已经开始。如何为专家顾问 "分割 "它们?

谢谢你。

 
Forallf:

你好。请告知。

1.一个EA将交易一系列的订单(买-卖-买-卖-...)。该系列将以盈利收盘的订单结束。如何实施?

2.下一个问题。第一个系列还没有完成(我们还没有利润订单),第二个系列已经开始。如何为专家顾问 "分割 "它们?

谢谢你。

1 条件太模糊了,无法帮助...

2 使用不同的 "魔法"

 

大家下午好。继续看到圣杯机J 我必须重做代码,偏向于使用函数,因为我讨厌滚动浏览一大堆代码。我想把这些功能移到独立的包含文件中。我已经在EA的文件中创建了通过AO指标获取信号的功能,供大家试用,效果不错。

但如果我创建一个插件文件SIGNALS_INDIKATOR。我在我的专家顾问中是这样连接的。

//+------------------------------------------------------------------+
//|                                           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> 
// А НИЖЕ ПОШЛИ ЕНУМЫ И ЭКСТЕРН ПЕРЕМЕННЫЕ




写了我的函数,通过这种附件获取信号,但这个函数没有显示我的外部变量,而我已经很容易地将这些变量传递给了EA本身。在EA中 获取指标值 的功能是这样的。

//НАЧАЛО ПОЛУЧЕНИЯ ДАННЫХ ПО АО СЕЛЛ------------------------------------------------------------------------------------------+
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);



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

如果这个函数在EA文件中,在tick和timer下面,那么在这个函数中可以清楚地看到被声明为externs的变量。但如果我把这个函数完全复制并粘贴到include文件中,外部变量在函数中是不可见的。

问题是,我应该怎样做才能使外部变量在include文件中的函数中可见,以及这些变量在我写在定时器下面的EA函数中可见?

 
DanilaMactep:

大家下午好。继续看到圣杯机J 我必须重做代码,偏向于使用函数,因为我讨厌滚动浏览一大堆代码。我想把这些功能移到独立的包含文件中。我已经在EA的文件中创建了通过AO指标获取信号的功能,供大家试用,效果不错。

但如果我创建一个插件文件SIGNALS_INDIKATOR。我在我的专家顾问中是这样连接的。


写了我的函数,通过这种附件获取信号,但这个函数没有显示我的外部变量,而我已经很容易地将这些变量传递给了EA本身。在我的EA中, 获取指标值 的功能是这样的。

如果这个函数在EA文件中,在tick和timer下面,那么在这个函数中可以清楚地看到被声明为externs的变量。但如果我把这个函数完全复制并粘贴到include文件中,外部变量在函数中是不可见的。

问题是,我应该怎样做才能使外部变量在include文件中的函数中可见,以及这些变量在我写在定时器下面的EA函数中可见?

外来变量--它们是什么?
 
MakarFX:
外部变量 - 它们是什么?

我将与他们一起插入一段代码--


//+------------------------------------------------------------------+
//|                                           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;// ОРДЕРА ОТКРЫТИЯ?

我已经用黄色标出了外部变量。当EA连接到图表时,这些变量会在输入参数选项卡中显示。

 
DanilaMactep:

我将与他们一起插入一段代码--


我已经用黄色标出了外部变量。当EA连接到图表时,这些变量会在输入参数选项卡中显示。

现在他们使用 "输入 "而不是 "外部"。

你还需要将你的 "外部变量 "移到SIGNALS_INDIKATOR.mqh库中。

 
DanilaMactep:

我将与他们一起插入一段代码--

EA主体中的全局变量 只对EA可见,对插件不可见。

但插件主体中的全局变量在任何地方都是可见的。

原因: