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

CSS - STO mod

currency slope strength_stoc_v1.4.mq4
Вы автор или правообладатель?

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

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

О программе

Индикатор «CSS - STO mod» — это пользовательский индикатор для MetaTrader 4, отображаемый в отдельном подокне. Он рассчитывает аналитические показатели силы склона для восьми основных валют (USD, EUR, GBP, CHF, JPY, AUD, CAD, NZD) на основе стохастика и отрисовывает их в виде линий на графике. Дополнительно применяется сглаживание скользящей средней и отображение линий стохастика более высокого таймфрейма.

Индикатор поддерживает гибкую настройку отображения: пользователь может включать или отключать линии RSI, линии скользящей средней и линии высокого таймфрейма для каждой валюты независимо. Доступен режим автоматического выбора символов и таймфрейма, а также режим отображения только тех валют, которые присутствуют на текущем графике.

Встроенный модуль кнопок позволяет интерактивно скрывать и показывать линии отдельных валют одним щелчком мыши. При активации кнопок на графике отображается отсортированная таблица текущих значений валют по убыванию. Параметры кнопок (размер, цвет, шрифт, позиционирование) настраиваются пользователем.

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

НастройкаОписание
gen Разделитель секции общих настроек.
autoSymbols Включает автоматический подбор символов для расчёта валютных пар.
autoTimeFrame Включает автоматический выбор таймфрейма по текущему графику.
symbolsToWeigh Список валютных пар для расчёта, разделённых запятыми (используется при отключённом автоматическом подборе символов).
maxBars Максимальное количество баров, используемых для расчёта индикатора. Если задано значение 0, используются все доступные бары.
nonPropFont Шрифт, используемый для текста таблицы валют на графике.
showOnlySymbolOnChart Ограничивает отображение линий только теми валютами, которые присутствуют на текущем графике.
str4356 Разделитель секции настроек.
ShowButtons Включает или отключает отображение кнопок управления на графике.
showiRSILines Включает или отключает отображение линий стохастика основного таймфрейма.
showiMALines Включает или отключает отображение линий скользящей средней.
showHi_TF_RSI Включает или отключает отображение линий стохастика высокого таймфрейма.
MAPeriod Период скользящей средней, применяемой к данным валют.
MAMethod Метод сглаживания скользящей средней (например, SMA, EMA и др.).
RSI_Style Стиль отображения линий стохастика основного таймфрейма.
RSI_Width Толщина линий стохастика основного таймфрейма.
SMA_Style Стиль отображения линий скользящей средней.
SMA_Width Толщина линий скользящей средней.
Hi_RSI_Style Стиль отображения линий стохастика высокого таймфрейма.
Hi_RSI_Width Толщина линий стохастика высокого таймфрейма.
Lower_level_value Значение нижнего уровня для горизонтальных линий на графике.
Higher_level_value Значение верхнего уровня для горизонтальных линий на графике.
PERIOD Период стохастика — число баров для расчёта.
D Параметр D стохастика — число периодов для линии сигнала.
S Параметр S стохастика — число периодов для основной линии.
ind Разделитель секции настроек индикатора.
ind_tf Подсказка для параметра таймфрейма индикатора.
timeFrame Таймфрейм для расчёта основного стохастика (например, M1, M5, M15, M30, H1, H4, D1).
Higher_TF Таймфрейм для расчёта линий стохастика высокого таймфрейма (например, H1, H4, D1).
cur Разделитель секции настроек валют.
USD Включает или отключает отображение линий для валюты USD (доллар США) в режиме отображения всех валют.
EUR Включает или отключает отображение линий для валюты EUR (евро) в режиме отображения всех валют.
GBP Включает или отключает отображение линий для валюты GBP (британский фунт) в режиме отображения всех валют.
CHF Включает или отключает отображение линий для валюты CHF (швейцарский франк) в режиме отображения всех валют.
JPY Включает или отключает отображение линий для валюты JPY (японская иена) в режиме отображения всех валют.
AUD Включает или отключает отображение линий для валюты AUD (австралийский доллар) в режиме отображения всех валют.
CAD Включает или отключает отображение линий для валюты CAD (канадский доллар) в режиме отображения всех валют.
NZD Включает или отключает отображение линий для валюты NZD (новозеландский доллар) в режиме отображения всех валют.
col Разделитель секции настроек цветов.
Color_USD Цвет линий для валюты USD.
Color_EUR Цвет линий для валюты EUR.
Color_GBP Цвет линий для валюты GBP.
Color_CHF Цвет линий для валюты CHF.
Color_JPY Цвет линий для валюты JPY.
Color_AUD Цвет линий для валюты AUD.
Color_CAD Цвет линий для валюты CAD.
Color_NZD Цвет линий для валюты NZD.
Color_USD_Hi Цвет линий высокого таймфрейма для валюты USD.
Color_EUR_Hi Цвет линий высокого таймфрейма для валюты EUR.
Color_GBP_Hi Цвет линий высокого таймфрейма для валюты GBP.
Color_CHF_Hi Цвет линий высокого таймфрейма для валюты CHF.
Color_JPY_Hi Цвет линий высокого таймфрейма для валюты JPY.
Color_AUD_Hi Цвет линий высокого таймфрейма для валюты AUD.
Color_CAD_Hi Цвет линий высокого таймфрейма для валюты CAD.
Color_NZD_Hi Цвет линий высокого таймфрейма для валюты NZD.
sep11b Разделитель секции настроек.
cmdb Разделитель секции настроек командных кнопок.
ButtonHeight Высота кнопок управления в пикселях.
ButtonWidth Ширина кнопок управления в пикселях.
ButtonCorner Угол графика, в котором привязываются кнопки управления.
ButtonFont Шрифт текста на кнопках управления.
ButtonFontSize Размер шрифта текста на кнопках управления.
ButtonColor Цвет текста на кнопках управления.
ButtonBackColor Цвет фона кнопок управления на графике.
ButtonBorderColor Цвет границы кнопок управления на графике.
Button_X Горизонтальная позиция кнопок управления на графике.
Button_Y Вертикальная позиция кнопок управления на графике.
Получить полный код

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

