Автор |
Сообщение |
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
ну круууть))) Спасибо. сижу вникаю! |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
прикольный и простой код.
Только прикинул я как бары будут рисоваться в живую и понял, что приколов будет больше))))) Особенно на крупном таймфрейме.
Я так понимаю, следующий бар будет появляться сразу же, словно конёк-горбунок, из ниоткуда. Ведь ами будет сначала проверять Close бара (то есть вгонит его в память целиком). а потом уже будет решать пририсовывать его к старому или уже рисовать новый.
Получается, чтобы увидеть этот график более менее плавно выстраивающимся, его нужно использоваться на как можно меньшем таймфрейме, с как можно большим % ходом.
И ещё, у меня не получилось протестить сделки на нём, ами же в своей голове держит только оригинальные OHLC.
Пробовал самое первое что пришло на ум, глядя на эту красотищу:
Код: |
BuyPrice = Open;
BC = Ref(RO,-1)<Ref(RC,-1);
SC = Ref(RO,-1)>Ref(RC,-1);
B = ExRem( BC, SC );
S = ExRem( SC, BC );
Buy = b;
Sell = s;
PlotShapes(b*shapeUpArrow,colorGreen,0,RL);
PlotShapes(s*shapeDownArrow,colorRed,0,RH); |
как быть? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
kosbar писал(а): |
прикольный и простой код.
Только прикинул я как бары будут рисоваться в живую и понял, что приколов будет больше))))) Особенно на крупном таймфрейме.
Я так понимаю, следующий бар будет появляться сразу же, словно конёк-горбунок, из ниоткуда. |
Мало того. Возможна ситуация, что бар будет пропадать... (
Цитата: |
И ещё, у меня не получилось протестить сделки на нём, ами же в своей голове держит только оригинальные OHLC. |
Да протестировать не получится... (
В принципе конечно можно написать код который будет вычислять и рисовать эквити, но не более того... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
Мало того. Возможна ситуация, что бар будет пропадать... ( |
Ой, можно пример? Если я буду иметь 1-минутную базу, и буду смотреть 3-4% изменение цены, неужели может появиться какой-то косяк с пропаданием бара? Как, где?
А если использовать внутренний (встроенный) range программы, в абсолютных числах, тогда тоже возможны такие косяки?
000 писал(а): |
Да протестировать не получится... (
В принципе конечно можно написать код который будет вычислять и рисовать эквити, но не более того... |
Ок, хоть что-то. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В реал тайме запросто может пропадать бар. Если цена закрытия базового бара вышла за пределы ранжа, то начнет строится новый бар и если потом цена закрытия снова уйдет в диаппазон старового бара, то новый бар пропадет.
В идеале базовый фрейм надо брать тики. Тогда таких косяков не будет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
В реал тайме запросто может пропадать бар. Если цена закрытия базового бара вышла за пределы ранжа, то начнет строится новый бар и если потом цена закрытия снова уйдет в диаппазон старового бара, то новый бар пропадет. |
Да, да, я тоже уже понял, как это может произойти, но ведь можно улучшить код, если проверять не Close нового бара, а High или Low относительно RO*(1+range)? Тогда пропадания должны остаться в прошлом, разве нет?
000 писал(а): |
В идеале базовый фрейм надо брать тики. Тогда таких косяков не будет. |
Чисто тиковые не так интересны, т.к. 200 тиков это может быть опуппенный рост (собственно та же нарезка по времени, только вместо времени тики), а может обыкновенный флэт... А важно именно делить движение цены на нужные тебе доли. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я имел ввиду строить % Range из тиков. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
Я имел ввиду строить % Range из тиков. |
так-то да, только тиковые базы данных (проверил тут на днях) для моей банки тяжеловаты, да и при больших процентах должно хватить и минутных данных, хотя опять же, сбер к примеру может за минуту на 2-3% скакануть! %))) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
2 варианта.
1. Мирится с тем, что возможны такие коясяки
2. Переписать код чтобы он строил не по Close, а по High/Low |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Олег, два вопроса:
1. Хотел примастачить AlertIF:
Код: |
Cond1 = Ref(RC,-1) < Ref(RO,-1);
Cond2 = Ref(RC,-2) > Ref(RO,-2);
AlertIf(Cond1 AND Cond2, "SOUND C:\\Windows\\Media\\ir_end.wav", "Audio alert", 2 ); |
суть проста: как только новая свечка откроется проверяется закрытие прошлой и позапрошлой, если на прошлой свеча тёмная, а на позапрошлой светлая - даётся алерт.
Не сработало))) Пищит когда вздумается, я сначала подумал, что ами вместо RO RH RL RC проверяет свечки базового таймфрема (минутки) - оказалось нет, вааапсче не понимаю когда и по какому принципу даёт голос.
2. Хотел вывести Дневные данные, но так, чтобы график с %R продолжал строиться по минуткам, крутил всякие TimeFrame*... но безуспешно. Как корректно вывести дневки, чтобы Range% продолжал строиться по минуткам? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
вывод дневок решил новым Blank Chart)))) впервые воспользовался.
если кому-то захочется вынеси на %Range свой индикатор, написанный на OHLC то нужно внести изменения в коде:
вместо
Код: |
RO = Ref(RO, -delta);
RH = Ref(RH, -delta);
RL = Ref(RL, -delta);
RC = Ref(RC, -delta);
|
сделать тупо:
Код: |
O = Ref(RO, -delta);
H = Ref(RH, -delta);
L = Ref(RL, -delta);
C = Ref(RC, -delta);
|
Ну и попробовал тестировать как композитный символ, не вышло. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|