XP Moving Average
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cheeta xpma.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
xpMA — это пользовательский индикатор для MetaTrader 4, рассчитывающий и отображающий на графике различные типы скользящих средних: SMA, EMA, SMMA, LWMA, DEMA, TEMA, T3MA, JMA, HMA, DECEMA и SALT. В зависимости от выбранного типа и параметров индикатор строит основную линию и сравнивает её со средним значением за заданный шаг, определяя направление тренда.
Индикатор использует четыре буфера: основной расчётный буфер, два буфера для фильтрации направления (верхнее/нижнее) и буфер сигналов. При пересечении значения скользящей средней с порогом расчёта отрисовываются стрелки вверх и вниз, а также генерируются всплывающие уведомления и email-оповещения.
Всплывающие и почтовые оповещения срабатывают не чаще одного раза при изменении бара. Включённый режим отладки делает снимки экрана с сохранением в файлы. Версия продукта отображается в виде метки на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Целочисленный параметр, задаёт таймфрейм, на котором выполняется расчёт индикатора (0 — текущий таймфрейм). |
| MA_Period | Период скользящей средней — Целочисленный параметр, задаёт период расчёта скользящей средней. |
| MA_Type | Тип скользящей средней — Целочисленный параметр, выбирает тип скользящей средней: SMA (0), EMA (1), SMMA (2), LWMA (3), DEMA (4), TEMA (5), T3MA (6), JMA (7), HMA (8), DECEMA (9), SALT (10). |
| MA_Applied | Применяемая цена — Целочисленный параметр, определяет тип цены, используемой при расчёте скользящей средней (Close, Open, High, Low, Median, Typical, Weighted). |
| T3MA_VolumeFactor | Коэффициент объёма T3MA — Числовой параметр (double), задаёт коэффициент объёма для расчёта индикатора T3MA при соответствующем типе скользящей средней. |
| JMA_Phase | Фаза JMA — Числовой параметр (double), задаёт фазу для расчёта индикатора JMA при соответствующем типе скользящей средней. |
| Step_Period | Период шага — Целочисленный параметр, задаёт количество последующих баров, используемых для расчёта сравнительного среднего значения при определении направления. |
| DebugMode | Режим отладки — Логический переключатель. При значении true при каждом запуске индикатора делает снимок экрана и сохраняет его в файл. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 Crimson
#property indicator_color3 Green
#define MODE_DEMA 4
#define MODE_TEMA 5
#define MODE_T3MA 6
#define MODE_JMA 7
#define MODE_HMA 8
#define MODE_DECEMA 9
#define MODE_SALT 10
/* Moving average types constants:
------------------------------------
MODE_SMA 0 Simple moving average,
MODE_EMA 1 Exponential moving average,
MODE_SMMA 2 Smoothed moving average,
MODE_LWMA 3 Linear weighted moving average.
MODE_DEMA 4 Double Exponential Moving Average.
MODE_TEMA 5 Triple Exponential Moving Average.
MODE_T3MA 6 T3 Moving Average.
MODE_JMA 7 Jurik Moving Average.
MODE_HMA 8 Hull Moving Average.
MODE_DECEMA 9 DECEMA Moving Average.
MODE_SALT 10 SALT Indicator.
------------------------------------*/
/* Applied price constants:
-------------------------------
PRICE_CLOSE 0 Close price.
PRICE_OPEN 1 Open price.
PRICE_HIGH 2 High price.
PRICE_LOW 3 Low price.
PRICE_MEDIAN 4 Median price, (high+low)/2.
PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.
--------------------------------- */
extern int TimeFrame = 0;
extern int MA_Period = 60;
extern int MA_Type = 3;
extern int MA_Applied = 4;
extern double T3MA_VolumeFactor = 0.8;
extern double JMA_Phase = 0;
extern int Step_Period = 4;
extern bool DebugMode = false;
bool Alert_On = true;
bool Arrows_On = true;
int UpArrowCode = 159;
int DownArrowCode = 159;
color UpArrowColor = Lime;
color DownArrowColor = Red;
int UpArrowSize = 1;
int DownArrowSize = 1;
bool Email_Alert = false;
string pro = "xpMA_v9";
string ver = "";
double UpBuffer[];
double DownBuffer[];
double Buffer3[];
double buffer[];
double tempbuffer[];
double matriple[];
double signal[];
int nShift;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteStamp();
DeleteAllObjects();
return(0);
}
void start()
{
// код доступен только после оплаты
}
StampVersion(pro,ver,5,20);
int limit;
int i = 0;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
switch (MA_Type)
{
case 0:
case 1:
case 2:
case 3:
{
for(i=0; i<limit; i++)
{
buffer[i] = iMA(NULL,TimeFrame,MA_Period,0,MA_Type,MA_Applied,i);
}
}
break;
case 4:
{
for(i=0; i<limit; i++)
{
tempbuffer[i] = iMA(NULL,TimeFrame,MA_Period,0,MODE_EMA,MA_Applied,i);
}
for(i=0; i<limit; i++)
{
matriple[i] = iMAOnArray(tempbuffer,0,MA_Period,0,MODE_EMA,i);
}
for(i=0; i<limit; i++)
{
buffer[i] = iMAOnArray(matriple,0,MA_Period,0,MODE_EMA,i);
}
}
break;
case 5:
{
for(i=0; i<limit; i++)
{
tempbuffer[i] = iMA(NULL,TimeFrame,MA_Period,0,MODE_EMA,MA_Applied,i);
}
for(i=0; i<limit; i++)
{
buffer[i] = iMAOnArray(tempbuffer,0,MA_Period,0,MODE_EMA,i);
}
}
break;
case 6:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,TimeFrame,"T3MA",MA_Period,T3MA_VolumeFactor,0,i);
}
}
break;
case 7:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,TimeFrame,"JMA",MA_Period,JMA_Phase,0,i);
}
}
break;
case 8:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,TimeFrame,"HMA",MA_Period,0,i);
}
}
break;
case 9:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,TimeFrame,"DECEMA_v1",MA_Period,MA_Applied,0,i);
}
}
break;
case 10:
{
for(i=0; i<limit; i++)
{
buffer[i] = iCustom(NULL,TimeFrame,"SATL",0,i);
}
}
break;
}
for(int shift=0; shift<limit; shift++)
{
UpBuffer[shift] = buffer[shift];
DownBuffer[shift] = buffer[shift];
Buffer3[shift] = buffer[shift];
}
/*for(shift=0; shift<limit; shift++)
{
if (buffer[shift]<buffer[shift+1])
{
UpBuffer[shift] = EMPTY_VALUE;
}
else if (buffer[shift]>buffer[shift+1] )
{
DownBuffer[shift] = EMPTY_VALUE;
}
else
{
UpBuffer[shift] = CLR_NONE;
DownBuffer[shift] = CLR_NONE;
}
}*/
for(shift=0; shift<limit; shift++)
{
double dMA = 0;
for(int k = shift+1; k <= shift+Step_Period; k++){
dMA += buffer[k];
}
dMA = dMA / Step_Period;
if (buffer[shift] < dMA)
{
UpBuffer[shift] = EMPTY_VALUE;
}
else if (buffer[shift]>dMA)
{
DownBuffer[shift] = EMPTY_VALUE;
}
else
{
UpBuffer[shift] = EMPTY_VALUE;
DownBuffer[shift] = EMPTY_VALUE;
}
}
for(shift=0; shift<limit; shift++)
{
signal[shift]=0;
if(UpBuffer[shift+1] == EMPTY_VALUE && UpBuffer[shift] != EMPTY_VALUE && Buffer3[shift+1] != UpBuffer[shift] )
{
if(Arrows_On && shift !=0) DrawObject(1,shift, buffer[shift] - nShift*Point);
if(Arrows_On && shift ==0) DrawOnce(1,shift, buffer[shift] - nShift*Point,1);
signal[shift] = 1;
}
if(DownBuffer[shift+1] == EMPTY_VALUE && DownBuffer[shift] != EMPTY_VALUE && Buffer3[shift+1] != DownBuffer[shift])
{
if(Arrows_On && shift !=0Показано первые 50% кода (символов: 9706)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.