#property indicator_separate_window
#property indicator_buffers 24

#property indicator_minimum 0
#property indicator_maximum 100

#define version            "v1.0.0 - STO_mod"

#define EPSILON            0.00000001

#define CURRENCYCOUNT      8

extern string  gen               = "----General inputs----";
extern bool    autoSymbols       = false;
extern bool    autoTimeFrame     = TRUE;

extern string	symbolsToWeigh    = "GBPNZD,EURNZD,GBPAUD,GBPCAD,GBPJPY,GBPCHF,CADJPY,EURCAD,EURAUD,USDCHF,GBPUSD,EURJPY,NZDJPY,AUDCHF,AUDJPY,USDJPY,EURUSD,NZDCHF,CADCHF,AUDNZD,NZDUSD,CHFJPY,AUDCAD,USDCAD,NZDCAD,AUDUSD,EURCHF,EURGBP";
extern int     maxBars           = 100;
extern string  nonPropFont       = "Lucida Console";
extern bool    showOnlySymbolOnChart = true;
extern string  str4356           = "----"; //----
extern bool    ShowButtons       = false;
extern bool    showiRSILines     = true;
extern bool    showiMALines      = true;
extern bool    showHi_TF_RSI     = FALSE;
extern int     MAPeriod          = 3;
extern ENUM_MA_METHOD MAMethod   = MODE_SMA;
extern string  RSI_Style         = 0;
extern string  RSI_Width         = 1;
extern string  SMA_Style         = 2;
extern string  SMA_Width         = 1;
extern string  Hi_RSI_Style      = 0;
extern string  Hi_RSI_Width      = 2;
extern string  Lower_level_value = 40;
extern string  Higher_level_value= 60;
extern int     PERIOD            =14; 
extern int     D                 =3;
extern int     S                 =3;
extern string  ind               = "----Indicator inputs----";
extern string  ind_tf            = "timeFrame 'D1'/'H4'/'H1'/'M30'/'M15'";
extern string  timeFrame         = "M30";
extern string  Higher_TF         = "H1";

