← К каталогу
Исходный код · ID 1070

Ichimoku Scanner

ichimoku scanner v1.1.mq4

Похожие материалы по тегам

the gold reaper v4.1 mt5.mq4MQL4 / MetaTrader 4 · 1 общих теговquantum queen x 4.3 (1).mq5MQL5 / MetaTrader 5 · 1 общих теговlizard_1.85.mq4MQL4 / MetaTrader 4 · 1 общих теговoverlaychart.mq4MQL4 / MetaTrader 4 · 1 общих теговmarket crusher ea guidlines.txtMQL · 1 общих теговrobot_wti ea.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Ichimoku Scanner — индикатор для MetaTrader 4, отображающий панель сканирования сигналов Ишимоку в отдельном окне графика. Он анализирует выбранные валютные пары на нескольких таймфреймах и показывает маркеры BUY, SELL или нейтральный статус на основе пересечения линий Тенкан-сен и Киджун-сен. Индикатор строит таблицу-решётку с настраиваемыми парами и таймфреймами, обновляя отображение при каждом перерисовывании графика.

Настройки программы

НастройкаОписание
Tenkan_Sen_Period Период Тенкан-сен — Период расчёта линии Тенкан-сен (конверсионной линии) Ишимоку
Kijun_Sen_Period Период Киджун-сен — Период расчёта линии Киджун-сен (базовой линии) Ишимоку
Senkou_Span_B_Period Период Сенкоу Спан Б — Период расчёта линии Сенкоу Спан Б (линии опережающего облака)
Comment1 Описание списка пар — Текстовая подсказка с примером формата перечисления пар через запятую
Pairs Список пар — Перечень валютных пар через запятую для сканирования в индикаторе
Include_M1 Включить M1 — Добавить таймфрейм M1 в таблицу сканера
Include_M5 Включить M5 — Добавить таймфрейм M5 в таблицу сканера
Include_M15 Включить M15 — Добавить таймфрейм M15 в таблицу сканера
Include_M30 Включить M30 — Добавить таймфрейм M30 в таблицу сканера
Include_H1 Включить H1 — Добавить таймфрейм H1 в таблицу сканера
Include_H4 Включить H4 — Добавить таймфрейм H4 в таблицу сканера
Include_D1 Включить D1 — Добавить таймфрейм D1 в таблицу сканера
Include_W1 Включить W1 — Добавить таймфрейм W1 в таблицу сканера
Include_MN1 Включить MN1 — Добавить таймфрейм MN1 в таблицу сканера
Labels_Color Цвет подписей — Цвет текста в ячейках таблицы индикатора
Up_Color Цвет сигнала вверх — Цвет маркера сигнала на покупку
Dn_Color Цвет сигнала вниз — Цвет маркера сигнала на продажу
Neutral_Color Цвет нейтрального состояния — Цвет маркера при отсутствии сигнала
X coordinate (x_shift) Смещение по X — Горизонтальное смещение начала таблицы на графике
Font Size; (font_size) Размер шрифта — Размер шрифта текста в ячейках таблицы
Cell width (cell_width) Ширина ячейки — Ширина одной ячейки таблицы
Cell height (cell_height) Высота ячейки — Высота одной строки таблицы
== Alerts == (AlertsSection) Раздел уведомлений — Разделитель группы настроек уведомлений в окне параметров
Popup message (popup_alert) Всплывающее окно — Показывать всплывающее окно с уведомлением о сигнале
Push notification (notification_alert) Push-уведомление — Отправлять push-уведомление на мобильное устройство
Email (email_alert) Email-уведомление — Отправлять уведомление на электронную почту
Play sound on alert (play_sound) Звуковой сигнал — Воспроизводить звуковой файл при появлении сигнала
Sound file (sound_file) Файл звука — Путь к звуковому файлу для оповещения
Start external program (start_program) Запуск программы — Запускать внешнюю программу при срабатывании сигнала
Advanced alert (Telegram/Discord/other platform (like another MT4)) (advanced_alert) Расширенное уведомление — Использовать расширенные уведомления через DLL (Telegram, Discord и др.)
Comment2 Подсказка по ключу — Текстовая подсказка о получении ключа для расширенных уведомлений
Comment3 Подсказка по DLL — Текстовая подсказка о необходимости разрешить использование DLL
Comment4 Подсказка по установке — Текстовая подсказка об установке необходимой библиотеки
Получить полный код

