Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Построение кривой назад Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Июн 10, 2018 5:09 pm Ответить с цитатой Вернуться к началу

Допустим мы выбираем свечу и строим от неё кривую. Пусть она строится по принципу - каждый хай суммируется с суммой параметра за каждый прошедший от старта бар. Пусть параметр равен 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)Wink
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июн 10, 2018 5:36 pm Ответить с цитатой Вернуться к началу

AntColonel писал(а):

P.S. не могу понять, почему кривая рисуется и до точки старта, хотя я вроде прописал, чтобы до старта она не считалась (IIf (BarIndex() >= StartBar, Curve = Curve, Null)Wink

И где ты это сделал?
Вот это
Код:
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

СообщениеДобавлено: Вс Июн 10, 2018 5:39 pm Ответить с цитатой Вернуться к началу

AntColonel писал(а):

А как написать, что бы такая же кривая, но строилась от точки старта в ОБРАТНОМ НАПРАВЛЕНИИ. Соответственно использовала данный прошлых свечей... ну т.е. обратить назад.

Написать цикл назад...
Код:
for(i = BarCount - 1; i > StartBar; i--)

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Вс Июн 10, 2018 8:23 pm Ответить с цитатой Вернуться к началу

000 писал(а):

Надо так
Код:
Curve = IIf (BarIndex() >= StartBar, Curve = Curve, Null);


Точно, спасибо!

По циклам буду изучать. Я их так и не осилил.
Посмотреть профиль Отправить личное сообщение
Alex14



Зарегистрирован: 12.11.2010
Сообщения: 90

СообщениеДобавлено: Ср Окт 13, 2021 1:30 pm Ответить с цитатой Вернуться к началу

Олег, привет! Можешь показать на этом индикаторе, как это должно быть. В идеале у нас должна быть возможность построения как от последней свечи так и от произвольной.
Код:
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

СообщениеДобавлено: Пт Окт 15, 2021 11:28 am Ответить с цитатой Вернуться к началу

Это же самое только с права на лево?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex14



Зарегистрирован: 12.11.2010
Сообщения: 90

СообщениеДобавлено: Пт Окт 15, 2021 12:12 pm Ответить с цитатой Вернуться к началу

Да, все верно. Последний бар является первым и наоборот.

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
Alex14



Зарегистрирован: 12.11.2010
Сообщения: 90

СообщениеДобавлено: Пн Окт 18, 2021 10:22 am Ответить с цитатой Вернуться к началу

000 писал(а):
Это же самое только с права на лево?

Олег, поможешь?)

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Окт 18, 2021 3:35 pm Ответить с цитатой Вернуться к началу

Завтра сделаю

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Окт 19, 2021 7:26 pm Ответить с цитатой Вернуться к началу

Код:

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

СообщениеДобавлено: Ср Окт 20, 2021 10:21 am Ответить с цитатой Вернуться к началу

000 писал(а):

Как то так, если я все правильно понял.

Скорее да, все так. Посмотрю детальнее. Огромное тебе как всегда спасибо!)
UPD: Хитро ты конечно сделал! Теперь мне не хватает последнего штриха)))
Код:
stde=sqrt( Sum((mp-M)^2 ,BarsSince( start )) /BarsSince( start ));

я считал количество баров встроенной функцией, как нам теперь это сделать в нашем случае. Полагаю, что через цикл назад, но не знаю как
По факту нам нужно стандартное отклонение. но построенное назад

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Окт 21, 2021 9:21 am Ответить с цитатой Вернуться к началу

Уууу, бля. Это надо подумать... Прямо сразу не скажу....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex14



Зарегистрирован: 12.11.2010
Сообщения: 90

СообщениеДобавлено: Чт Окт 21, 2021 10:28 am Ответить с цитатой Вернуться к началу

Подумай, вдруг получится))) Я вчера весь день думал, после того как тебе написал Very Happy
У меня получилось посчитать только бары назад, и то по аналогии с твоим решением даже не сразу сообразил.
Код:
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

СообщениеДобавлено: Чт Окт 21, 2021 11:48 am Ответить с цитатой Вернуться к началу

Посмотрел. Можно сделать. Найду свободную минутку и зафигачу.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex14



Зарегистрирован: 12.11.2010
Сообщения: 90

СообщениеДобавлено: Чт Окт 21, 2021 2:27 pm Ответить с цитатой Вернуться к началу

я че то наколхозил))) без 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);


Буду раз твоему решению

_________________
Деда Мороза не существует!!!
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen