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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.