В комментарии к
посту пользователь Мальчик buybuy попросил перевернуть те графики, которые были на полшестого, а также прислать полные данные по эксперименту.
Никаких проблем. Однако, чтобы зрителям не было скучно, в текущем посте рассмотрим картинки не одного, а нескольких индикаторов:
1) на основе СЛАУ с одной переменной
indicator = d1 * (d1 / d2)
2) на основе СЛАУ с двумя переменными (см. предыдущий пост)
indicator = d1 * (d1 * d4 - d2 * d3) + d2 * (d2 * d2 - d1 * d3)
3) на основе СЛАУ с тремя переменными.
indicator = d1 * (-d1 * d4 * d6 + d1 * d5 * d5 + d2 * d3 * d6 - d2 * d4 * d5 + d3 * d3 * (-d5) + d3 * d4 * d4) /<br /> (-d2 * d4 * d6 + d2 * d5 * d5 + d3 * d3 * d6 - 2 * d3 * d4 * d5 + d4 * d4 * d4) +<br /><br /> d2 * (-d1 * d3 * d6 + d1 * d4 * d5 + d2 * d2 * d6 - d2 * d3 * d5 + d4 * d4 * d4) /<br /> (d2 * d4 * d6 - d2 * d5 * d5 - d3 * d3 * d6 + 2 * d3 * d4 * d5 - d4 * d4 * d4) +<br /><br /> d3 * (-d1 * d3 * d5 + d1 * d4 * d4 + d2 * d2 * d5 - 2 * d2 * d3 * d4 + d3 * d3 * d3) /<br /> (-d2 * d4 * d6 + d2 * d5 * d5 + d3 * d3 * d6 - 2 * d3 * d4 * d5 + d4 * d4 * d4)
4) на основе СЛАУ с 4 переменными (формулу смотреть в исходниках).
Пока, думаю, этого достаточно (если, конечно, Русский ВПК не укажет дальнейшее направление).
Сами исходники, котировки и эквити можно
скачать здесь.
А теперь собственно картинки:
(* цифрами обозначен порядок индикаторов: (1) — с одной переменной; (2) — с двумя и т.д.)
1) BTCUSD
2) AUDCAD
3) XAUUSD
4) ROSN
Собственно данный класс индикаторов без параметров может описывать движение цены на 1 мин таймфрейме, что видно из графиков выше, однако, как и всегда с финансовыми данными, это явно не грааль.
Y = (x(0) — x(-1)) + (x(0) — 2x(-1) + x(-2))/2
Y> const покупаем, У< -const — продаем,
то, скорее всего получите примерно тоже самое. Реальной прибыльности, аналогично, не обещаю.
не можешь пробовать?
можно обычным pine tradingview
1. Не могу. Я вообще на даче сижу без компа.
2. Зачем мне пробовать, если я примерно знаю результат? Для практических целей это, скорее всего, бесполезный экзерсис. Хотя… может, и не совсем бесполезный.)
3. Если кому интересно — пусть пробует. Неинтересно — не пробует.)
3Qu,
Результаты на основе вашего индикатора.
По ссылке исходники обновил.
По крайней мере, все достаточно гладкое, в этом масштабе.
А что, если вашу первую формулу: упростить до :
Мы же вроде только знак берем от индикатора )
по просьбам трудящихся)
Непонятно, где Buy и Sell, где Short и его Cover.
По-моему, скрипт C# в WealthLab гораздо выразительнее. Кряки бесплатны. Попробуй прочесть smart-lab.ru/blog/808994.php.
И можно ли доверять добросовестности «Мальчика» с его претензиями smart-lab.ru/blog/809401.php
не только кода, но и ссылки на тестовые данные с минутным тайм-фреймом И добросовестно потребовал от меня их предъявления smart-lab.ru/blog/809401.php
Вы получили результат, привели его. Надеюсь, что там все правильно.
Где ты вычитал мои жалобы на твои требования ко мне!?
buy/sell — не имеет значения, т.к. не учитываются комиссии и иные издержки.
Здесь моделируется как одна транзакция/1 бар (1 минута).
На чём писать код, выбираю сам по личным предпочтениям.
Кому ближе C#, Python — никаких проблем с ними нет, однако решения вида WealthLab/TSLab и т.д. меня только ограничивают. Но для продакшена — не спорю — надёжно, однако, точно не для исследовательских целей.
А что Buy/Sell, Short/Cover «держишь в уме», лишает твой код наглядности.
И тестировать стратегию для минуток на истории 13 лет — не слишком ли!?
Попробуйте более длинные периоды тестирования.
Если брать короткий отрезок (например, как у вас с 17.09.2018 по 31.12.2018), то Si у меня получается вот так (только знак "-" перед формулой):
Помнится, по работе, что-то туда NETовское впихивал. Лет, этак 12 назад. Или ошибаюсь?
Как же мне тогда удалось в локальную ВЭБ- страницу Net-объект впихнуть — не понимаю.
А VBscript может?
protected override void Execute() {
var d1 = (Close >> 1) — (Close >> 2);
var d2 = (Close >> 2) — (Close >> 3);
var d3 = (Close >> 3) — (Close >> 4);
var d4 = (Close >> 4) — (Close >> 5);
for (int i = 5; i < Bars.Count-2; i++) {
double A = d1[i]*d4[i] — d2[i]*d3[i];
double B = d2[i]*d2[i] — d1[i]*d3[i];
double id = A*d1[i] + B*d2[i];
int posDir = (! IsLastPositionActive)? 0
: LastPosition.PositionType == PositionType.Long? 1: -1;
if (id >= 0 && posDir != 1) {
if (posDir == -1)
ExitAtClose (i, LastPosition);
BuyAtClose (i);
} else if (id < 0 && posDir != -1) {
if (posDir == 1)
ExitAtClose (i, LastPosition);
ShortAtClose (i);
}
} // for (int i
if (IsLastPositionActive)
ExitAtClose (Bars.Count-1, LastPosition);
} // Execute()
дал результат на ROSN из предложенного автором набора данных
не слишком выдающийся.
PS всем ли очевидно, что Close>>1 даёт сдвиг данных на один бар вправо?
Всё остальное предельно наглядно.
Ещё много чего было...
Из-за санкций прицелился на Java. Бесплатный JDK Liberica.
PS не знаю даже, как прочесть indTest.tscript
Какие-то кряко-зябры и дальше — пуще
— Умничка, сынка, вот тебе мороженое!". ©