shved_supply_and_demand.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «shved_supply_and_demand.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор предназначен для платформы MetaTrader и отображает на графике зоны спроса и предложения, рассчитанные на основе анализа фрактальных точек цены. Он помогает визуально выявлять уровни, на которых цена ранее разворачивалась или тестировалась.
Зоны классифицируются по пяти уровням силы — от слабых до подтверждённых — и окрашиваются в соответствующие цвета. Индикатор рисует зоны в виде прямоугольников, растягивая их от точки возникновения до текущего бара.
Индикатор поддерживает настраиваемые оповещения: всплывающие уведомления и звуковые сигналы при входе цены в зону. Также доступна функция хранения данных о зонах в глобальных переменных терминала для использования в других инструментах.
В комплект входят настройки отображения фракталов, текстовых меток, цветов, толщины линий и параметров слияния перекрывающихся зон, что обеспечивает гибкую настройку визуального представления.
Настройки программы
| Настройка | Описание |
|---|---|
| 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 | Цвет переключённого сопротивления — Цвет зоны сопротивления, сменившей сторону. |
Поиск по коду файла
#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 Red
#property indicator_color2 Red
#property indicator_color3 DodgerBlue
#property indicator_color4 DodgerBlue
extern int BackLimit=1000;
extern string pus1="/////////////////////////////////////////////////";
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 string pus2="/////////////////////////////////////////////////";
extern bool fractals_show=false;
extern double fractal_fast_factor = 3.0;
extern double fractal_slow_factor = 6.0;
extern bool SetGlobals=true;
extern string pus3="/////////////////////////////////////////////////";
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 string pus4="/////////////////////////////////////////////////";
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 string pus5="/////////////////////////////////////////////////";
extern int Text_size=8;
extern string Text_font = "Courier New";
extern color Text_color = White;
extern string sup_name = "Sup";
extern string res_name = "Res";
extern string test_name= "Retests";
extern color color_support_weak = DarkSlateGray;
extern color color_support_untested = SeaGreen;
extern color color_support_verified = Green;
extern color color_support_proven = LimeGreen;
extern color color_support_turncoat = OliveDrab;
extern color color_resist_weak = Indigo;
extern color color_resist_untested = Orchid;
extern color color_resist_verified = Crimson;
extern color color_resist_proven = Red;
extern color color_resist_turncoat = DarkOrange;
double FastDnPts[],FastUpPts[];
double SlowDnPts[],SlowUpPts[];
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;
double ner_lo_zone_P1[];
double ner_lo_zone_P2[];
double ner_hi_zone_P1[];
double ner_hi_zone_P2[];
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;
else if(turned==false)
turned=true;
hasturned=true;
testcount=0;
}
}
if(isBust==false)
{
temp_hi[temp_count] = hival;
temp_lo[temp_count] = loval;
temp_turn[temp_count] = hasturned;
temp_hits[temp_count] = testcount;
temp_start[temp_count] = shift;
temp_merge[temp_count] = false;
if(testcount>3)
temp_strength[temp_count]=ZONE_PROVEN;
else if(testcount>0)
temp_strength[temp_count]=ZONE_VERIFIED;
else if(hasturned==true)
temp_strength[temp_count]=ZONE_TURNCOAT;
else if(isWeak==false)
temp_strength[temp_count]=ZONE_UNTESTED;
else
temp_strength[temp_count]=ZONE_WEAK;
temp_count++;
}
}
else if(FastDnPts[shift]>0.001)
{
isWeak=true;
if(SlowDnPts[shift]>0.001)
isWeak=false;
loval=Low[shift];
if(zone_extend==true)
loval-=fu;
hival=MathMin(MathMax(Close[shift],Low[shift]+fu),Low[shift]+fu*2);
turned=false;
hasturned=false;
bustcount = 0;
testcount = 0;
isBust=false;
for(i=shift-1; i>=0; i--)
{
if((turned==true && FastUpPts[i]>=loval && FastUpPts[i]<=hival) ||
(turned==false && FastDnPts[i]<=hival && FastDnPts[i]>=loval))
{
touchOk=true;
for(j=i+1; j<i+11; j++)
{
if((turned==true && FastUpPts[j]>=loval && FastUpPts[j]<=hival) ||
(turned=Показано первые 50% кода (символов: 15842)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.