Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2102

 
Valeriy Yastremskiy:

Автоматизация МО это автоматический подбор вида НС и МО (оптимизированных пакетов для ВР) для оптимального результата?

Или просто автоматизация процесса обучения - легкая подготовка данных и получение готовой ТС? 

Есть два вида программ. Первый - Вы даете набор входных данных и целевую и она определяет наилучшие методы препроцессинга и модель(модели) с тюнингом гиперпараметров. Наиболее известная - TPOT(Python). Другие берут на себя только автоматический подбор моделей и тюнинг гиперпараметров. Из последних - autokeras, GLUON(Python)Всего порядка полутора десятка. 

 
Vladimir Perervenko:

По разному бывает, и до 20. Комиссия 1.90. И торговать на акциях - это не Форекс. Там совсем другие закономерности.

Перед закрытием сессии на пару секунд может и 20 быть.

Si - это не акции, а фьючерсный контракт на пару рубль/доллар - по форексному.

 
Aleksey Vyazmikin:

Перед закрытием сессии на пару секунд может и 20 быть.

Si - это не акции, а фьючерсный контракт на пару рубль/доллар - по форексному.

Ну я и говорил о бирже :)

[Удален]  
спред надо закладывать еще на этапе подготовки целевых даже, а не только в тестере
 
mytarmailS:

нет , цель поста в другом ,  познакомить с фурье на практическом примере

Спасибо, исправлю, писал все на скорую руку

то то же, посылальщик ...

и другие мои посты внимательно перечитай

следующий этап - чо делать, если что то пошло не так...

// на эту тему я мульон постов на форуме написал. тока никто и ничего не понял. тема занятная, интересная и длинная. разберешься о чем я пытался для страждующих донести - твое счастьЁ

 
Кароч. проверил на многих примерах, не все так круто, но штука занятная
 
Vladimir Perervenko:

А у вас нету случайно функции которая и еквити считает и комиссию ?

 
mytarmailS:

А у вас нету случайно функции которая и еквити считает и комиссию ?

Язык, биржа, форекс? Не понял о чем.

 
Vladimir Perervenko:

Язык, биржа, форекс? Не понял о чем.

Р-ка, форекс

Ну функция которая бы считала график баланса по сделкам + комиссию\спред  (издержки)

написал вот такое, не знаю правильно ли

calc.balance <- function(sig,x, comision=0){
sig <- ifelse(sig>0, 1, -1)

trades.count <- length(rle(c(sig))$values) # сколько было сделок
comis <- comision*trades.count


sig <- na.omit(  dplyr::lag(sig)  )
dC <- c(NA, diff(x))
bal <- cumsum(sig * tail(dC, length(sig) )   )

bal <- bal-comis
return(bal)}

 

Пример скрипта в R  использующий пакет "MetaTrader5"(Python) для загрузки котировок. В R должна быть инсталлирована библиотека "reticulate". Собственно эта библиотека и обеспечивает взаимодействие с Python. Внимательно читаем здесь и здесь. При первом запуске библиотеки reticulate будет предложено установить miniconda. Рекомендую не отказываться. Будет создано conda окружение r-reticulate с установленным python(3.6.xx) и начальным набором пакетов. Если у Вас уже установлен Pyhon (или несколько версий) в начале скрипта нужно активировать нужное окружение. Все команды пакета  "MetaTrader5" здесь.

Скрипт инициализации

#---необходимые константы------------------
sym <- "Si-12.20"
#TERMINAL_PATH <- "C:/Program Files/.../terminal64.exe"
# server <- "Open-Broker"
# login <- xxxxxx
bar <- 6000L
tf <- 3L
ch <- 15L
# TP <-5
# SL <-
# lot <- 1.0
# magik <-
#----------------------------------
require(reticulate)
#----Connect terminal(Python)-------------------
mt5 <- import('MetaTrader5')

if(!mt5$initialize())
    print("initialize() failed, error code =", mt5$last_error())


termInfo <- mt5$terminal_info()
termInfo$data_path -> dataPath
termInfo$name -> broker

#termInfo$trade_allowed
#termInfo$connected

AccInfo <- mt5$account_info()
AccInfo$login -> login
AccInfo$server -> server
AccInfo$balance -> start_balance
AccInfo$equity -> start_equity
AccInfo$profit -> profit

selected = mt5$symbol_select(sym,TRUE)
if(!selected){
    print("Failed to select ", sym, ", error code =", mt5$last_error())
    mt5$shutdown()
    quit()
}

SymInfo = mt5$symbol_info(sym)
SymInfo$digits -> Dig


Для загрузки котировок напишем функцию

#---Function-------------------------------
GetCotirPy <- function(sym){
    selected = mt5$symbol_select(sym,TRUE)
    if (selected)
        py_run_string("
import pandas as pd
import MetaTrader5 as mt5
rates = pd.DataFrame(mt5.copy_rates_from_pos(r.sym, r.tf, 1, r.bar))"
        )
    return(py$rates)
}

 Посмотрим структуру полученных данных.

rates <- GetCotirPy(sym = sym)
str(rates)
'data.frame':   6000 obs. of  8 variables:
 $ time       : num  1.6e+09 1.6e+09 1.6e+09 1.6e+09 1.6e+09 ...
 $ open       : num  77498 77504 77511 77528 77553 ...
 $ high       : num  77520 77561 77555 77560 77578 ...
 $ low        : num  77472 77504 77500 77521 77537 ...
 $ close      : num  77502 77511 77528 77553 77564 ...
 $ tick_volume: num  2748 3934 1984 1459 2452 ...
 $ spread     : int  1 1 1 1 1 1 1 1 1 1 ...
 $ real_volume: num  11540 21547 8953 6521 14932 ...
 - attr(*, "pandas.index")=RangeIndex(start=0, stop=6000, step=1)

Дальше нужные вычисления..

reticulate 1.14
  • blog.rstudio.com
We’re excited to announce that 1.14 is now available on CRAN! You can install it with: With this release, we are introducing a major new feature: can now automatically configure a Python environment for the user, in coordination with any loaded R packages that depend on . This means that: Ultimately, the goal is for R packages using to be able...