Traders Dynamic CB SSA Norm Index
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «traders dynamic cb_ssa norm index-alerts+arrows(1).mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, отображаемый в отдельном окне. Основан на сингулярном спектральном анализе (SSA), реализованном через внешнюю DLL-библиотеку libSSA.dll. Исходные данные нормализуются по скользящему среднему и стандартному отклонению, после чего применяется SSA-преобразование с заданными параметрами лага и числа вычислений.
Результат SSA обрабатывается аналогами RSI (ценовая и сигнальная линии) и волатильности (скользящие средние и доверительные полосы). Тренд определяется сравнением RSI-линий: направление меняется при пересечении сигнальной линии ценовой. На графике отображаются доверительные полосы, уровни и стрелки при смене тренда.
Индикатор поддерживает систему уведомлений: всплывающие сообщения, звуковые сигналы и email-оповещения при смене направления тренда. Доступна интерполяция значений между таймфреймами для сглаживания отображения.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для анализа |
| SSAPrice | Цена SSA — Тип цены для SSA-расчётов |
| SSALag | Лаг SSA — Лаг параметр для SSA-преобразования |
| SSANumberOfComputations | Число вычислений SSA — Количество циклов вычислений для SSA |
| SSAPeriodNormalization | Период нормализации SSA — Период нормализации при расчёте SSA |
| SSANumberOfBars | Число баров SSA — Количество баров для SSA-вычислений |
| RsiPriceLinePeriod | Период RSI ценовой линии — Период RSI ценовой линии |
| RsiPriceLineMAMode | Метод MA RSI ценовой линии — Метод усреднения для RSI ценовой линии |
| RsiSignalLinePeriod | Период RSI сигнальной линии — Период RSI сигнальной линии |
| RsiSignalLineMAMode | Метод MA RSI сигнальной линии — Метод усреднения для RSI сигнальной линии |
| VolatilityBandPeriod | Период волатильности — Период волатильности |
| VolatilityBandMAMode | Метод MA волатильности — Метод усреднения для волатильности |
| ConfidenceLevel | Уровень доверия — Уровень доверия для расчёта доверительных полос |
| ConfidenceBandsShift | Сдвиг доверительных полос — Сдвиг доверительных полос в барах |
| LevelDown | Уровень вниз — Нижний уровень отображения |
| LevelMiddle | Уровень середина — Средний уровень отображения |
| LevelUp | Уровень вверх — Верхний уровень отображения |
| Interpolate | Интерполяция — Включает интерполяцию значений между таймфреймами |
| _ | Разделитель настроек — Разделитель блока настроек уведомлений |
| alertsOn | Уведомления включены — Включение всей системы уведомлений |
| alertsOnCurrent | На текущий бар — Уведомления по текущему бару вместо предыдущего |
| alertsMessage | Сообщения — Всплывающие сообщения при смене тренда |
| alertsSound | Звуковые сигналы — Звуковой сигнал при смене тренда |
| alertsEmail | Email-уведомления — Отправка email-уведомлений при смене тренда |
| ShowArrows | Показывать стрелки — Отображение стрелок на графике при смене тренда |
| arrowsIdentifier | Идентификатор стрелок — Идентификатор объектов стрелок на графике |
| arrowsUpColor | Цвет стрелки вверх — Цвет стрелки при восходящем тренде |
| arrowsDnColor | Цвет стрелки вниз — Цвет стрелки при нисходящем тренде |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 MediumSeaGreen
#property indicator_color2 MediumSeaGreen
#property indicator_color3 DeepSkyBlue
#property indicator_color4 Red
#property indicator_style4 STYLE_DASH
#property indicator_width3 1
#property indicator_levelcolor MediumOrchid
#import "libSSA.dll"
void fastSingular(double& sourceArray[],int arraySize, int lag, int numberOfComputationLoops, double& destinationArray[]);
#import
extern string TimeFrame = "Current time frame";
extern int SSAPrice = PRICE_CLOSE;
extern int SSALag = 10;
extern int SSANumberOfComputations = 2;
extern int SSAPeriodNormalization = 20;
extern int SSANumberOfBars = 500;
extern int RsiPriceLinePeriod = 2;
extern int RsiPriceLineMAMode = MODE_LWMA;
extern int RsiSignalLinePeriod = 7;
extern int RsiSignalLineMAMode = MODE_LWMA;
extern int VolatilityBandPeriod = 10;
extern int VolatilityBandMAMode = MODE_LWMA;
extern double ConfidenceLevel = 98;
extern int ConfidenceBandsShift = 0;
extern double LevelDown = -0.40;
extern double LevelMiddle = 0.0;
extern double LevelUp = 0.40;
extern bool Interpolate = true;
extern string _ = "alerts settings";
extern bool alertsOn = true;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern bool ShowArrows = true;
extern string arrowsIdentifier = "tdi ssa arrows";
extern color arrowsUpColor = LimeGreen;
extern color arrowsDnColor = Red;
double bandUp[];
double bandDown[];
double rsiPriceLine[];
double rsiSignalLine[];
double in[];
double no[];
double avg[];
double trend[];
double ssaIn[];
double ssaOut[];
string indicatorFileName;
bool calculateValue;
bool returnBars;
int timeFrame;
double ConfidenceZ;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
if (!calculateValue && ShowArrows) deleteArrows();
return(0);
}
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,j,n,k,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { bandUp[0] = limit+1; return(0); }
if (calculateValue || timeFrame == Period())
{
int ssaBars = MathMin(Bars-1,SSANumberOfBars);
for(i=limit; i>=0; i--)
{
double ma = iMA(NULL,0,SSAPeriodNormalization,0,MODE_SMA,SSAPrice,i);
double dev = iStdDev(NULL,0,SSAPeriodNormalization,0,MODE_SMA,SSAPrice,i)*3.0;
double price = iMA(NULL,0,1,0,MODE_SMA,SSAPrice,i);
no[i] = (price-ma)/(MathMax(dev,0.000001));
if (ArraySize(ssaIn) != ssaBars)
{
ArrayResize(ssaIn ,ssaBars);
ArrayResize(ssaOut,ssaBars);
}
ArrayCopy(ssaIn,no,0,0,ssaBars);
fastSingular(ssaIn,ssaBars,SSALag,SSANumberOfComputations,ssaOut);
ArrayCopy(in,ssaOut);
}
for (i=limit-1; i>=0; i--)
{
rsiPriceLine[i] = iMAOnArray(in,0, RsiPriceLinePeriod, 0, RsiPriceLineMAMode, i);
rsiSignalLine[i] = iMAOnArray(in,0, RsiSignalLinePeriod, 0, RsiSignalLineMAMode, i);
avg[i] = iMAOnArray(in,0, VolatilityBandPeriod,0, VolatilityBandMAMode,i);
double deviation = iDeviation(in,VolatilityBandPeriod,avg[i+ConfidenceBandsShift],i+ConfidenceBandsShift);
double me = ConfidenceZ*deviation/MathSqrt(VolatilityBandPeriod);
bandUp[i] = avg[i+ConfidenceBandsShift] + me;
bandDown[i] = avg[i+ConfidenceBandsShift] - me;
trend[i] = trend[i+1];
if (rsiPriceLine[i] > rsiSignalLine[i]) trend[i]= 1;
if (rsiPriceLine[i] < rsiSignalLine[i]) trend[i]=-1;
if (!calculateValue) manageArrow(i);
}
manageAlerts();
return (0);
}
limit = MathMin(Bars,SSANumberOfBars*timeFrame/Period());
for (i=limit;i>=0;i--)
{
int y = iBarShift(NULL,timeFrame,Time[i]);
bandUp[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",SSAPrice,SSALag,SSANumberOfComputations,SSAPeriodNormalization,SSANumberOfBars,RsiPriceLinePeriod,RsiPriceLineMAMode,RsiSignalLinePeriod,RsiSignalLineMAMode,VolatilityBandPeriod,VolatilityBandMAMode,ConfidenceLevel,ConfidenceBandsShift,0,y);
bandDown[i] = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",SSAPrice,SSALag,SSANumberOfComputations,SSAPeriodNormalization,SSANumberOfBars,RsiPriceLinePeriod,RsiPriceLineMAMode,RsiSignalLiПоказано первые 50% кода (символов: 8973)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.