1VS_ChannelTrend_V1.0
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «vs_channeltrend_v1.0.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
1VS_ChannelTrend_V1.0 — это пользовательский индикатор для MetaTrader 4, который анализирует ценовые данные и отображает на графике трендовые и канальные линии. Индикатор определяет восходящие и нисходящие тренды, начиная с заданного бара, и рисует сплошные трендовые линии, а также пунктирные линии каналов, параллельные тренду.
При появлении нового бара или изменении точки старта анализа индикатор пересчитывает и перерисовывает все линии. Также опционально отрисовываются дополнительные внутренние трендовые линии внутри обнаруженных каналов. В углу графика отображается количество найденных восходящих и нисходящих трендов.
Все созданные графические объекты (трендовые линии, метки) удаляются при деинициализации индикатора. Индикатор работает в основном окне графика и использует стандартные объекты OBJ_TREND и OBJ_LABEL для визуализации.
Настройки программы
| Настройка | Описание |
|---|---|
| ????????? ??? ?????????? ????? ( ?????????? ???????????? ????? StartTL ) (FirstBar) | FirstBar — Номер бара, с которого начинается анализ ценовых данных для построения трендов. |
| ??????????? ?????? ????? ? ????? (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 и перейдите к оплате.