Hull Master 22 Next MTF
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «hull master 22 next mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор Hull Master 22 Next MTF реализует скользящую среднюю Хала (Hull MA) с поддержкой мультитаймфрейма. Расчёт основан на линейно-взвешенной скользящей средней (LWMA) с настраиваемыми параметрами периода, скорости и сглаживания. Индикатор использует два буфера для отрисовки основной линии HMA и вспомогательных данных о тренде.
Поддерживается работа на более высоких таймфреймах относительно текущего графика. Доступна линейная и квадратичная интерполяция значений между барами мультитаймфрейма для более плавного отображения линии на графике.
При изменении направления тренда индикатор рисует цветные трендовые линии с настраиваемой толщиной и длиной. Реализована система уведомлений: всплывающие сообщения, звуковые сигналы и мобильные уведомления при переключении тренда.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм, на котором рассчитывается индикатор |
| TimeFrameAuto | Автоматический выбор следующего по иерархии таймфрейма для расчёта |
| Interpolate | Тип интерполяции значений между барами мультитаймфрейма |
| HMAPeriod | Основной период скользящей средней Хала |
| HMAPrice | Тип цены, используемый для расчёта индикатора |
| HMASpeed | Множитель для расчёта половинного периода скользящей средней |
| HMAHot | Множитель для расчёта периода скользящей средней Хала |
| HMAShift | Сдвиг индикатора в барах относительно графика |
| UniqueID | Уникальный идентификатор для именования объектов индикатора на графике |
| LinesNumber | Количество трендовых линий для отображения на графике |
| LinesShift | Сдвиг трендовых линий в барах |
| RayRight | Направление трендовых линий — вправо или в обе стороны |
| LinesSize | Толщина трендовых линий |
| ColorUP | Цвет линий тренда при восходящем направлении |
| ColorDN | Цвет линий тренда при нисходящем направлении |
| SIGNALBAR | Номер бара, на котором формируется сигнал о смене тренда |
| SoundFile | Путь к звуковому файлу для воспроизведения при уведомлениях |
Поиск по коду файла
#property description "Скользящая средняя Хала [HullMA] почти устраняет задержку в целом, и в то же самое"
#property description "время улучшает сглаживание. HullMA умеет не отставать от быстрых изменений ценовой"
#property description "динамики при наличии превосходного сглаживания SMA за тот же самый период."
#property version "3.39" //из "2.22"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrLimeGreen
#property indicator_color2 clrRed //Crimson
#property indicator_width1 2
#property indicator_width2 2
#property indicator_style1 STYLE_DOT
#property indicator_style2 STYLE_DOT
enum TFauto { OFF, /*switch OFF*/ TF1, /*+ 1 TimeFrame*/ TF2, /*+ 2 TimeFrame*/ TF3 /*+ 3 TimeFrame*/ };
enum Iterpolation { intNO, /*No interpolation*/ intLinear, /*Linear Interpolation*/ intQuad /*Quadratic Interpolation*/ };
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;
extern TFauto TimeFrameAuto = TF1; //OFF; //
extern Iterpolation Interpolate = intQuad; //true;
extern int HMAPeriod = 21;
extern ENUM_APPLIED_PRICE HMAPrice = PRICE_CLOSE;
extern double HMASpeed = 2.0;
extern double HMAHot = 1.0;
extern int HMAShift = 0; // Hull shift
extern string UniqueID = ""; //"Hull SupRes";
extern int LinesNumber = 12;
extern int LinesShift = -1;
extern bool RayRight = false;
extern int LinesSize = 2;
extern color ColorUP = clrAqua; //Blue;
extern color ColorDN = clrMagenta; //Black;
extern int SIGNALBAR = 1; //На каком баре сигналить....
extern bool AlertsMessage = true, //false,
AlertsSound = true, //false,
AlertsEmail = false,
AlertsMobile = false;
extern string SoundFile = "alert.wav"; //"news.wav"; //"expert.wav"; // //"stops.wav" //"alert2.wav" //
double hma[], hmada[], hmadb[], work[], trend[];
int HalfPeriod, HullPeriod, MTF, LSH, SGB, MAX;
string IndikName, PREF; bool returnBars; datetime TimeBar=0;
int init()
{
// код доступен только после оплаты
}
HMAPeriod = fmax(HMAPeriod,2);
HalfPeriod = floor(HMAPeriod/HMASpeed);
HullPeriod = floor(sqrt(HMAPeriod*HMAHot)); MAX = HMAPeriod+HalfPeriod+HullPeriod;
TimeFrame = fmax(TimeFrame,_Period); LSH = -LinesShift; SGB = SIGNALBAR;
if (TimeFrame>_Period) MTF = TimeFrame;
else
{
if (TimeFrameAuto==0) MTF=_Period;
if (TimeFrameAuto==1) MTF=NextHigherTF(_Period);
if (TimeFrameAuto==2) MTF=NextHigherTF(NextHigherTF(_Period));
if (TimeFrameAuto==3) MTF=NextHigherTF(NextHigherTF(NextHigherTF(_Period)));
}
IndikName = WindowExpertName();
returnBars = MTF==-99;
IndicatorBuffers(5);
SetIndexBuffer(0,hma); SetIndexLabel(0,stringMTF(MTF)+": HMA ["+(string)HMAPeriod+"*"+DoubleToStr(HMASpeed,1)+"*"+DoubleToStr(HMAHot,1)+"]");
SetIndexBuffer(1,hmada); SetIndexLabel(1,NULL);
SetIndexBuffer(2,hmadb); SetIndexLabel(2,NULL);
SetIndexBuffer(3,trend);
SetIndexBuffer(4,work);
for (int i=0; i<indicator_buffers; i++) //{
SetIndexStyle(i,DRAW_LINE);
IndicatorShortName(stringMTF(MTF)+": HMA M22 ["+(string)HMAPeriod+"*"+DoubleToStr(HMASpeed,1)+"*"+DoubleToStr(HMAHot,1)+"]");
if (UniqueID!="") PREF = UniqueID;
else PREF = stringMTF(MTF)+": HMA M22 ["+(string)HMAPeriod+"*"+DoubleToStr(HMASpeed,1)+"*"+DoubleToStr(HMAHot,1)+"] ";
return(0);
}
int deinit() { deleteLines(); Comment(""); return (0); }
void deleteLines()
{
string name;
for (int s=ObjectsTotal()-1; s>=0; s--) {
name=ObjectName(s);
if (StringSubstr(name,0,StringLen(PREF))==PREF) ObjectDelete(name); }
}
int start()
{
// код доступен только после оплаты
}
int i, CountedBars = IndicatorCounted();
if (CountedBars<0) return(-1);
if (CountedBars>0) CountedBars--;
int limit=fmin(Bars-CountedBars,Bars-1);
if (returnBars) { hma[0] = fmin(limit+1,Bars-1); return(0); }
for (i=0; i<5; i++) {
SetIndexEmptyValue(i,0.0); //--- значение 0 отображаться не будет
SetIndexEmptyValue(i,EMPTY_VALUE); //--- значение 0 отображаться не будет
SetIndexShift(i,HMAShift*MTF/_Period); //--- установка сдвига линий при отрисовке
SetIndexDrawBegin(i,MAX*1); } //--- пропуск отрисовки первых баров
if (MTF==_Period) //calculateValue ||
{
if (trend[limit]==-1) CleanPoint(limit,hmada,hmadb);
for (i=limit; i>=0; i--) work[i] = 2.0*iMA(NULL,0,HalfPeriod,0,MODE_LWMA,HMAPrice,i)-iMA(NULL,0,HMAPeriod,0,MODE_LWMA,HMAPrice,i);
for (i=limit; i>=0; i--)
{
hma[i] = iMAOnArray(work,0,HullPeriod,0,MODE_LWMA,i);
hmada[i] = EMPTY_VALUE;
hmadb[i] = EMPTY_VALUE;
trend[i] = trend[i+1];
if (hma[i] > hma[i+1]) trend[i] = 1;
if (hma[i] < hma[i+1]) trend[i] = -1;
if (trend[i] == -1) PlotPoint(i,hmada,hmadb,hma);
}
deleteLines();
if (LinesNumber>0)
{
int k = 0;
for (i=0; i<Bars && k<LinesNumber; i++)
if (trend[i]!=trend[i+1])
{
string name = PREF+TimeToStr(Time[i+LSH],TIME_DATE|TIME_MINUTES); //(string)Time[i];
ObjectCreate(name,OBJ_TREND,0,Time[i+LSH],hma[i+LSH],Time[i+LSH]+ PERIOD_D1*60,hma[i+LSH]);
ObjectSet(name,OBJPROP_SELECTABLE,false);
ObjectSet(name,OBJPROP_HIDDEN,true);
ObjectSet(name,OBJPROP_BAПоказано первые 50% кода (символов: 8512)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.