Поиск по коду файла

#property version   "1.1"
#property strict

#property indicator_separate_window
#property strict

extern int  Tenkan_Sen_Period                = 9;
extern int  Kijun_Sen_Period                 = 26;
extern int  Senkou_Span_B_Period             = 52;

input string   Comment1                 = "- Comma Separated Pairs - Ex: EURUSD,EURJPY,GBPUSD - ";
input string   Pairs                    = "EURUSD,EURJPY,USDJPY,GBPUSD,GBPJPY,EURGBP,AUDUSD,NZDUSD";
input bool     Include_M1               = true;
input bool     Include_M5               = true;
input bool     Include_M15              = true;
input bool     Include_M30              = true;
input bool     Include_H1               = true;
input bool     Include_H4               = true;
input bool     Include_D1               = true;
input bool     Include_W1               = true;
input bool     Include_MN1              = true;
input color    Labels_Color             = clrWhite;
input color    Up_Color                 = clrLime;
input color    Dn_Color                 = clrRed;
input color    Neutral_Color            = clrDarkGray;
input int x_shift = 1000; // X coordinate
input int font_size = 10; // Font Size;
input int cell_width = 120; // Cell width
input int cell_height = 30; // Cell height

extern string   AlertsSection            = ""; // == Alerts ==
extern bool     popup_alert              = false; // Popup message
extern bool     notification_alert       = false; // Push notification
extern bool     email_alert              = false; // Email
extern bool     play_sound               = false; // Play sound on alert
extern string   sound_file               = ""; // Sound file
extern bool     start_program            = false; // Start external program
extern string   program_path             = ""; // Path to the external program executable
extern bool     advanced_alert           = false; // Advanced alert (Telegram/Discord/other platform (like another MT4))
extern string   advanced_key             = ""; // Advanced alert key
extern string   Comment2                 = "- You can get a key via @profit_robots_bot Telegram Bot. Visit ProfitRobots.com for discord/other platform keys -";
extern string   Comment3                 = "- Allow use of dll in the indicator parameters window -";
extern string   Comment4                 = "- Install AdvancedNotificationsLib.dll -";

#import "AdvancedNotificationsLib.dll"
void AdvancedAlert(string key, string text, string instrument, string timeframe);
#import
#import "shell32.dll"
int ShellExecuteW(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd);
#import

class Signaler
{
   string _symbol;
   ENUM_TIMEFRAMES _timeframe;
   datetime _lastDatetime;
   string _prefix;
public:
   Signaler(const string symbol, ENUM_TIMEFRAMES timeframe)
   {
      _symbol = symbol;
      _timeframe = timeframe;
   }

   void SetMessagePrefix(string prefix)
   {
      _prefix = prefix;
   }

   string GetSymbol()
   {
      return _symbol;
   }

   ENUM_TIMEFRAMES GetTimeframe()
   {
      return _timeframe;
   }

   string GetTimeframeStr()
   {
      switch (_timeframe)
      {
         case PERIOD_M1: return "M1";
         case PERIOD_M5: return "M5";
         case PERIOD_D1: return "D1";
         case PERIOD_H1: return "H1";
         case PERIOD_H4: return "H4";
         case PERIOD_M15: return "M15";
         case PERIOD_M30: return "M30";
         case PERIOD_MN1: return "MN1";
         case PERIOD_W1: return "W1";
      }
      return "M1";
   }

