• Уважаемый гость! Чтобы просмотреть скрытую часть информации Вам нужно зарегистрироваться.

    Быстрая регистрация!

Исходный код для портирования данных в VR watch list and Linker

  • Автор темы Admin
  • Дата начала
  • Автор темы
  • Панель управления
  • #1
Admin

Admin

Команда форума
Администратор
Регистрация
03.01.2013
Сообщения
2 226
Реакции
518
Исходный код и пример использования индикатора для портирования своих данных в колонки VR watch list and Linker.
15.08.2020 Будет опубликована новая глобальная версия советника VR watch list and Linker 20.080
В данный советник возможно портировать свои данные с помощью кастомного индикатора WLCastom

Ваша задача или задача Вашего программиста передать рассчитанные значения в переменную aValueA для колонки А и aValueB для колонки B. Возможно передавать значения в одну колонку или обе сразу.

Тип значения double

В исходном коде нужно заполнить:
string aNamesA = NULL; // Имя индикатора, не более 5 символов
string aColumA = "A"; // Колонка индикатора
int aDigitA = 0; // Количество знаков после запятой

string aNamesB = NULL; // Имя индикатора, не более 5 символов
string aColumB = "B"; // Колонка индикатора
int aDigitB = 0; // Количество знаков после запятой

Код универсальный подходит для MetaTrader 4 и MetaTrader 5
Исходный код:
C:
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
#property indicator_chart_window
#property indicator_buffers      0
#property indicator_plots        0
double aValueA = NULL;
double aValueB = NULL;
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
string aNamesA = NULL; // Имя индикатора, не более 5 символов
string aColumA = "A";  // Колонка индикатора
int    aDigitA = 0;    // Количество знаков после запятой

string aNamesB = NULL; // Имя индикатора, не более 5 символов
string aColumB = "B";  // Колонка индикатора
int    aDigitB = 0;    // Количество знаков после запятой
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void SendData(string aSymbol)
  {
   aValueA = NULL;
   aValueB = NULL;

// ======================================================================
// === Код вставляется сюда, переменные получают результат
// aValueA =
// aValueB =

// ======================================================================
// === Все что ниже не трогаем
   if(aValueA != NULL)
      GlobalVariableSet("Castom" + "-" + aColumA + "-" + aSymbol, aValueA);
   if(aValueB != NULL)
      GlobalVariableSet("Castom" + "-" + aColumB + "-" + aSymbol, aValueB);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
int OnInit()
  {
   if(aNamesA != NULL)
     {
      GlobalVariableSet("Name"    + aColumA + " " + aNamesA, 0);
      GlobalVariableSet("Digits_" + aColumA + "_",  aDigitA);
     }
   if(aNamesB != NULL)
     {
      GlobalVariableSet("Name"    + aColumB + " " + aNamesB, 0);
      GlobalVariableSet("Digits_" + aColumB + "_",  aDigitB);
     }

   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void OnTimer()
  {
// ======================================================================
// === Получили имя символа
   string m_sym_name = "";
   int m_all_symbols = SymbolsTotal(true);
   for(int i = 0; i < m_all_symbols; i++)
      if((m_sym_name = SymbolName(i, true)) != NULL)
         SendData(m_sym_name);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
int OnCalculate
(
   const int rates_total,
   const int prev_calculated,
   const datetime &time[],
   const double &open[],
   const double &high[],
   const double &low[],
   const double &close[],
   const long &tick_volume[],
   const long &volume[],
   const int &spread[]
)
  { return(rates_total); }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void OnDeinit(const int reason)
  {
   if(reason == REASON_REMOVE || reason == REASON_CLOSE || reason == REASON_RECOMPILE)
     {
      GlobalVariablesDeleteAll("Castom");
      GlobalVariablesDeleteAll("Name");
      GlobalVariablesDeleteAll("Digits_");
     }
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
 

Вложения

Последнее редактирование:
  • Автор темы
  • Панель управления
  • #2
Admin

Admin

Команда форума
Администратор
Регистрация
03.01.2013
Сообщения
2 226
Реакции
518
Пример передачи значений индикатора CCI для линкера версии MetaTrader 4
Исходный код:
C:
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
#property indicator_chart_window
#property indicator_buffers      0
#property indicator_plots        0
double aValueA = NULL;
double aValueB = NULL;
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
string aNamesA = NULL; // Имя индикатора, не более 5 символов
string aColumA = "A";  // Колонка индикатора
int    aDigitA = 0;    // Количество знаков после запятой

string aNamesB = NULL; // Имя индикатора, не более 5 символов
string aColumB = "B";  // Колонка индикатора
int    aDigitB = 0;    // Количество знаков после запятой
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void SendData(string aSymbol)
  {
   aValueA = NULL;
   aValueB = NULL;

// ======================================================================
// === Код вставляется сюда, переменные получают результат

  aValueA = iCCI( aSymbol, PERIOD_D1,14,PRICE_CLOSE,0);
 
// aValueB =

// ======================================================================
// === Все что ниже не трогаем
   if(aValueA != NULL)
      GlobalVariableSet("Castom" + "-" + aColumA + "-" + aSymbol, aValueA);
   if(aValueB != NULL)
      GlobalVariableSet("Castom" + "-" + aColumB + "-" + aSymbol, aValueB);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
int OnInit()
  {
   if(aNamesA != NULL)
     {
      GlobalVariableSet("Name"    + aColumA + " " + aNamesA, 0);
      GlobalVariableSet("Digits_" + aColumA + "_",  aDigitA);
     }
   if(aNamesB != NULL)
     {
      GlobalVariableSet("Name"    + aColumB + " " + aNamesB, 0);
      GlobalVariableSet("Digits_" + aColumB + "_",  aDigitB);
     }

   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void OnTimer()
  {
// ======================================================================
// === Получили имя символа
   string m_sym_name = "";
   int m_all_symbols = SymbolsTotal(true);
   for(int i = 0; i < m_all_symbols; i++)
      if((m_sym_name = SymbolName(i, true)) != NULL)
         SendData(m_sym_name);
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
int OnCalculate
(
   const int rates_total,
   const int prev_calculated,
   const datetime &time[],
   const double &open[],
   const double &high[],
   const double &low[],
   const double &close[],
   const long &tick_volume[],
   const long &volume[],
   const int &spread[]
)
  { return(rates_total); }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
void OnDeinit(const int reason)
  {
   if(reason == REASON_REMOVE || reason == REASON_CLOSE || reason == REASON_RECOMPILE)
     {
      GlobalVariablesDeleteAll("Castom");
      GlobalVariablesDeleteAll("Name");
      GlobalVariablesDeleteAll("Digits_");
     }
  }
//************************************************************************************************/
//                                                                                               */
//************************************************************************************************/
 
Теги Нет
Верх