Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua β ΡΠ΄Π°Π»ΡΠ½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π² ΠΠΎΡΠΊΠ²Π΅
ΠΠ°ΡΠ°: 2024-01-05
ΠΠ΅ΡΠ°Π»ΠΈ
Π Π΅Π³ΠΈΠΎΠ½
ΠΠΎΡΠΊΠ²Π°
ΠΠ°Π½ΡΡΠΎΡΡΡ
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ
ΠΎΡ 500.00 ΡΡΠ±.
ΠΠ°ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
2024-01-05
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³ΡΡ. ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΈΠ³ΡΡ Π² Π ΠΎΠ±Π»ΠΎΠΊΡ.
ΠΠΎΡ
ΠΎΠΆΠΈΠ΅ Π·Π°ΠΊΠ°Π·Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³ΡΡ. ΠΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ Π½ΡΠ»Ρ ΠΈΠ³ΡΡ Π΄Π»Ρ ΡΠΎΠ±Π»ΠΎΠΊΡ ΡΡΡΠ΄ΠΈΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΠ½Π΅ Π²ΡΠ΅Π³ΠΎ 15 Π»Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΠΈΠ³Ρ Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΌΠΎΠ³Ρ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-03-20
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΊΡΠΈΠΏΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΈΠ³ΡΡ tabletop simulator. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΠΊΠ½ΠΎΠΏΠΎΠΊ Ρ ΠΈΡ
Π·Π²ΡΠΊΠΎΠ²ΡΠΌ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-03-19
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΈΠ³ΡΡ. ΠΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΠΏΠΎ Lua Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π΄Π°Π½Π½ΡΡ
Π² ΠΏΠΎΠ΄ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π·Π°Ρ
Π²Π°ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΡ
, ΠΊΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ. ΠΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ΅ΡΠΊΠΈ Π² ΡΠ²ΡΠ·ΠΊΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈ ΠΎΠ±ΡΠ΅ΡΠ²Π΅ΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Ρ ΠΌΠ΅ΡΡΠΎΠ½ΠΎΠΌΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ
Π°ΡΠΏΠ΅ΠΊΡΠ°Ρ
ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ΅ΡΠΊΡ. ΠΠΎΡΠΎΠ² ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΠΎΠΏΠ»Π°ΡΡ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ΄: https://disk.yandex.ru/d/XvdCo_iixAuD_Q.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-02-25
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ. ΠΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ - Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ Π² ΠΊΠΎΠ΄ Π½Π° Lua Π΄Π»Ρ ΡΠΎΡΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Quik. 1. Π‘ΠΊΠ°ΡΠ°ΡΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π° Π·Π°ΠΊΡΡΡΠΈΠ΅ Π΄Π½Ρ ΠΏΠΎ API Ρ ΠΠΎΡΠ±ΠΈΡΠΆΠΈ (150 ΡΠΈΠΊΠ΅ΡΠΎΠ²), ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡ Π² ΡΠΊΡΠ΅Π»Ρ ΡΠ°ΠΉΠ». 2. ΠΠ° ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΡΠΈΡΠΎΠ²ΠΊΠ°Ρ
ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ²Π°ΡΠΈΠ°ΡΠΈΠΈ, ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ, ΠΏΡΠΎΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (ΠΎΠΊΠΎΠ»ΠΎ 5-6 ΡΡΡΠΊ Π½Π° ΡΠΈΠΊΠ΅Ρ). 3. Π‘ΡΠ°Π²Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΎΠΏ 5 ΠΈ 5 ΡΠ½ΠΈΠ·Ρ 4. ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ³Π½Π°Π» ΠΊ ΠΏΠΎΠΊΡΠΏΠΊΠ΅ ΡΡΠΈΡ
Π°ΠΊΡΠΈΠΉ Π² Π΅Π΄ΠΈΠ½ΡΡ
Π΄ΠΎΠ»ΡΡ
ΠΎΡ ΠΏΠΎΡΡΡΠ΅Π»Ρ (ΠΏΠΎ 20% Π½Π° Π°ΠΊΡΠΈΡ). ΠΠ°ΠΆΠ½ΠΎ, ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΈ ΠΈΡΡ
ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ, Ρ
ΠΎΡΡΠ±Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΠ΄Π°Π²Π°ΡΡ ΠΈ Π½Π΅ ΠΏΠΎΠΊΡΠΏΠ°ΡΡ ΠΏΠΎΡΡΡΠ΅Π»Ρ Π·Π°Π½ΠΎΠ²ΠΎ (Π½Π΅ ΠΏΠ»Π°ΡΠΈΠΌ ΠΊΠΎΠΌΠΈΡΡΠΈΡ Π±ΡΠΎΠΊΠ΅ΡΠ° Π»ΠΈΡΠ½ΡΡ) 5. ΠΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΠΎΡΠ° ΡΠ°Π· Π² Π΄Π΅Π½Ρ ΡΠΎΠ²Π½ΠΎ Π² 18:30 ΠΏΠΎ ΠΌΡΠΊ, Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡ Π― ΠΏΠΎΠΏΡΠΎΡΠΈΠ» ΡΠ°Ρ ΠΆΠΏΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ - ΠΎΠ½ Π²ΡΠ΄Π°Π» Π²ΠΎΡ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, Π½ΠΎ ΡΠ΄Π΅Π»ΠΊΠΈ ΠΈ ΡΠ΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠΈΡΡ - Π½ΡΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ° function main() waitForConnection() message("Starting trading algorithm", 1) while true do local stocks = {} local benchmark_returns = getReturns("IMOEX", window) if not benchmark_returns then message("Error: No IMOEX returns received", 3) else message("IMOEX returns successfully loaded", 1) end for _, ticker in ipairs(tickers) do message("Processing stock: " .. ticker, 1) local stock_returns = getReturns(ticker, window) if stock_returns and benchmark_returns then local alpha, beta = calculate_alpha_beta(stock_returns, benchmark_returns, window) if alpha and beta then table.insert(stocks, {ticker = ticker, alpha = alpha, beta = beta}) message("Stock: " .. ticker .. " | Alpha: " .. tostring(alpha) .. " | Beta: " .. tostring(beta), 1) else message("Alpha/Beta calculation failed for " .. ticker, 3) end else message("Error retrieving data for " .. ticker, 3) end end if #stocks == 0 then message("No valid stocks found. Skipping order execution.", 3) else message("Selected stocks for purchase:", 1) local top_5 = select_top_5(stocks) for _, stock in ipairs(top_5) do-- LUA script for QUIK: Top-5 stocks by alpha with a 45-day window -- Author: ChatGPT -- Functionality: Connects to QUIK, retrieves stock quotes, calculates alpha and beta, rebalances portfolio with stop-losses -- Connection parameters local IP = "127.0.0.1" -- QUIK server IP local PORT = "34130" -- QUIK server port local window = 45 -- Alpha calculation window local tickers = {"GAZP", "LKOH", "SBER", "ROSN", "VTBR", "MGNT", "NVTK", "GMKN", "CHMF", "RUAL", "MOEX", "TATN", "YNDX", "SNGS", "SNGSP", "PHOR", "PLZL", "ALRS", "MTSS", "AFKS", "IRAO", "PIKK", "FIVE", "SMLT", "TRNFP", "DSKY", "BANEP", "ENPG", "MRKP", "MRKU", "MRKS", "MRKC", "MRKZ", "MRKY", "MRKV", "MRKK", "MRKN", "MRKS", "MRKM", "MRKB", "MRKP", "RTKM", "RTKMP", "FEES", "LSRG", "TCSG", "POLY", "SELG", "MTLR", "MTLRP", "BSPB", "ABRD", "HYDR", "LSNG", "LSNGP", "TGKA", "TGKB", "TGKBP", "TGKN", "TGKM", "TGKO", "TGKP"} -- Stocks to analyze local portfolio = {} -- Current portfolio local lots = 10 -- Number of lots per trade local stop_loss_pct = 0.97 -- Stop-loss at 3% below purchase price -- Checking connection to QUIK server function waitForConnection() message("Checking connection to QUIK...", 1) while not isConnected() do sleep(5000) -- Wait 5 seconds message("Waiting for connection to QUIK...", 2) end message("Connection to QUIK established!", 1) end -- Function to calculate alpha and beta function calculate_alpha_beta(stock_returns, benchmark_returns, period) if #stock_returns < period or #benchmark_returns < period then return nil, nil end local function moving_average(data, period) local sum = 0 for i = #data - period + 1, #data do sum = sum + data[i] end return sum / period end local function covariance(x, y, period) local mean_x = moving_average(x, period) local mean_y = moving_average(y, period) local cov = 0 for i = #x - period + 1, #x do cov = cov + (x[i] - mean_x) * (y[i] - mean_y) end return cov / (period - 1) end local mean_stock = moving_average(stock_returns, period) local mean_bench = moving_average(benchmark_returns, period) local cov = covariance(stock_returns, benchmark_returns, period) local var_bench = covariance(benchmark_returns, benchmark_returns, period) if var_bench == 0 then return nil, nil end local beta = cov / var_bench local alpha = mean_stock - beta * mean_bench return alpha, beta end -- Function to get stock prices and calculate percentage returns function getReturns(ticker, period) local prices = {} for i = period, 1, -1 do local price = getParamEx("TQBR", ticker, "LAST").param_value if price then table.insert(prices, tonumber(price)) end sleep(100) end if #prices < 2 then return nil end local returns = {} for i = 2, #prices do table.insert(returns, (prices[i] - prices[i-1]) / prices[i-1]) end return returns end -- Main loop message(stock.ticker, 1) end execute_orders(top_5) end message("Waiting for the next trading day...", 1) sleep(86400) -- Wait 1 day (86400 seconds) end end.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-02-19
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏΠ°ΠΌ Π½Π° mac os. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. Π Π°ΡΠΊΠΈΠ΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠΊΠ½Π°/Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Ρ
ΡΠΎΠΌ ΠΈ ya Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎ ΡΠ°Π·Π½ΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠ»Π°ΠΌ Π½Π° mac os. ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ https://www.hammerspoon.org/.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-02-19
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
Tabletop Simulator. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-02-08
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Lua
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ³ΡΡ Π² Roblox Studio. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-02-06