   void SendNotifications(const string subject, string message = NULL, string symbol = NULL, string timeframe = NULL)
   {
      if (message == NULL)
         message = subject;
      if (_prefix != "" && _prefix != NULL)
         message = _prefix + message;
      if (symbol == NULL)
         symbol = _symbol;
      if (timeframe == NULL)
         timeframe = GetTimeframeStr();

      if (start_program)
         ShellExecuteW(0, "open", program_path, "", "", 1);
      if (popup_alert)
         Alert(message);
      if (email_alert)
         SendMail(subject, message);
      if (play_sound)
         PlaySound(sound_file);
      if (notification_alert)
         SendNotification(message);
      if (advanced_alert && advanced_key != "" && !IsTesting())
         AdvancedAlert(advanced_key, message, symbol, timeframe);
   }
};

#define MAX_LOOPBACK 500

string   WindowName;
int      WindowNumber;

interface ICondition
{
public:
   virtual bool IsPass(const int period) = 0;
};

class InstrumentInfo
{
   string _symbol;
   double _mult;
   double _point;
   double _pipSize;
   int _digits;
   double _tickSize;
public:
   InstrumentInfo(const string symbol)
   {
      _symbol = symbol;
      _point = MarketInfo(symbol, MODE_POINT);
      _digits = (int)MarketInfo(symbol, MODE_DIGITS); 
      _mult = _digits == 3 || _digits == 5 ? 10 : 1;
      _pipSize = _point * _mult;
      _tickSize = MarketInfo(_symbol, MODE_TICKSIZE);
   }

   static double GetBid(const string symbol) { return MarketInfo(symbol, MODE_BID); }
   double GetBid() { return GetBid(_symbol); }
   static double GetAsk(const string symbol) { return MarketInfo(symbol, MODE_ASK); }
   double GetAsk() { return GetAsk(_symbol); }
   static double GetPipSize(const string symbol)
   { 
      double point = MarketInfo(symbol, MODE_POINT);
      double digits = (int)MarketInfo(symbol, MODE_DIGITS); 
      double mult = digits == 3 || digits == 5 ? 10 : 1;
      return point * mult;
   }
   double GetPipSize() { return _pipSize; }
   double GetPointSize() { return _point; }
   string GetSymbol() { return _symbol; }
   double GetSpread() { return (GetAsk() - GetBid()) / GetPipSize(); }
   int GetDigits() { return _digits; }
   double GetTickSize() { return _tickSize; }
   double GetMinLots() { return SymbolInfoDouble(_symbol, SYMBOL_VOLUME_MIN); };

   double RoundRate(const double rate)
   {
      return NormalizeDouble(MathFloor(rate / _tickSize + 0.5) * _tickSize, _digits);
   }
};

class ABaseCondition : public ICondition
{
protected:
   ENUM_TIMEFRAMES _timeframe;
   InstrumentInfo *_instrument;
   string _symbol;
public:
   ABaseCondition(const string symbol, ENUM_TIMEFRAMES timeframe)
   {
      _instrument = new InstrumentInfo(symbol);
      _timeframe = timeframe;
      _symbol = symbol;
   }
   ~ABaseCondition()
   {
      delete _instrument;
   }
};

class UpCondition : public ABaseCondition
{
public:
   UpCondition(const string symbol, ENUM_TIMEFRAMES timeframe)
      :ABaseCondition(symbol, timeframe)
   {
   }

   virtual bool IsPass(const int period)
   {
      double TENKANSEN_0 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 1, period);
      double KIJUNSEN_0 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 2, period);
      double TENKANSEN_1 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 1, period + 1);
      double KIJUNSEN_1 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 2, period + 1);

      return TENKANSEN_0 > KIJUNSEN_0 && TENKANSEN_1 <= KIJUNSEN_1;
   }
};

class DownCondition : public ABaseCondition
{
public:
   DownCondition(const string symbol, ENUM_TIMEFRAMES timeframe)
      :ABaseCondition(symbol, timeframe)
   {
   }

   virtual bool IsPass(const int period)
   {
      double TENKANSEN_0 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 1, period);
      double KIJUNSEN_0 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 2, period);
      double TENKANSEN_1 = iIchimoku(_symbol, _timeframe, Tenkan_Sen_Period, Kijun_Sen_Period, Senkou_Span_B_Period, 1, period + 1);
      double KIJUNSE

Показано первые 50% кода (символов: 11559)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 155,90₽ ≈ $14.13