Помогите, пожалуйста, при наличии у вас времени подправить код индикатора.Индикатор отрисовывает заданное количестволиний хай-лоу дней, недель и месяцев, не пересеченных ценой на момент закрытия дневной свечи. На текущей дневной свече линии хай-лоу пересеченные ценой остаются на месте. И только на первом тике дневной свечи происходит перерисовка линий и остаются только линии не «тронутой» ценой. Если в советнике данный код у меня работает, то в индикаторе на первом тике дневной свечи перерисовки не происходит.
С уважением, Вячеслав.
//+------------------------------------------------------------------+//| HL_LEVEL.mq4 |//+------------------------------------------------------------------+#property copyright"kochegarov.vm"#property link"kochegarov.vm@mail.ru"#property indicator_chart_windowexternstring General = "//////////////////////////////////////////";
externint TimeFrame = 0;
externbool Ray = true;
externstring D1_Settings = "//////////////////////////////////////////";
externint Lines_D1 = 22;
externcolor ColorHigh_D1 = clrRed;
externcolor ColorLow_D1 = clrBlue;
externint LineStyle_D1 = 0;
externint LineWidth_D1 = 1;
externstring W1_Settings = "//////////////////////////////////////////";
externint Lines_W1 = 52;
externcolor ColorHigh_W1 = clrMagenta;
externcolor ColorLow_W1 = clrDeepSkyBlue;
externint LineStyle_W1 = 0;
externint LineWidth_W1 = 2;
externstring MN_Settings = "//////////////////////////////////////////";
externint Lines_MN = 12;
externcolor ColorHigh_MN = clrRed;
externcolor ColorLow_MN = clrBlue;
externint LineStyle_MN = 0;
externint LineWidth_MN = 3;
//+----------------------------------------------------------------------------+int jMax = 0;
double D1_h[], D1_l[], W1_h[], W1_l[], MN_h[], MN_l[];
datetime D1ts[], D1te[], W1ts[], W1te[], MNts[], MNte[];
datetime LastTime=0;
bool New_Bar=false;
//+----------------------------------------------------------------------------+int init()
{
ArrayResize(D1_h,Lines_D1+1); ArrayResize(D1_l,Lines_D1+1); ArrayResize(D1ts,Lines_D1+1); ArrayResize(D1te,Lines_D1+1);
ArrayResize(W1_h,Lines_W1+1); ArrayResize(W1_l,Lines_W1+1); ArrayResize(W1ts,Lines_W1+1); ArrayResize(W1te,Lines_W1+1);
ArrayResize(MN_h,Lines_MN+1); ArrayResize(MN_l,Lines_MN+1); ArrayResize(MNts,Lines_MN+1); ArrayResize(MNte,Lines_MN+1);
jD1(Lines_D1+1);
jW1(Lines_W1+1);
jMN(Lines_MN+1);
/*
int x=0;
ObjectDelete("D1_High_"+x);
ObjectDelete("D1_Low_"+x);
ObjectDelete("W1_High_"+x);
ObjectDelete("W1_Low_"+x);
ObjectDelete("MN_High_"+x);
ObjectDelete("MN_Low_"+x);
*/return(0);
}
//+----------------------------------------------------------------------------+int deinit()
{
rLines(jMax+1);
return(0);
}
//+----------------------------------------------------------------------------+int start()
{
//-----------------
New_Bar=false;
if(LastTime<iTime(Symbol(),PERIOD_D1,0))
{
LastTime=iTime(Symbol(),PERIOD_D1,0);
New_Bar=true;
}
//-----------------if(DayOfWeek()==0 || DayOfWeek()==6) return(0);
if(New_Bar==true)
{
int counted_bars = IndicatorCounted();
int limit;
//---- последний посчитанный бар будет пересчитан if(counted_bars>0) counted_bars--;
limit=iBars(Symbol(),PERIOD_D1)-counted_bars;
//---- основной цикл for(int x=1; x<limit; x++)
{
rLines(x);
D1_h[x]=iHigh(Symbol(),1440,x); D1_l[x]=iLow(Symbol(),1440,x);
W1_h[x]=iHigh(Symbol(),10080,x); W1_l[x]=iLow(Symbol(),10080,x);
MN_h[x]=iHigh(Symbol(),43200,x); MN_l[x]=iLow(Symbol(),43200,x);
D1ts[x]=iTime(Symbol(),1440,x); D1te[x]=Time[0];
W1ts[x]=iTime(Symbol(),10080,x); W1te[x]=Time[0];
MNts[x]=iTime(Symbol(),43200,x); MNte[x]=Time[0];
}
jD1(Lines_D1+1);
jW1(Lines_W1+1);
jMN(Lines_MN+1);
}
return(0);
}
//+----------------------------------------------------------------------------+void jD1(int Count)
{
for (int x=1; x<Count; x++)
{
int nb1=iBarShift(NULL,0, D1ts[x],false);
int nb2=iBarShift(NULL,0, D1te[x],false);
double up=High[iHighest(NULL,0, MODE_HIGH, nb1-nb2, nb2)];
double dn=Low [iLowest(NULL,0, MODE_LOW, nb1-nb2, nb2)];
if(LineStyle_D1>0) LineWidth_D1=1;
SetTLine(ColorHigh_D1,"D1_High_"+x,iTime(NULL,PERIOD_D1,x),D1_h[x],Time[0],D1_h[x],Ray,LineStyle_D1,LineWidth_D1);
if(up>D1_h[x]) {ObjectDelete("D1_High_"+x);}
SetTLine(ColorLow_D1,"D1_Low_"+x,iTime(NULL,PERIOD_D1,x),D1_l[x],Time[0],D1_l[x],Ray,LineStyle_D1,LineWidth_D1);
if(dn<D1_l[x]) {ObjectDelete("D1_Low_"+x);}
}
}
//+----------------------------------------------------------------------------+void jW1(int Count)
{
for (int x=1; x<Count; x++)
{
int nb1=iBarShift(NULL,0, W1ts[x],false);
int nb2=iBarShift(NULL,0, W1te[x],false);
double up=High[iHighest(NULL,0, MODE_HIGH, nb1-nb2, nb2)];
double dn=Low [iLowest(NULL,0, MODE_LOW, nb1-nb2, nb2)];
if(LineStyle_W1>0) LineWidth_W1=1;
SetTLine(ColorHigh_W1,"W1_High_"+x,iTime(NULL,PERIOD_W1,x),W1_h[x],Time[0],W1_h[x],Ray,LineStyle_W1,LineWidth_W1);
if(up>W1_h[x]) {ObjectDelete("W1_High_"+x);}
SetTLine(ColorLow_W1,"W1_Low_"+x,iTime(NULL,PERIOD_W1,x),W1_l[x],Time[0],W1_l[x],Ray,LineStyle_W1,LineWidth_W1);
if (dn<W1_l[x]) {ObjectDelete("W1_Low_"+x);}
}
}
//+----------------------------------------------------------------------------+void jMN(int Count)
{
for (int x=1; x<Count; x++)
{
int nb1=iBarShift(NULL,0, MNts[x],false);
int nb2=iBarShift(NULL,0, MNte[x],false);
double up=High[iHighest(NULL,0, MODE_HIGH, nb1-nb2, nb2)];
double dn=Low [iLowest(NULL,0, MODE_LOW, nb1-nb2, nb2)];
if(LineStyle_MN>0) LineWidth_MN=1;
SetTLine(ColorHigh_MN,"MN_High_"+x,iTime(NULL,PERIOD_MN1,x),MN_h[x],Time[0],MN_h[x],Ray,LineStyle_MN,LineWidth_MN);
if(up>MN_h[x]) {ObjectDelete("MN_High_"+x);}
SetTLine(ColorLow_MN,"MN_Low_"+x,iTime(NULL,PERIOD_MN1,x),MN_l[x],Time[0],MN_l[x],Ray,LineStyle_MN,LineWidth_MN);
if (dn<MN_l[x]) {ObjectDelete("MN_Low_"+x);}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_TREND трендовая линия |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10] |//| p1 - ценовой уровень ( 0 - Low[10]) |//| t2 - время открытия бара ( 0 - текущий бар) |//| p2 - ценовой уровень ( 0 - Bid) |//| ry - луч (False - не луч) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+void SetTLine(color cl, string nm="",
datetime t1=0, double p1=0, datetime t2=0, double p2=0,
bool ry=False, int st=0, int wd=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[10];
if (p1<=0) p1=Low[10];
if (t2<=0) t2=Time[0];
if (p2<=0) p2=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, 0, 0,0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1, p1);
ObjectSet(nm, OBJPROP_TIME2 , t2);
ObjectSet(nm, OBJPROP_PRICE2, p2);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_RAY , ry);
ObjectSet(nm, OBJPROP_STYLE , st);
ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+------------------------------------------------------------------+void rLines(int Count)
{
for (int x=1; x<Count; x++)
{
ObjectDelete("D1_High_"+x);
ObjectDelete("D1_Low_"+x);
ObjectDelete("W1_High_"+x);
ObjectDelete("W1_Low_"+x);
ObjectDelete("MN_High_"+x);
ObjectDelete("MN_Low_"+x);
}
}
//+------------------------------------------------------------------+
Помогите, пожалуйста, при наличии у вас времени подправить код индикатора.Индикатор отрисовывает заданное количестволиний хай-лоу дней, недель и месяцев, не пересеченных ценой на момент закрытия дневной свечи. На текущей дневной свече линии хай-лоу пересеченные ценой остаются на месте. И только на первом тике дневной свечи происходит перерисовка линий и остаются только линии не «тронутой» ценой. Если в советнике данный код у меня работает, то в индикаторе на первом тике дневной свечи перерисовки не происходит.
С уважением, Вячеслав.
Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
А для такого кода по любому получить ответ мало вероятно. int init(), int deinit и int start() да плюс кимовские устаревшие функции отпугивают большинство нормальных программистов. Лично мне даже читать противно…
Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
Индикатор показывает все, что задумывалось. Но индикатор должен на первом тике дневного бара обновить все линии с учетом прошедшего дня. Если цена в течении прошедшего дня пересекла какие-либо отрисованные линии, то эти линии должны исчезнуть при обновлении на первом тике дневного бара, а этого обновления не происходит. Я в ручном режиме переключаю таймфреймы, чтобы эти обновления произошли.
Индикатор показывает все, что задумывалось. Но индикатор должен на первом тике дневного бара обновить все линии с учетом прошедшего дня. Если цена в течении прошедшего дня пересекла какие-либо отрисованные линии, то эти линии должны исчезнуть при обновлении на первом тике дневного бара, а этого обновления не происходит. Я в ручном режиме переключаю таймфреймы, чтобы эти обновления произошли.
А для такого кода по любому получить ответ мало вероятно. int init(), int deinit и int start() да плюс кимовские устаревшие функции отпугивают большинство нормальных программистов. Лично мне даже читать противно…
Я самоучка и с Вашей критикой кода я полностью согласен. А данный индикатор мне был необходим и я его просто составил из разных частей кодов и функций. В тестере мне проще работать с кодом советника, чем индикатора. Если у Вас есть примеры подобных индикаторов с использованием функций, ссылку на которые Вы указали то, буду вам признателен. Мне проще учиться на конкретных примерах.
Всем добрый день! Вопрос по тестеру МТ4. Советник печатает в файл содержимое массива при помощи этого кода
if (Year()==2011&&X4==0)
{
X4=1;
string eName="My_7"+(string)D3+".csv";
int eHandle=FileOpen(eName,FILE_CSV|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ,";");
for(int i5=0; i5<=19999; i5++)
{
if (bLn[i5][1]>0)
{
FileWrite(eHandle,bLn[i5][0],bLn[i5][1]);
}
}
}
ВОПРОС Как вызвать папку с файлом в который шла печать? Или как сразу открыть файл в который Советник напечатал значения массива? Если вариантов много, то мне удобнее получить желаемое не при помощи кода, а при помощи сочетания клавиш , или при помощи соответствующих пунктов меню. Всем спасибо за ценную информацию.
Всем добрый день! Вопрос по тестеру МТ4. Советник печатает в файл содержимое массива при помощи этого кода
ВОПРОС Как вызвать папку с файлом в который шла печать? Или как сразу открыть файл в который Советник напечатал значения массива? Если вариантов много, то мне удобнее получить желаемое не при помощи кода, а при помощи сочетания клавиш , или при помощи соответствующих пунктов меню. Всем спасибо за ценную информацию.
Я не уверен, но думаю запустить внешнюю программу из МТ можно только при помощи DLL
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Помогите, пожалуйста, при наличии у вас времени подправить код индикатора. Индикатор отрисовывает заданное количество линий хай-лоу дней, недель и месяцев, не пересеченных ценой на момент закрытия дневной свечи. На текущей дневной свече линии хай-лоу пересеченные ценой остаются на месте. И только на первом тике дневной свечи происходит перерисовка линий и остаются только линии не «тронутой» ценой. Если в советнике данный код у меня работает, то в индикаторе на первом тике дневной свечи перерисовки не происходит.
С уважением, Вячеслав.
Помогите, пожалуйста, при наличии у вас времени подправить код индикатора. Индикатор отрисовывает заданное количество линий хай-лоу дней, недель и месяцев, не пересеченных ценой на момент закрытия дневной свечи. На текущей дневной свече линии хай-лоу пересеченные ценой остаются на месте. И только на первом тике дневной свечи происходит перерисовка линий и остаются только линии не «тронутой» ценой. Если в советнике данный код у меня работает, то в индикаторе на первом тике дневной свечи перерисовки не происходит.
С уважением, Вячеслав.
Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
А для такого кода по любому получить ответ мало вероятно. int init(), int deinit и int start() да плюс кимовские устаревшие функции отпугивают большинство нормальных программистов. Лично мне даже читать противно…
Вот этими функциями тоже ещё можно пользоваться…Я не совсем понимаю что Вы хотите, точнее что Вы хотите чтобы показывал индикатор.
P.S. Обращаясь в ветке форму к кому-то конкретно, Вы ограничиваете свои возможности получить ответ от других людей.
Индикатор показывает все, что задумывалось. Но индикатор должен на первом тике дневного бара обновить все линии с учетом прошедшего дня. Если цена в течении прошедшего дня пересекла какие-либо отрисованные линии, то эти линии должны исчезнуть при обновлении на первом тике дневного бара, а этого обновления не происходит. Я в ручном режиме переключаю таймфреймы, чтобы эти обновления произошли.
Индикатор показывает все, что задумывалось. Но индикатор должен на первом тике дневного бара обновить все линии с учетом прошедшего дня. Если цена в течении прошедшего дня пересекла какие-либо отрисованные линии, то эти линии должны исчезнуть при обновлении на первом тике дневного бара, а этого обновления не происходит. Я в ручном режиме переключаю таймфреймы, чтобы эти обновления произошли.
А для такого кода по любому получить ответ мало вероятно. int init(), int deinit и int start() да плюс кимовские устаревшие функции отпугивают большинство нормальных программистов. Лично мне даже читать противно…
Вот этими функциями тоже ещё можно пользоваться…Я самоучка и с Вашей критикой кода я полностью согласен. А данный индикатор мне был необходим и я его просто составил из разных частей кодов и функций. В тестере мне проще работать с кодом советника, чем индикатора. Если у Вас есть примеры подобных индикаторов с использованием функций, ссылку на которые Вы указали то, буду вам признателен. Мне проще учиться на конкретных примерах.
С уважением, Вячеслав.
Всем добрый день!
Вопрос по тестеру МТ4. Советник печатает в файл содержимое массива при помощи этого кода
ВОПРОС Как вызвать папку с файлом в который шла печать? Или как сразу открыть файл в который Советник напечатал значения массива? Если вариантов много, то мне удобнее получить желаемое не при помощи кода, а при помощи сочетания клавиш , или при помощи соответствующих пунктов меню.
Всем спасибо за ценную информацию.
Всем добрый день!
Вопрос по тестеру МТ4. Советник печатает в файл содержимое массива при помощи этого кода
ВОПРОС Как вызвать папку с файлом в который шла печать? Или как сразу открыть файл в который Советник напечатал значения массива? Если вариантов много, то мне удобнее получить желаемое не при помощи кода, а при помощи сочетания клавиш , или при помощи соответствующих пунктов меню.
Всем спасибо за ценную информацию.
Или как сразу открыть файл в который Советник напечатал значения массива?
Файл откроется той программой, с которой его тип ассоциирован в Windows.
Здесь путь в общую папку, проверьте у себя, где лежит файл.
Разрешите выполнение dll.