Избранное трейдера Value
Не далее как вчера опубликовал топик "Смена x86 Quik 7.27.2.1 на x64 Quik 8.4.1.6. Пляски вокруг DLL", где кратко рассказывалось как перекомпилировать проект С++ с платформы х86 на х64. Надеюсь, что у вас все уже получилось или получится.
Но я «крутой» программист, и, естественно, у меня вначале вообще ничего и никак не получалось. А так как проект большой, да еще и непонятно в чем дело, а своими экспериментами я могу вообще все испортить, то решил сделать маленькую простенькую DLL LuaProba.dll, на ней отработать переход на х64, и потом перенести это в большой проект.
Привожу код С++ DLL целиком:
// LuaProba.cpp: определяет экспортированные функции для приложения DLL. // #include "stdafx.h" #include <stdio.h> #include <string.h> //=== Необходимые для Lua константы ============================================================================// #define LUA_LIB #define LUA_BUILD_AS_DLL //=== Заголовочные файлы LUA ===================================================================================// extern "C" { #include "Lua\lua.h" #include "Lua/lauxlib.h" } static int forLua_TestFunc(lua_State *L) // Возвращает заданный текст { const char *cc = "Привет из C/C++ и от меня 2 раза"; //str.c_str(); lua_pushstring(L, cc); return(1); } //= == Регистрация реализованных в dll функций, чтобы они стали "видимы" для Lua == == == == == == == == == == == == == == == ==// static struct luaL_reg ls_lib[] = { { "TestFunc", forLua_TestFunc }, { NULL, NULL } }; //=== Регистрация названия библиотеки, видимого в скрипте Lua ==================================================// extern "C" LUALIB_API int luaopen_LuaProba(lua_State *L) { luaL_openlib(L, "LuaProba", ls_lib, 0); return 0; }Весь проект DLL для VS 2015 можно скачать по ссылке -
Settings={ Name="abs_over_vol", period=20, line= { { Name = "cur1", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет назначение: построение поглащения и перехая с использованием объемов --]] function Init() y = 0 return 1 end function OnCalculate(index) sz = Size() n = Settings.period if index == 1 then y = 0 end i = index if index-n > 0 then if (C(i) < C(i-1)) and (C(i-1) > O(i-1)) and (C(i) < O(i)) and (C(i-1) - O(i-1) < O(i) - C(i)) then y = y - 1*V(i) end if (C(i) > C(i-1)) and (C(i-1) < O(i-1)) and (C(i) > O(i)) and (O(i-1) - C(i-1) < C(i) - O(i)) then y = y + 1*V(i) end if (H(i) > H(i-1)) and (L(i) > L(i-1)) then y = y + 1*V(i) end if (H(i) < H(i-1)) and (L(i) < L(i-1)) then y = y - 1*V(i) end end return y end
# Выделяю скорректированную цену закрытия adj_close_px = sber['Adj Close'] # Вычисляю скользящую среднию moving_avg = adj_close_px.rolling(window=40).mean() # Вывожу результат print(moving_avg[-10:])
# Вычисление короткой скользящей средней sber['40'] = adj_close_px.rolling(window=40).mean() # Вычисление длинной скользящей средней sber['252'] = adj_close_px.rolling(window=252).mean() # Построение полученных значений sber[['Adj Close', '40', '252']].plot(figsize=(20,20)) plt.show()
Settings={ Name="absorption", period=20, line= { { Name = "cur1", Type =TYPE_LINE, Width = 2, Color = RGB(255,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет назначение: построение поглащения --]] function Init() y = 0 return 1 end function OnCalculate(index) sz = Size() n = Settings.period if index == 1 then y = 0 end i = index if index-n > 0 then if (C(i) < C(i-1)) and (C(i-1) > O(i-1)) and (C(i) < O(i)) and (C(i-1) - O(i-1) < O(i) - C(i)) then y = y - 1 end if (C(i) > C(i-1)) and (C(i-1) < O(i-1)) and (C(i) > O(i)) and (O(i-1) - C(i-1) < C(i) - O(i)) then y = y + 1 end end return y end
Асват Дамодаран
Асват Дамодаран — Инвестиционная оценкаЕсли кратко, то этот шлакоблок в 5 кг про Ебетду. Оцениваем отчёты, покупаем акции, получаем дивиденды.
В прошлой статье рассмотрено как можно получить информацию по финансовым инструментам. Дальше будет опубликовано несколько статей о том, что первоначально можно делать с полученными данными, как проводить анализ и составлять стратегию. Материалы составлены на основании публикаций в иностранных источниках и курсах на одной из онлайн платформ.
В этой статье будет рассмотрено, как рассчитывать доходность, волатильность и построить один из основных индикаторов.
import pandas as pd import yfinance as yf import numpy as np import matplotlib.pyplot as plt sber = yf.download('SBER.ME','2016-01-01')
Данная величина представляет собой процентное изменение стоимости акции за один торговый день. Оно не учитывает дивиденды и комиссии. Его легко рассчитать используя функцию pct_change () из пакета Pandas.
Как правило используют лог доходность, так как она позволяет лучше понять и исследовать изменения с течением времени.
# Скорректированая цена закрытия` daily_close = sber[['Adj Close']] # Дневная доходность daily_pct_change = daily_close.pct_change() # Заменить NA значения на 0 daily_pct_change.fillna(0, inplace=True) print(daily_pct_change.head()) # Дневная лог доходность daily_log_returns = np.log(daily_close.pct_change()+1) print(daily_log_returns.head())
Карта рынка
Обзор рынка
Сайты для торговли на NYSE/ NASDAQ/AMEX
https://www.smbtraining.com/blog/
http://ww5.hotstockseveryday.com/?gkwrf=https%3A%2F%2Fsmart-lab.ru%2F