extern string  cur               = "----Currency inputs----";
extern bool    USD               = true;
extern bool    EUR               = true;
extern bool    GBP               = true;
extern bool    CHF               = true;
extern bool    JPY               = true;
extern bool    AUD               = true;
extern bool    CAD               = true;
extern bool    NZD               = true;

extern string  col               = "----Colo(u)r inputs----";
extern color   Color_USD         = White;
extern color   Color_EUR         = HotPink;
extern color   Color_GBP         = Red;
extern color   Color_CHF         = Yellow;
extern color   Color_JPY         = Magenta;
extern color   Color_AUD         = Lime;
extern color   Color_CAD         = Goldenrod;
extern color   Color_NZD         = DodgerBlue;
extern color   Color_USD_Hi      = White;
extern color   Color_EUR_Hi      = HotPink;
extern color   Color_GBP_Hi      = Red;
extern color   Color_CHF_Hi      = Yellow;
extern color   Color_JPY_Hi      =  Magenta;
extern color   Color_AUD_Hi      = Lime;
extern color   Color_CAD_Hi      = Goldenrod;
extern color   Color_NZD_Hi      = DodgerBlue;

string   indicatorName = "CSS - STO mod";
string   shortName;
int      userTimeFrame;
int      higherTimeFrame;
string   almostUniqueIndex;

double   arrUSD[];
double   arrEUR[];
double   arrGBP[];
double   arrCHF[];
double   arrJPY[];
double   arrAUD[];
double   arrCAD[];
double   arrNZD[];

double   arrUSD2[];
double   arrEUR2[];
double   arrGBP2[];
double   arrCHF2[];
double   arrJPY2[];
double   arrAUD2[];
double   arrCAD2[];
double   arrNZD2[];

double   arrUSD3[];
double   arrEUR3[];
double   arrGBP3[];
double   arrCHF3[];
double   arrJPY3[];
double   arrAUD3[];
double   arrCAD3[];
double   arrNZD3[];

int      symbolCount;
string   symbolNames[];
string   currencyNames[CURRENCYCOUNT]        = { "USD", "EUR", "GBP", "CHF", "JPY", "AUD", "CAD", "NZD" };
double   currencyValues[CURRENCYCOUNT];      // RSI
double   currencyValues2[CURRENCYCOUNT];     // Hi_TF_RSI
double   currencyOccurrences[CURRENCYCOUNT]; // Holds the number of occurrences of each currency in symbols

color    currencyColors[CURRENCYCOUNT+16];

int      verticalShift = 14;
int      verticalOffset = 30;
int      horizontalShift = 100;
int      horizontalOffset = 10;

extern string  sep11b="================================================================";
extern string  cmdb="---- Command buttons ----";
extern int     ButtonHeight=15;
extern int     ButtonWidth=40;
extern ENUM_BASE_CORNER ButtonCorner=CORNER_RIGHT_LOWER; // Chart corner for anchoring
extern string           ButtonFont="Arial";             // Font
extern int              ButtonFontSize=7;              // Font size
extern color            ButtonColor=clrBlack;           // Text color
extern color            ButtonBackColor=clrGainsboro;  // Background color
extern color            ButtonBorderColor=clrSilver;  // Border color
extern int              Button_X=60;                   //X axis
extern int              Button_Y=30;                    //Y axis

bool           ButtonBack=false;               // Background object
bool           ButtonSelection=false;          // Highlight to move
bool           ButtonHidden=false;             // Hidden in the object list
long           ButtonZOrder=0;                 // Priority for mouse click
bool           ButtonState=false;              // Pressed/Released

int init()
{
      // код доступен только после оплаты
   }

