Блог им. kurd |Как умножить тайм-фрейм файла котировок. Качайте, пока дают

Удивительно, как много дерзающих предсказывать будущее не могут написать простой код.
Вот он, на моём яндекс-диске disk.yandex.ru/d/hesjC_VzJHntIQ
Ограничение алгоритма — умножает только минуты.
Продолжение для дней в недели следует.

Блог им. kurd |Математический инструментарий для непроторенных путей в алготрейдинге. В дополнение к статье "Как перестать беспокоиться и начать торговать"

Если кого вдохновило сообщение smart-lab.ru/blog/680086.php, тому не обойтись без книги «NUMERICAL RECIPES. The Art of Scientific Computing. Third Edition». Качайте, пока дают

www.e-maxx-ru.1gb.ru/bookz/files/numerical_recipes.pdf
Бесплатные исходники к ней github.com/blackstonep/Numerical-Recipes
Программа svd.h из этого набора решает задачу наименьших квадратов для построения индикатора полиномиальной регрессии вместо примитивных скользящих средних.
Хорошее объяснение математической подоплёки в книге «Машинные методы математических вычислений. Форсайт, Малькольм, Моулер» en.booksee.org/book/445129
Ещё лучше — «Линейная алгебра и её применения» Гилберт Стренг
fileskachat.com/download/20151_887581203f10b39b3d7f6b84caf48a63.html
«Linear Algebra and Its Applications 4ed»
www.astronomia.edu.uy/progs/algebra/Strang- Linear_algebra_and_its_applications.pdf

Для использования программы svd.h из «NUMERICAL RECIPES» нужны тривиальные дополнения — транспонирование и перемножение матриц. Набор программ можно дополнить самодельным файлом utils.h и разместить в нём такой код:

#include <assert.h>
template <class T>
class NRdiagonal: public NRvector<T> { using NRvector<T>::NRvector; };

template <typename T>
void Multiply (const NRdiagonal<T>& a, const NRvector<T>& b
    ,NRvector<T>& c) {
  int m = a.size();
  assert (m == b.size());
  c.resize (m);
  for (int i = 0; i < m; ++i)
  c[i] = a[i] * b[i];
}
template <typename T>
void Multiply (const NRmatrix<T>& a, const NRvector<T>& b
    ,NRvector<T>& c) {
  int m = a.nrows(); int n = a.ncols();
  assert (n == b.size());
  c.resize (m);
  for (int i = 0; i < m; ++i) {
    c[i] = 0;
    for (int j = 0; j < n; ++j)
      c[i] += a[i][j] * b[j];
  }
}
template <typename T>
void Transpose (const NRmatrix<T>& a, NRmatrix<T>& b) {
  int m = a.nrows(); int n = a.ncols();
  b.resize (n, m);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      b[i][j] = a[j][i];
}
template <typename T>
void PrintVector (char* hdr, const NRvector<T>& vec) {
    cout << hdr << '\n';
  for (int i = 0; i < vec.size(); ++i)
    cout << " " << vec[i];
  cout << '\n';
}



( Читать дальше )

Блог им. kurd |По следам "Грааль, который вы так долго искали". Но пока что не нашли.

Нам сообщили, что "Простейшая трендследящая система уверенно обходит по доходности фондовые индексы США". smart-lab.ru/blog/620479.php
И далее «Будет ли работать система на отдельных акциях? Нет. Компании рождаются и умирают, проходя через естественные… бизнес-циклы. Индексы же — «вечны».
Понимаем так, что надо играть в индексы. На ММВБ есть индекс ММВБ, а чтобы его продавать и покупать фьючерс MIX.
Чтобы не заморачиваться отдельными 3-х-месячными контрактами, используем историю торгов „склеенного“ фьючерса — 98 месяцев с сентября 2011 по октябрь 2019  .
Комиссия брокера 4 руб на сделку, проскальзывание 0.01% от объёма сделки. Покупаем и продаём всегда 1 контракт.
Код C# в WealthLab'е действительно прост.
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace WealthLab.Strategies
{
public class TurnOnClose: WealthScript {
  protected override void Execute()    {
    for (int bar = 1; bar < Bars.Count; bar++) {
      if (Close[bar] > Close[bar-1]) {
        if (IsLastPositionActive &&
            LastPosition.PositionType != PositionType.Long)
          ExitAtClose (bar, LastPosition);
        if (! IsLastPositionActive)
          BuyAtClose (bar);
      } else if (Close[bar] < Close[bar-1]) {
        if (IsLastPositionActive &&
            LastPosition.PositionType != PositionType.Short)
          ExitAtClose (bar, LastPosition);
        if (! IsLastPositionActive)
          ShortAtClose (bar);
      }
    } // for (int bar
  } // Execute()
} // class TurnOnClose
} // namespace WealthLab.Strategies
Но график прибыли разочаровывает

( Читать дальше )

....все тэги
UPDONW
Новый дизайн