TMA+CG
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «tma+cg mladen nrp.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
TMA+CG — это индикатор для MetaTrader 4, отображающий на графике треугольную скользящую среднюю (TMA) вместе с верхней и нижней полосами на основе отклонений. Индикатор рассчитывает значения TMA и полосы для текущего или указанного таймфрейма, при необходимости применяя интерполяцию между временными промежутками.
Верхняя и нижняя полосы отрисовываются отдельными линиями, а при пробое ценой этих уровней на графике появляются стрелки-метки. Индикатор поддерживает настраиваемые цвета и стили отображения линий TMA и полос.
Встроенная система уведомлений позволяет отправлять алерты в виде popup-сообщений, электронной почты или звуковых сигналов при достижении ценой заданных условий. Доступен выбор различных временных периодов и параметр чувствительности полос.
Индикатор работает в режиме без перерисовки и может функционировать как самостоятельно, так и вызывать собственные внутренние расчётные режимы через механизм iCustom.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | TimeFrame — Таймфрейм для расчёта индикатора (строковое значение) |
| HalfLength | HalfLength — Половина длины расчётного периода TMA |
| Price | Price — Тип цены для расчётов индикатора |
| BandsDeviations | BandsDeviations — Множитель отклонения для расчёта верхней и нижней полос |
| Interpolate | Interpolate — Переключатель интерполяции значений между таймфреймами |
| A1 | A1 — Текстовая метка для группы настроек стиля отображения |
| UpperBandColor | UpperBandColor — Цвет верхней полосы |
| BottomBandColor | BottomBandColor — Цвет нижней полосы |
| BandsLineWidth | BandsLineWidth — Толщина линий верхней и нижней полос |
| BandsLineStyle | BandsLineStyle — Стиль линий верхней и нижней полос |
| TMALineColor | TMALineColor — Цвет линии TMA |
| TMALineWidth | TMALineWidth — Толщина линии TMA |
| TMALineStyle | TMALineStyle — Стиль линии TMA |
| A2 | A2 — Текстовая метка для группы настроек уведомлений |
| alertsOn | alertsOn — Общий переключатель включения уведомлений |
| alertsOnCurrent | alertsOnCurrent — Переключатель уведомлений для текущей свечи |
| alertsOnHighLow | alertsOnHighLow — Переключатель: проверка пробоя по максимуму/минимуму вместо закрытия |
Поиск по коду файла
#property description "edited by eevviill"
#property description "no repaint"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color4 clrWhite
#property indicator_color5 clrWhite
extern string TimeFrame = "current time frame";
extern int HalfLength = 55;
extern int Price = PRICE_WEIGHTED;
extern double BandsDeviations = 2.618;
extern bool Interpolate = true;
extern string A1 = "******** Style ********";
extern color UpperBandColor = clrRed;
extern color BottomBandColor = clrLime;
extern int BandsLineWidth = 15;
extern int BandsLineStyle = 0;
extern color TMALineColor = clrWhite;
extern int TMALineWidth = 1;
extern int TMALineStyle = 2;
extern string A2 = "******** Alerts ********";
extern bool alertsOn = false;
extern bool alertsOnCurrent = false;
extern bool alertsOnHighLow = false;
bool alertsMessage = false;
bool alertsSound = false;
bool alertsEmail = false;
double tmBuffer[];
double upBuffer[];
double dnBuffer[];
double wuBuffer[];
double wdBuffer[];
double upArrow[];
double dnArrow[];
string IndicatorFileName;
bool calculatingTma = false;
bool returningBars = false;
int timeFrame;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=MathMin(Bars-1,Bars-counted_bars+HalfLength);
if (returningBars) { tmBuffer[0] = limit; return(0); }
if (calculatingTma) { calculateTma(limit); return(0); }
if (timeFrame > Period()) limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,IndicatorFileName,"returnBars",0,0)*timeFrame/Period()));
if(limit<Bars-20) limit=1;
for(i = limit; i >= 0; i--)
{
int shift1 = iBarShift(NULL,timeFrame,Time[i]);
datetime time1 = iTime (NULL,timeFrame,shift1);
tmBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,0,shift1);
upBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,1,shift1);
dnBuffer[i] = iCustom(NULL,timeFrame,IndicatorFileName,"calculateTma",HalfLength,Price,BandsDeviations,2,shift1);
upArrow[i] = EMPTY_VALUE;
dnArrow[i] = EMPTY_VALUE;
if (High[i+1]>upBuffer[i+1] && Close[i+1]>Open[i+1] && Close[i]<Open[i]) upArrow[i] = High[i]+iATR(NULL,0,20,i);
if ( Low[i+1]<dnBuffer[i+1] && Close[i+1]<Open[i+1] && Close[i]>Open[i]) dnArrow[i] = High[i]-iATR(NULL,0,20,i);
if (timeFrame <= Period() || shift1==iBarShift(NULL,timeFrame,Time[i-1])) continue;
if (!Interpolate) continue;
for(int n = 1; i+n < Bars && Time[i+n] >= time1; n++) continue;
double factor = 1.0 / n;
for(int k = 1; k < n; k++)
{
tmBuffer[i+k] = k*factor*tmBuffer[i+n] + (1.0-k*factor)*tmBuffer[i];
upПоказано первые 50% кода (символов: 5971)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.