int initSymbols()
{
   int i;

   string symbolExtraChars = StringSubstr(Symbol(), 6, 4);

   symbolsToWeigh = StringTrimLeft(symbolsToWeigh);
   symbolsToWeigh = StringTrimRight(symbolsToWeigh);

   if (StringSubstr(symbolsToWeigh, StringLen(symbolsToWeigh) - 1) != ",")
   {
      symbolsToWeigh = StringConcatenate(symbolsToWeigh, ",");   
   }   

   if ( autoSymbols )
   {
      createSymbolNamesArray();
   }
   else
   {

      i = StringFind(symbolsToWeigh, ","); 
      while (i != -1)
      {
         int size = ArraySize(symbolNames);

         ArrayResize(symbolNames, size + 1);

         symbolNames[size] = StringConcatenate(StringSubstr(symbolsToWeigh, 0, i), symbolExtraChars);

         symbolsToWeigh = StringSubstr(symbolsToWeigh, i + 1);
         i = StringFind(symbolsToWeigh, ","); 
      }
   }   

   symbolCount = ArraySize(symbolNames);

   for ( i = 0; i < symbolCount; i++ )
   {

      int currencyIndex = GetCurrencyIndex(StringSubstr(symbolNames[i], 0, 3));
      currencyOccurrences[currencyIndex]++;
      currencyIndex = GetCurrencyIndex(StringSubstr(symbolNames[i], 3, 3));
      currencyOccurrences[currencyIndex]++;
   }   

  if(autoTimeFrame)
  userTimeFrame = Period();
  else
  {
   if ( timeFrame == "H4" )
   userTimeFrame = PERIOD_H4;

   if ( timeFrame == "H1" )
   {
      userTimeFrame = PERIOD_H1;
   }
    if ( timeFrame == "D1" )
   {
      userTimeFrame = PERIOD_D1;
   }
   if ( timeFrame == "M30" )
   {
      userTimeFrame = PERIOD_M30; 
   }
    if ( timeFrame == "M15" )
   {
      userTimeFrame = PERIOD_M15; 
   }
   if ( timeFrame == "M5" )
   {
      userTimeFrame = PERIOD_M5;
   }
   if ( timeFrame == "M1" )
   {
      userTimeFrame = PERIOD_M1;
   }
   if ( userTimeFrame < Period() )
        {
      userTimeFrame = Period();
        }
  } 

      higherTimeFrame = PERIOD_D1;
   if ( Higher_TF == "W1" )
   {
      higherTimeFrame = PERIOD_W1;
   }
    if ( Higher_TF == "H4" )
   {
      higherTimeFrame = PERIOD_H4;
   }
    if ( Higher_TF == "H1" ) 

   {
      higherTimeFrame = PERIOD_H1; 
   }
   if ( Higher_TF == "M30" )
   {
      higherTimeFrame = PERIOD_M30;
   }

   if ( Higher_TF == "M15" )
   {
      higherTimeFrame = PERIOD_M15;
   }
   if ( Higher_TF == "M5" )
   {
      higherTimeFrame = PERIOD_M5;
   }
   return(0);
}

int GetCurrencyIndex(string currency)
{
   for (int i = 0; i < CURRENCYCOUNT; i++)
   {
      if (currencyNames[i] == currency)
      {
         return(i);
      }   
   }   
   return (-1);
}

void createSymbolNamesArray()
{
   int hFileName = FileOpenHistory ("symbols.raw", FILE_BIN|FILE_READ );
   int recordCount = FileSize ( hFileName ) / 1936;
   int counter = 0;
   for ( int i = 0; i < recordCount; i++ )
   {
      string tempSymbol = StringTrimLeft ( StringTrimRight ( FileReadString ( hFileName, 12 ) ) );
      if ( MarketInfo ( tempSymbol, MODE_BID ) > 0 && MarketInfo ( tempSymbol, MODE_TRADEALLOWED ) )
      {
         ArrayResize( symbolNames, counter + 1 );
         symbolNames[counter] = tempSymbol;
         counter++;
      }
      FileSeek( hFileName, 1924, SEEK_CUR );
   }
   FileClose( hFileName );
}

