1VS_ChanelTrend_V1.0
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «vs-channel-trend.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор 1VS_ChanelTrend_V1.0 предназначен для визуального анализа трендов и каналов на графике цены в MetaTrader 4. Он строит трендовые линии вверх и вниз на основе значимых точек цены (Low для восходящих, High для нисходящих), начиная с заданного бара, а также параллельные канальные линии пунктиром. При включённой опции отображаются дополнительные внутренние трендовые линии внутри выявленных каналов.
Параметр FirstBar задаёт начальный бар для расчёта трендовых линий. DeltaBar определяет минимальное количество баров между соседними трендовыми линиями, отфильтровывая короткие участки. InsLine включает или отключает отрисовку внутренних трендовых линий внутри каналов.
Все графические объекты (трендовые линии, канальные линии, подписи) создаются на чарте и удаляются при деинициализации индикатора. Продукт не содержит торговой логики и является исключительно инструментом визуального анализа.
Настройки программы
| Настройка | Описание |
|---|---|
| ????????? ??? ?????????? ????? ( ?????????? ???????????? ????? StartTL ) (FirstBar) | FirstBar — Номер бара, с которого начинается расчёт трендовых линий и построение начальной вертикальной отметки StartTL. |
| ??????????? ?????? ????? ? ????? (DeltaBar) | DeltaBar — Минимальное количество баров между соседними трендовыми линиями. Отфильтровывает короткие участки, не формирующие значимую линию. |
| ?????? ??? ??? ?????????????? ?????????? ????? ????????? ? ????????????? (InsLine) | InsLine — Переключатель отображения дополнительных внутренних трендовых линий внутри построенных каналов. |
Поиск по коду файла
#property indicator_chart_window
extern int FirstBar = 1; // ????????? ??? ?????????? ????? ( ?????????? ???????????? ????? StartTL )
extern int DeltaBar = 3; // ??????????? ?????? ????? ? ?????
extern bool InsLine = true; // ?????? ??? ??? ?????????????? ?????????? ????? ????????? ? ?????????????
color ColorTL_U = Blue,
ColorTL_D = Red,
ColorCH_U = Blue,
ColorCH_D = Red,
ColorTR_U = Green,
ColorTR_D = Violet;
string NameTL_U = "Up_",
NameTL_D = "Dn_",
NameCH_U = "UpZ_",
NameCH_D = "DnZ_",
NameTR_U = "UpTr_",
NameTR_D = "DnTr_";
int last_bar = 0,
cntLine = 1, // ????? ????????? ?????
Line_U[100][2], // ?????? ????????? ????????? ????? . ?????? ????? ????? ???? ??????
Line_D[100][2], // ?????? ????????? ????????? ????? . ?????? ????? ????? ???? ??????
LineI_U[100][2], // ?????? ????????? ?????????? ????????? ????? . ?????? ????? ????? ???? ??????
LineI_D[100][2], // ?????? ????????? ?????????? ????????? ????? . ?????? ?????? ????? ???? ??????
LineShow_U[100][2], // ?????? ????????? ???????????? ????????? ????? . ?????? ?????? ????? ???? ?????? - ???????????? Line_U[100][2]
LineShow_D[100][2]; // ?????? ????????? ???????????? ????????? ????? . ?????? ?????? ????? ???? ?????? - ???????????? Line_D[100][2]
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("StartTL");
DeleteTrendLine( NameTL_U, 100);
DeleteTrendLine( NameTL_D, 100);
DeleteTrendLine( NameCH_U, 100);
DeleteTrendLine( NameCH_D, 100);
DeleteTrendLine( NameTR_U, 100);
DeleteTrendLine( NameTR_D, 100);
ObjectDelete("MyLabel_D");
ObjectDelete("MyLabel_U");
return(0);
}
int start()
{
// код доступен только после оплаты
}
void Draw_TL ()
{
int i,
j,
MaxTL,Bar2;
double Bar1_Value,
Bar2_Value,
Bar0_Value;
FirstBar=iBarShift(Symbol(),Period(), ObjectGet("StartTL",0), FALSE);
DeleteTrendLine( NameTL_U, 100);
DeleteTrendLine( NameTL_D, 100);
DeleteTrendLine( NameCH_U, 100);
DeleteTrendLine( NameCH_D, 100);
DeleteTrendLine( NameTR_U, 100);
DeleteTrendLine( NameTR_D, 100);
Line_U[0,0]=FirstBar; // ?????? ??? ?????? ????????? ????? Up
Line_U[0,1]=FindPoint(Line_U[0,0],Bars,1); // ?????? ??? ?????? ????????? ????? Up
Line_D[0,0]=FirstBar; // ?????? ??? ?????? ????????? ????? Down
Line_D[0,1]=FindPoint(Line_D[0,0],Bars,-1); // ?????? ??? ?????? ????????? ????? Down
i=0;
while ( Line_U[i,1] > Line_U[i,0] ) // ???? ??????? ????????? ????? ??????? ?? ?????????? ? ?????? Line
{
i++;
Line_U[i,0]=Line_U[i-1,1];
Line_U[i,1]=FindPoint(Line_U[i,0],Bars,1);
}
MaxTL=i-1;
cntLine=0;
j=0;
for (i=0; i<=MaxTL; i++) // ?? ???????????? ??????? ???????? ??????? ????????? ??????
{
if(Line_U[i,1]-Line_U[i,0] >=DeltaBar )
{
cntLine++;
LineShow_U[j,0]=Line_U[i,0]; // ????????? ?????? ? ?????????????? ?????????? ???????. 1 ??????????
LineShow_U[j,1]=Line_U[i,1]; // ????????? ?????? ? ?????????????? ?????????? ???????. 2 ??????????
j++;
CreateLine(NameTL_U+cntLine,Time[Line_U[i,1]], Low[ Line_U[i,1] ],Time[Line_U[i,0]],Low[ Line_U[i,0] ],ColorTL_U,STYLE_SOLID);
Bar2=DrawLine (NameTL_U+cntLine, Line_U[i,1], Line_U[i,0], 1); // ??????? ??? ?????????????? ????? ??????
Bar2_Value=ObjectGetValueByShift(NameTL_U+cntLine, Bar2); // ???????? ????? ????
Bar0_Value=Low[ Line_U[i,0] ]+(High[ Bar2 ]-Bar2_Value ); // ??????? ????? ?????? ?????? ? ?????? ?????
CreateLine(NameCH_U+cntLine,Time[Line_U[i,1]], Low[ Line_U[i,1] ]+(High[ Bar2 ]-Bar2_Value ), Time[Line_U[i,0]],Bar0_Value,ColorCH_U,STYLE_DASH);
ObjectSet (NameCH_U+cntLine,OBJPROP_RAY,false);
}
}
ObjectSetText("MyLabel_U", "Up= "+ cntLine, 12, "Times New Roman", Blue);
if (InsLine==true)
{
int Bar_1,Bar_2;
MaxTL=j;
for(j=0; j<MaxTL; j++)
{
Bar_1=iHighest(Symbol(),Period(),MODE_HIGH,LineShow_U[j][1]-LineShow_U[j][0],LineShow_U[j][0]); //?????? ???. ?????????, ??? ???????????? ?? ?????? ??????.
Bar_2=LineShow_U[j,1]; // ?????? ??? ????????? ?????? ??? ?????? ????????? ????? Up
LineI_U[0,0]=Bar_1; //?????? ??? ????????? ?????. ????????? ??? Показано первые 50% кода (символов: 8236)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.