Автор |
Сообщение |
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
Допустим мы выбираем свечу и строим от неё кривую. Пусть она строится по принципу - каждый хай суммируется с суммой параметра за каждый прошедший от старта бар. Пусть параметр равен 0,1
Код: |
dd = ParamDate("Дата начала", "2012-01-10", 0);
tt = ParamTime("Время начала", "12:00:00", 0);
width = Param( "width", 3, 0, 10, 1 );
ColorCurve = ParamColor("curvecolor", colorWhite);
BarsStart = 1+BarsSince(DateNum() == dd AND tt == TimeNum());
StartBar = LastValue( ValueWhen( DateNum() == dd AND tt == TimeNum(), BarIndex() ) );
Sum1 = Sum (0.1, BarsStart);
Curve = H+Sum1;
IIf (BarIndex() >= StartBar, Curve = Curve, Null);
|
На картинке выглядит так:
А как написать, что бы такая же кривая, но строилась от точки старта в ОБРАТНОМ НАПРАВЛЕНИИ. Соответственно использовала данный прошлых свечей... ну т.е. обратить назад.
P.S. не могу понять, почему кривая рисуется и до точки старта, хотя я вроде прописал, чтобы до старта она не считалась (IIf (BarIndex() >= StartBar, Curve = Curve, Null) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
AntColonel писал(а): |
P.S. не могу понять, почему кривая рисуется и до точки старта, хотя я вроде прописал, чтобы до старта она не считалась (IIf (BarIndex() >= StartBar, Curve = Curve, Null) |
И где ты это сделал?
Вот это
Код: |
IIf (BarIndex() >= StartBar, Curve = Curve, Null); |
фигня какая то.
Надо так
Код: |
Curve = IIf (BarIndex() >= StartBar, Curve = Curve, Null); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
AntColonel писал(а): |
А как написать, что бы такая же кривая, но строилась от точки старта в ОБРАТНОМ НАПРАВЛЕНИИ. Соответственно использовала данный прошлых свечей... ну т.е. обратить назад.
|
Написать цикл назад...
Код: |
for(i = BarCount - 1; i > StartBar; i--) |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
AntColonel
Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск
|
000 писал(а): |
Надо так
Код: |
Curve = IIf (BarIndex() >= StartBar, Curve = Curve, Null); |
|
Точно, спасибо!
По циклам буду изучать. Я их так и не осилил. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Олег, привет! Можешь показать на этом индикаторе, как это должно быть. В идеале у нас должна быть возможность построения как от последней свечи так и от произвольной.
Код: |
SetBarsRequired( 100000, 100000 );
SetTradeDelays(0, 0, 0, 0);
dn = DateTime();
sd = SelectedValue( dn );
//StartBar = DateNum() == dd AND tt == TimeNum();
start = sd==dn ;
mp = (H+L)/2;
PV = mp * V;
CV = Cum( V );
VSS = CV - ValueWhen( start, CV );
denom = IIf( VSS == 0, 1, VSS );
num = Cum( PV ) - ValueWhen( start, Cum( PV ) );
M = IIf( BarsSince( start ), num/denom, mp );
Plot( M, "M" + _PARAM_VALUES(), ParamColor("Top line",colorIndigo) ,styleThick, Null, Null,0,0, 2); |
|
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это же самое только с права на лево? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Да, все верно. Последний бар является первым и наоборот. |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
000 писал(а): |
Это же самое только с права на лево? |
Олег, поможешь?) |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Завтра сделаю |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
SetBarsRequired( 100000, 100000 );
dn = DateTime();
sd = SelectedValue( dn );
//StartBar = DateNum() == dd AND tt == TimeNum();
start = sd==dn ;
mp = (H+L)/2;
PV = mp * V;
CV = Cum( V );
CV = (CV - LastValue(ValueWhen( start, CV )))*-1;
VSS = IIf(CV > 0, CV, 0);
denom = IIf( VSS == 0, 1, VSS );
nu = Cum( PV );
num = (nu - LastValue(ValueWhen( start, nu )))*-1;
num = IIf(num > 0, num, 0);
M = num/denom;
M = IIf(M!=0, M, Null);
Plot(M, "", ColorRed);
//Plot(start, "", colorRed);
|
Как то так, если я все правильно понял. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
000 писал(а): |
Как то так, если я все правильно понял. |
Скорее да, все так. Посмотрю детальнее. Огромное тебе как всегда спасибо!)
UPD: Хитро ты конечно сделал! Теперь мне не хватает последнего штриха)))
Код: |
stde=sqrt( Sum((mp-M)^2 ,BarsSince( start )) /BarsSince( start )); |
я считал количество баров встроенной функцией, как нам теперь это сделать в нашем случае. Полагаю, что через цикл назад, но не знаю как
По факту нам нужно стандартное отклонение. но построенное назад |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Уууу, бля. Это надо подумать... Прямо сразу не скажу.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
Подумай, вдруг получится))) Я вчера весь день думал, после того как тебе написал
У меня получилось посчитать только бары назад, и то по аналогии с твоим решением даже не сразу сообразил.
Код: |
su = Cum(1);
nus = (su - LastValue(ValueWhen( start, su )))*-1;
nus = IIf(nus > 0, nus, 1);
Plot( nus , "", colorGreen); |
Думал через BarIndex() может, но ничего не вышло. Sum не могу посчитать. А циклом назад никак? Сам я видимо уже ничего больше не смогу. |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Посмотрел. Можно сделать. Найду свободную минутку и зафигачу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Alex14
Зарегистрирован: 12.11.2010
Сообщения: 90
|
я че то наколхозил))) без Ref(nus,-1) не считает. Вроде бы отдаленно напоминает то, что хотел, надо проверить в экселе.
Код: |
SetBarsRequired( 100000, 100000 );
dn = DateTime();
sd = SelectedValue( dn );
Mn=param("step", 2, 1.6,3,0.1);
dd = ParamDate("Дата начала", "2021-10-11", 0);
tt = ParamTime("Время начала", "12:00:00", 0);
StartBar = DateNum() == dd AND tt == TimeNum();
start = sd==dn ;
mp = (H+L)/2;
PV = mp * V;
CV = Cum( V );
CV = (CV - LastValue(ValueWhen( start, CV )))*-1;
VSS = IIf(CV > 0, CV, 0);
denom = IIf( VSS == 0, 1, VSS );
nu = Cum( PV );
num = (nu - LastValue(ValueWhen( start, nu )))*-1;
num = IIf(num > 0, num, 0);
M = num/denom;
M = IIf(M!=0, M, Null);
su = Cum(1);
nus = (su - LastValue(ValueWhen( start, su )))*-1;
nus = IIf(nus > 0, nus, 1);
stde=sqrt( Sum((mp-M)^2 , Ref(nus,-1)) /nus);
Plot(M+Mn*stde," ",ParamColor("Lo line",colorGreen) , styleThick);
//Plot(nus, "", ColorRed);
|
Буду раз твоему решению |
_________________ Деда Мороза не существует!!! |
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|