int deinit()
  {

   int windex = WindowFind ( shortName );
   if ( windex > 0 )
   {
      ObjectsDeleteAll ( windex );
   }   

   return(0);
  }

int start()
{
      // код доступен только после оплаты
   }
   int limit;
   int counted_bars = IndicatorCounted();

   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)  counted_bars -= 10;

   limit = Bars - counted_bars;

   if ( maxBars > 0 )
   {
      limit = MathMin (maxBars, limit);   
   }   

   int i, bar;
   datetime myTime;

   ArraySetAsSeries(arrAUD2, true);  
   ArraySetAsSeries(arrCAD2, true);
   ArraySetAsSeries(arrGBP2, true);
   ArraySetAsSeries(arrEUR2, true);
   ArraySetAsSeries(arrJPY2, true);
   ArraySetAsSeries(arrNZD2, true);
   ArraySetAsSeries(arrJPY2, true);
   ArraySetAsSeries(arrCHF2, true);

   RefreshRates();  

   for ( i = 0; i < limit; i++ )
      {      
      ArrayInitialize(currencyValues, 0.0);

      myTime=iTime(_Symbol, _Period, i);
      bar=iBarShift(_Symbol, userTimeFrame, myTime); 
      if(bar<0) bar=0;

      CalculateCurrencySlopeStrength(userTimeFrame, bar);

      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "USD" ) != -1 ) ) || ( !showOnlySymbolOnChart && USD ) )        
      {
         arrUSD[i] = currencyValues[0];

      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "EUR" ) != -1 ) ) || ( !showOnlySymbolOnChart && EUR ) )        
      {
         arrEUR[i] = currencyValues[1];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "GBP" ) != -1 ) ) || ( !showOnlySymbolOnChart && GBP ) )        
      {
         arrGBP[i] = currencyValues[2];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "CHF" ) != -1 ) ) || ( !showOnlySymbolOnChart && CHF ) )        
      {
         arrCHF[i] = currencyValues[3];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "JPY" ) != -1 ) ) || ( !showOnlySymbolOnChart && JPY ) )        
      {
         arrJPY[i] = currencyValues[4];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "AUD" ) != -1 ) ) || ( !showOnlySymbolOnChart && AUD ) )        
      {
         arrAUD[i] = currencyValues[5];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "CAD" ) != -1 ) ) || ( !showOnlySymbolOnChart && CAD ) )        
      {
         arrCAD[i] = currencyValues[6];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "NZD" ) != -1 ) ) || ( !showOnlySymbolOnChart && NZD ) )        
      {
         arrNZD[i] = currencyValues[7];
      }

      if ( i == 0 )
      {

         ShowCurrencyTable();
      }   
   }    
   for ( i = 0; i < limit; i++ )
      {      
      ArrayInitialize(currencyValues2, 0.0);

      myTime=iTime(_Symbol, _Period, i);
      bar=iBarShift(_Symbol, higherTimeFrame, myTime); 
      if(bar<0) bar=0;     

      CalculateCurrencySlopeStrength2(higherTimeFrame, bar);

      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "USD" ) != -1 ) ) || ( !showOnlySymbolOnChart && USD ) )        
      {
         arrUSD3[i] = currencyValues2[0];

      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "EUR" ) != -1 ) ) || ( !showOnlySymbolOnChart && EUR ) )        
      {
         arrEUR3[i] = currencyValues2[1];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "GBP" ) != -1 ) ) || ( !showOnlySymbolOnChart && GBP ) )        
      {
         arrGBP3[i] = currencyValues2[2];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Symbol(), "CHF" ) != -1 ) ) || ( !showOnlySymbolOnChart && CHF ) )        
      {
         arrCHF3[i] = currencyValues2[3];
      }
      if ( ( showOnlySymbolOnChart && ( StringFind ( Sym

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

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

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

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

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

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

Стоимость полного кода
2 343,80₽ ≈ $28.65