int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240) return(-1);
int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);
for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time);
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
int LastDay = iBarShift(Symbol(), PERIOD_D1,iTime(Symbol(), PERIOD_D1, i))-1;
if(LastDay>0) // тут я запутался
buffer[i]= CL;
}
return(0);
Помогите разобраться пожалуйста. Что бы линия шла корректно. А так в буффер выдает просто линию, онаже должна быть в нутри дня ровной, как линии пивотов.... У меня же линия идет от уровня Х часа предидущего дня.
Помогите разобраться пожалуйста. Что бы линия шла корректно. А так в буффер выдает просто линию, онаже должна быть в нутри дня ровной, как линии пивотов.... У меня же линия идет от уровня Х часа предидущего дня.
ПРОШУ РАЗОБРАТЬСЯ.... я никак(((
Ну вот допустим Вам нужно в 5 часов взять мувинг периодом, длительностью в 4 часа на любом таймфрейме, естественно, не на дневках, а поменьше. Допустим начиная с часовок и меньше.
И прочертить его до 5-ти часов следующего дня. Вот как это делается.
#property indicator_chart_window#property indicator_buffers 1#property indicator_color1 Blue#property indicator_width1 2//==============================externint hour = 5;
externint hrma = 4;
//==============================double fx[];
double mai;
int p,hr,hrp;
//************************************************************int init()
{
SetIndexBuffer(0,fx);
p=hrma*60/Period(); // пересчет периода мувинга на любой таймфреймreturn(0);
}
//************************************************************int start()
{
int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
if (cbi==1) cbi--;
if (cbi>1) cbi=Bars-p-1;
//-------------------------------for(int i=cbi; i>=0; i--)
{
hrp=TimeHour(Time[i+1]);
hr=TimeHour(Time[i]);
if (hr==hour && hrp!=hr) mai=iMA(NULL,0,p,0,0,0,i); // сам простой мувинг, в момент, когда час равен нашему и не неравен на предыдущем баре
fx[i]=mai; // просто приравнивание индикаторного буффера к глобальной переменной
}
return(0);
}
//***************************************************************
ti=Time[i]; // время текущего бара
tiip=tii; // предыдущее состояние времени
tii=(ti-dth)/dtd*dtd;// время начала суток сдвинутое на нужный нам часif (tiip!=tii)
НО РЕЗУЛЬТАТ ТО НЕ ВЕРНЫЙ!!!!!!!!!!!!!!! Взял пример из пивота через
if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
Общий вид такой
int start()
{
double LastHigh,LastLow;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240) return(-1);
int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);
for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD = iTime(Symbol(), PERIOD_D1, i+1);
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);
if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
{
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time);
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}
buffer[i]= CL;
}
return(0);
}
ВСЕРАВНО ЭТО НЕ ПРАВИЛЬНЫЙ РЕЗУЛЬТАТ.
ЗАДАЧА ПРОСТАЯ пустить линию КАК пивот ровную, но не по пиватному уровню, а от значения некоторого часа. И все!!! А я парюсь и не понимаю как...ВЫРАВНИТЬ линию от Х часа до Time[0] !!!!!!!!!!!!!!!!
НО РЕЗУЛЬТАТ ТО НЕ ВЕРНЫЙ!!!!!!!!!!!!!!! Взял пример из пивота через
Общий вид такой
ВСЕРАВНО ЭТО НЕ ПРАВИЛЬНЫЙ РЕЗУЛЬТАТ.
ЗАДАЧА ПРОСТАЯ пустить линию КАК пивот ровную, но не по пиватному уровню, а от значения некоторого часа. И все!!! А я парюсь и не понимаю как...ВЫРАВНИТЬ линию от Х часа до Time[0] !!!!!!!!!!!!!!!!
Ну вот я там написал пример попроще.
Если мы в точке нужного часа записали какое-то значение, то дальше просто приравнивается к этому значению.
Так же и для чего угодно, хоть для пивота, хоть для чего. Просто если это суточный Пивот, то расчет суточных уровней производится в данной точке за суточное количество баров.
Вот к примеру суточные максимумы в 5 часов. Так же можно поступить и со всеми другими уровнями. Скопируйте код в пустой индикатор, откомпилируйте и посмотрите, я думаю это примерно то что нужно.
А если не нужно чертить все дни а только последний, то это делается чуть по другому. Я просто предлагаю более профессиональный подход.
Привет всем. А кто как добавляет индикаторы на график? Тоесть есть советник, в нем расчитывается некое значение скажем iMA. Как кто рисует индикатор на графике? Я так понимаю, через спец. функцию или "ручками" через трендлайн? Нет ли способа попроще, чтобы отображался индикатор с параметрами из советника?
Pyro: Привет всем. А кто как добавляет индикаторы на график? Тоесть есть советник, в нем расчитывается некое значение скажем iMA. Как кто рисует индикатор на графике? Я так понимаю, через спец. функцию или "ручками" через трендлайн? Нет ли способа попроще, чтобы отображался индикатор с параметрами из советника?
не встречал, может кто и написал поищите на форуме отображение буферов через трендлайн.
или сами напишите, там ничего сложного нет.(если очн надо в л.с.)
Pyro: Привет всем. А кто как добавляет индикаторы на график? Тоесть есть советник, в нем расчитывается некое значение скажем iMA. Как кто рисует индикатор на графике? Я так понимаю, через спец. функцию или "ручками" через трендлайн? Нет ли способа попроще, чтобы отображался индикатор с параметрами из советника?
Если эксперт подвешан на график и внутри его считается что-то, то чтобы увидеть что, нужно сделать индикатор с точно такой же функцией и установить те же параметры, что и в эксперте, и набросить на график. Или если это стандартная МТ-шная функция, типа мувинга, то тоже набросить на грфик и установить те же параметры что и в эксперте. Сам эксперт не вызывает отрисовку индикаторов на графике. Только в тестере после тестирвания отрисовывает. А во время торговли нет. Есть еще один способ, но геморный, - это рисовать объектами, типа черточками ObjectCreate(name+Time[0],OBJ_ARROW,0,Time[0],price); ObjectSet(name+Time[0],OBJPROP_ARROWCODE,4); или отрезками трендлайн, но тогда нужно еще запоминать состояние функции на предыдущем баре. Но это когда индикатор невозможно поставить, например нужно отрисовывать что-нибудь по Аскам, а МТ же масссив асков не хранит, или какой-нибудь синтетик из двух пар. Вот и приходится извращаться для контроля.
Ну можно еще сделать темплейт (tpl) на который навесить что нужно. Но чисто практически все-таки лучше сделать кастомный индикатор, и выставлять в ручную и записать новый профиль и когда нужно торговать, просто вызывать соответствующий профиль. Вообщем техника на грани фантастики.
Помогите разобраться пожалуйста. Что бы линия шла корректно. А так в буффер выдает просто линию, онаже должна быть в нутри дня ровной, как линии пивотов.... У меня же линия идет от уровня Х часа предидущего дня.
ПРОШУ РАЗОБРАТЬСЯ.... я никак(((
Помогите разобраться пожалуйста. Что бы линия шла корректно. А так в буффер выдает просто линию, онаже должна быть в нутри дня ровной, как линии пивотов.... У меня же линия идет от уровня Х часа предидущего дня.
ПРОШУ РАЗОБРАТЬСЯ.... я никак(((
Ну вот допустим Вам нужно в 5 часов взять мувинг периодом, длительностью в 4 часа на любом таймфрейме, естественно, не на дневках, а поменьше. Допустим начиная с часовок и меньше.
И прочертить его до 5-ти часов следующего дня. Вот как это делается.
Да сделал я, тот же ответ... что с
НО РЕЗУЛЬТАТ ТО НЕ ВЕРНЫЙ!!!!!!!!!!!!!!! Взял пример из пивота через
Общий вид такойВСЕРАВНО ЭТО НЕ ПРАВИЛЬНЫЙ РЕЗУЛЬТАТ.
ЗАДАЧА ПРОСТАЯ пустить линию КАК пивот ровную, но не по пиватному уровню, а от значения некоторого часа. И все!!! А я парюсь и не понимаю как...ВЫРАВНИТЬ линию от Х часа до Time[0] !!!!!!!!!!!!!!!!
Да сделал я, тот же ответ... что с
НО РЕЗУЛЬТАТ ТО НЕ ВЕРНЫЙ!!!!!!!!!!!!!!! Взял пример из пивота через
Общий вид такойВСЕРАВНО ЭТО НЕ ПРАВИЛЬНЫЙ РЕЗУЛЬТАТ.
ЗАДАЧА ПРОСТАЯ пустить линию КАК пивот ровную, но не по пиватному уровню, а от значения некоторого часа. И все!!! А я парюсь и не понимаю как...ВЫРАВНИТЬ линию от Х часа до Time[0] !!!!!!!!!!!!!!!!
Ну вот я там написал пример попроще.
Если мы в точке нужного часа записали какое-то значение, то дальше просто приравнивается к этому значению.
for(int i=cbi; i>=0; i--)
{
hrp=TimeHour(Time[i+1]);
hr=TimeHour(Time[i]);
if (hr==hour && hrp!=hr) x=то что нужно...
fx[i]=x; // просто приравнивание индикаторного буффера к глобальной переменной
}
Так же и для чего угодно, хоть для пивота, хоть для чего. Просто если это суточный Пивот, то расчет суточных уровней производится в данной точке за суточное количество баров.
Вот к примеру суточные максимумы в 5 часов. Так же можно поступить и со всеми другими уровнями. Скопируйте код в пустой индикатор, откомпилируйте и посмотрите, я думаю это примерно то что нужно.
А если не нужно чертить все дни а только последний, то это делается чуть по другому. Я просто предлагаю более профессиональный подход.
Привет всем. А кто как добавляет индикаторы на график? Тоесть есть советник, в нем расчитывается некое значение скажем iMA. Как кто рисует индикатор на графике? Я так понимаю, через спец. функцию или "ручками" через трендлайн? Нет ли способа попроще, чтобы отображался индикатор с параметрами из советника?
не встречал, может кто и написал поищите на форуме отображение буферов через трендлайн.
или сами напишите, там ничего сложного нет.(если очн надо в л.с.)
Привет всем. А кто как добавляет индикаторы на график? Тоесть есть советник, в нем расчитывается некое значение скажем iMA. Как кто рисует индикатор на графике? Я так понимаю, через спец. функцию или "ручками" через трендлайн? Нет ли способа попроще, чтобы отображался индикатор с параметрами из советника?
Если эксперт подвешан на график и внутри его считается что-то, то чтобы увидеть что, нужно сделать индикатор с точно такой же функцией и установить те же параметры, что и в эксперте, и набросить на график. Или если это стандартная МТ-шная функция, типа мувинга, то тоже набросить на грфик и установить те же параметры что и в эксперте. Сам эксперт не вызывает отрисовку индикаторов на графике. Только в тестере после тестирвания отрисовывает. А во время торговли нет. Есть еще один способ, но геморный, - это рисовать объектами, типа черточками ObjectCreate(name+Time[0],OBJ_ARROW,0,Time[0],price); ObjectSet(name+Time[0],OBJPROP_ARROWCODE,4); или отрезками трендлайн, но тогда нужно еще запоминать состояние функции на предыдущем баре. Но это когда индикатор невозможно поставить, например нужно отрисовывать что-нибудь по Аскам, а МТ же масссив асков не хранит, или какой-нибудь синтетик из двух пар. Вот и приходится извращаться для контроля.
Ну можно еще сделать темплейт (tpl) на который навесить что нужно. Но чисто практически все-таки лучше сделать кастомный индикатор, и выставлять в ручную и записать новый профиль и когда нужно торговать, просто вызывать соответствующий профиль. Вообщем техника на грани фантастики.
1) Делайте шаблоны с предустановленными параметрами советника и и индикаторов
2) Передавайте параметры в индикаторы при помощи GV
3) вызывайте индикаторы на чарт из советника при помощи WINAPI
Я предпочитаю рисовать из советника графику индикатора через Объект Arrow