Shved Supply and Demand
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «! shved-supply-and-demand (mtf).mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает зоны спроса и предложения на основе быстрых и медленных фрактальных точек. Зоны отображаются на графике в виде прямоугольников и классифицируются по силе: слабые, ненатренированные, перевёрнутые, подтверждённые и доказанные. Поддерживается работа на разных таймфреймах (MTF).
При входе цены в зону индикатор способен выдавать оповещения — всплывающие окна и звуковые сигналы. Данные о зонах сохраняются в глобальных переменных терминала, что позволяет использовать их в других инструментах. Индикатор рисует объекты прямоугольников и текстовых меток на графике.
Включены настройки отображения фрактальных точек, объединения перекрывающихся зон, расширения зон и сдвига информационных меток. Цветовая палитра настраивается отдельно для зон поддержки и сопротивления каждого уровня силы.
Настройки программы
| Настройка | Описание |
|---|---|
| inpTimeFrame | Выбранный таймейф для анализа зон спроса и предложения (встроенный перечень таймфреймов). |
| inpTimeFrameCustom | Числовое значение пользовательского таймфрейма в минутах (используется при выборе пользовательского таймфрейма). |
| BackLimit | Глубина обратного анализа в барах для поиска зон спроса и предложения. |
| zone_show_weak | Включает отображение слабых зон с минимальной силой. |
| zone_show_untested | Включает отображение зон, которые ещё не были протестированы ценой. |
| zone_show_turncoat | Включает отображение перевёрнутых зон, сменивших сторону. |
| zone_fuzzfactor | Коэффициент размытия, определяющий величину расширения границ зон от ATR. |
| fractals_show | Включает или отключает отображение стрелок фрактальных точек на графике. |
| fractal_fast_factor | Множитель периода для расчёта быстрых фрактальных точек. |
| fractal_slow_factor | Множитель периода для расчёта медленных фрактальных точек. |
| SetGlobals | Включает сохранение данных зон в глобальные переменные терминала с префиксом SSSR. |
| zone_solid | Определяет стиль заливки прямоугольников зон: сплошная или контурная. |
| zone_linewidth | Толщина линий прямоугольников зон на графике. |
| zone_style | Стиль линий прямоугольников зон (сплошная, пунктир и т.д.). |
| zone_show_info | Включает отображение текстовых меток с информацией о зоне (тип, сила, количество тестов). |
| zone_label_shift | Сдвиг горизонтальной позиции текстовых меток зон на графике. |
| zone_merge | Включает автоматическое объединение перекрывающихся зон. |
| zone_extend | Включает расширение границ зон на основе коэффициента размытия. |
| zone_show_alerts | Включает или отключает систему оповещений при входе цены в зону. |
| zone_alert_popups | Включает всплывающие оконные оповещения при входе цены в зону. |
| zone_alert_sounds | Включает звуковой сигнал при входе цены в зону. |
| zone_alert_waitseconds | Минимальный интервал в секундах между последовательными оповещениями. |
| Text_size | Размер шрифта текстовых меток зон на графике. |
| Text_font | Шрифт текстовых меток зон на графике. |
| Text_color | Цвет текста информационных меток на графике. |
| sup_name | Текстовая метка для обозначения зон поддержки на графике. |
| res_name | Текстовая метка для обозначения зон сопротивления на графике. |
| test_name | Текстовая метка для обозначения количества тестов зоны. |
| color_support_weak | Цвет прямоугольника слабой зоны поддержки. |
| color_support_untested | Цвет прямоугольника зоны поддержки без тестов. |
| color_support_verified | Цвет прямоугольника зоны поддержки с подтверждённым уровнем. |
| color_support_proven | Цвет прямоугольника зоны поддержки с уровнем доказанного. |
| color_support_turncoat | Цвет прямоугольника зоны поддержки с перевёрнутым уровнем. |
| color_resist_weak | Цвет прямоугольника слабой зоны сопротивления. |
| color_resist_untested | Цвет прямоугольника зоны сопротивления без тестов. |
| color_resist_verified | Цвет прямоугольника зоны сопротивления с подтверждённым уровнем. |
| color_resist_proven | Цвет прямоугольника зоны сопротивления с уровнем доказанного. |
| color_resist_turncoat | Цвет прямоугольника зоны сопротивления с перевёрнутым уровнем. |
Поиск по коду файла
#property description "edited by eevviill"
#property description "on-off zones,build 600+,nearest zones in buffers"
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 clrRed
#property indicator_color2 clrRed
#property indicator_color3 clrDodgerBlue
#property indicator_color4 clrDodgerBlue
enum enTimeFrames
{
tf_cu = 0, // Current time frame
tf_m1 = PERIOD_M1, // 1 minute
tf_m5 = PERIOD_M5, // 5 minutes
tf_m15 = PERIOD_M15, // 15 minutes
tf_m30 = PERIOD_M30, // 30 minutes
tf_h1 = PERIOD_H1, // 1 hour
tf_h4 = PERIOD_H4, // 4 hours
tf_d1 = PERIOD_D1, // Daily
tf_w1 = PERIOD_W1, // Weekly
tf_mn1 = PERIOD_MN1, // Monthly
tf_n1 = -1, // First higher time frame
tf_n2 = -2, // Second higher time frame
tf_n3 = -3, // Third higher time frame
tf_cus = 12345678 // Custom time frame
};
input enTimeFrames inpTimeFrame = tf_cu; // Time frame to use
input int inpTimeFrameCustom = 0; // Custom time frame to use (if custom time frame used)
extern int BackLimit = 1000;
extern bool zone_show_weak = true;
extern bool zone_show_untested = true;
extern bool zone_show_turncoat = false;
extern double zone_fuzzfactor = 0.75;
extern bool fractals_show = false;
extern double fractal_fast_factor = 3.0;
extern double fractal_slow_factor = 6.0;
extern bool SetGlobals = true;
extern bool zone_solid = true;
extern int zone_linewidth = 1;
extern int zone_style = 0;
extern bool zone_show_info = true;
extern int zone_label_shift = 4;
extern bool zone_merge = true;
extern bool zone_extend = true;
extern bool zone_show_alerts = false;
extern bool zone_alert_popups = true;
extern bool zone_alert_sounds = true;
extern int zone_alert_waitseconds = 300;
extern int Text_size = 8;
extern string Text_font = "Courier New";
extern color Text_color = clrWhite;
extern string sup_name = "Sup";
extern string res_name = "Res";
extern string test_name = "Retests";
extern color color_support_weak = clrDarkSlateGray;
extern color color_support_untested = clrSeaGreen;
extern color color_support_verified = clrGreen;
extern color color_support_proven = clrLimeGreen;
extern color color_support_turncoat = clrOliveDrab;
extern color color_resist_weak = clrIndigo;
extern color color_resist_untested = clrOrchid;
extern color color_resist_verified = clrCrimson;
extern color color_resist_proven = clrRed;
extern color color_resist_turncoat = clrDarkOrange;
double FastDnPts[],FastUpPts[],SlowDnPts[],SlowUpPts[],count[];
double ner_lo_zone_P1[],ner_lo_zone_P2[],ner_hi_zone_P1[],ner_hi_zone_P2[];
double zone_hi[1000],zone_lo[1000];
int zone_start[1000],zone_hits[1000],zone_type[1000],zone_strength[1000],zone_count=0;
bool zone_turn[1000];
#define ZONE_SUPPORT 1
#define ZONE_RESIST 2
#define ZONE_WEAK 0
#define ZONE_TURNCOAT 1
#define ZONE_UNTESTED 2
#define ZONE_VERIFIED 3
#define ZONE_PROVEN 4
#define UP_POINT 1
#define DN_POINT -1
int time_offset=0;
struct sGlobalStruct
{
string indicatorFileName;
int indicatorTimeFrame;
int tfcustom;
};
sGlobalStruct global;
#define _mtfCall(_buff,_ind) iCustom(_Symbol,global.indicatorTimeFrame,global.indicatorFileName,tf_cu,0,BackLimit,zone_show_weak,zone_show_untested,zone_show_turncoat,zone_fuzzfactor,fractals_show,fractal_fast_factor,fractal_slow_factor,SetGlobals,zone_solid,zone_linewidth,zone_style,zone_show_info,zone_label_shift,zone_merge,zone_extend,zone_show_alerts,zone_alert_popups,zone_alert_sounds,zone_alert_waitseconds,Text_size,Text_font,Text_color,sup_name,res_name,test_name,color_support_weak,color_support_untested,color_support_verified,color_support_proven,color_support_turncoat,color_resist_weak,color_resist_untested,color_resist_verified,color_resist_proven,color_resist_turncoat,_buff,_ind)
int init()
{
// код доступен только после оплаты
}
int deinit()
{
DeleteZones();
DeleteGlobalVars();
return(0);
}
int start()
{
// код доступен только после оплаты
}
void CheckAlerts()
{
static int lastalert=0;
if(zone_show_alerts==false)
return;
if(Time[0]-lastalert>zone_alert_waitseconds)
if(CheckEntryAlerts()==true)
lastalert=Time[0];
}
bool CheckEntryAlerts()
{
for(int i=0; i<zone_count; i++)
{
if(Close[0]>=zone_lo[i] && Close[0]<zone_hi[i])
{
if(zone_show_alerts==true)
{
if(zone_alert_popups==true)
{
if(zone_type[i]==ZONE_SUPPORT)
Alert(_Symbol+timeFrameToString(_Period)+": Support Zone Entered");
else
Alert(_Symbol+timeFrameToString(_Period)+": Resistance Zone Entered");
}
if(zone_alert_sounds==true)
PlaySound("alert_wav");
}
return(true);
}
}
return(false);
}
void DeleteGlobalVars()
{
if(SetGlobals==false)
return;
GlobalVariableDel("SSSR_Count_"+Symbol()+Period());
GlobalVariableDel("SSSR_Updated_"+Symbol()+Period());
int old_count=zone_count;
zone_count=0;
DeleteOldGlobalVars(old_count);
}
void DeleteOldGlobalVars(int old_count)
{
if(SetGlobals==false)
return;
for(int i=zone_count; i<old_count; i++)
{
GlobalVariableDel("SSSR_HI_"+Symbol()+Period()+i);
GlobalVariableDel("SSSR_LO_"+Symbol()+Period()+i);
GlobalVariableDel("SSSR_HITS_"+Symbol()+Period()+i);
GlobalVariableDel("SSSR_STRENGTH_"+Symbol()+Period()+i);
GlobalVariableDel("SSSR_AGE_"+Symbol()+Period()+i);
}
}
void FindZones()
{
int i,j,shift,bustcount=0,testcount=0;
double hival,loval;
bool turned=false,hasturned=false;
double temp_hi[1000],temp_lo[1000];
int temp_start[1000],temp_hits[1000],temp_strength[1000],temp_count=0;
bool temp_turn[1000],temp_merge[1000];
int merge1[1000],merge2[1000],merge_count=0;
for(shift=MathMin(Bars-1,BackLimit); shift>5; shift--)
{
double atr= iATR(NULL,0,7,shift);
double fu = atr/2 * zone_fuzzfactor;
bool isWeak;
bool touchOk= false;
bool isBust = false;
if(FastUpPts[shift]>0.001)
{
isWeak=true;
if(SlowUpPts[shift]>0.001)
isWeak=false;
hival=High[shift];
if(zone_extend==true)
hival+=fu;
loval=MathMax(MathMin(Close[shift],High[shift]-fu),High[shift]-fu*2);
turned=false;
hasturned=false;
isBust=false;
bustcount = 0;
testcount = 0;
for(i=shift-1; i>=0; i--)
{
if((turned==false && FastUpPts[i]>=loval && FastUpPts[i]<=hival) ||
(turned==true && FastDnPts[i]<=hival && FastDnPts[i]>=loval))
{
touchOk=true;
for(j=i+1; j<i+11; j++)
{
if((turned==false && FastUpPts[j]>=loval && FastUpPts[j]<=hival) ||
(turned==true && FastDnPts[j]<=hival && FastDnPts[j]>=loval))
{
touchOk=false;
break;
}
}
if(touchOk==true)
{
bustcount=0;
testcount++;
}
}
if((turned==false && High[i]>hival) ||
(turned==true && Low[i]<loval))
{
bustcount++;
if(bustcount>1 || isWeak==true)
{
isBust=true;
break;
}
if(turned == true)
turned = false;
Показано первые 50% кода (символов: 18054)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.