Избранное трейдера 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