天道酬勤,学无止境

Ruby:使用哈希跟踪股票交易(Ruby: Keeping track of Stock Transaction using Hash)

问题

我是 Ruby 的新手,我正在尝试编写一个“简单”的系统,这样我就可以跟踪股票交易。 计算平均价格,以后我会尝试获取分红信息。

到目前为止,我的代码看起来像这样(请随意提出更好的方法来执行我的代码,正如我所说,我是新人)。

require 'money'
require 'money/bank/google_currency'
require 'monetize'
require 'date'
require 'ystock'
require 'ostruct'

# (optional)
# set the seconds after than the current rates are automatically expired
# by default, they never expire
Money::Bank::GoogleCurrency.ttl_in_seconds = 86400
I18n.enforce_available_locales = false #erro no formatting...
# set default bank to instance of GoogleCurrency
Money.default_bank = Money::Bank::GoogleCurrency.new

class Stock

attr_accessor :code, :quantity, :price, :transactions, :spotprice

    def initialize(code:)
        @code = code
        @quantity =00
        @price = 00.to_money(:BRL)
        @transactions = []
        @spotprice = 0.to_money(:BRL)
    end    

    def spotprice
        begin
            asset_temp = Ystock.quote(@code.to_s + ".sa") # since it is South America.
            asset_info = OpenStruct.new asset_temp # organize it.
            @spotprice = asset_info.price.to_money(:BRL) # get the price. And transform it to Money, local currency
        rescue => @error #Is there an TCP/IP error?
            @spotprice = 0.to_money(:BRL)
        end
    end

    def buy (quantity:, price:, fees:, date:0)
        transactions.push type: "BUY", date: Date.strptime(date.to_s, '%d/%m/%Y'), quantity: quantity, price: price.to_money(:BRL), fees: fees.to_money(:BRL)
        #Lets calculate the average price that we bought:
        new_price = (((@quantity * @price.to_money(:BRL))) + ((quantity * price.to_money(:BRL)) + fees.to_money(:BRL))) / (@quantity + quantity)
        @quantity += quantity
        @price = new_price.to_money(:BRL) # new price is the average price.
    end

    def sell (quantity:,price:, fees:, date:)
        transactions.push type: "SELL", date: Date.strptime(date.to_s,     '%d/%m/%Y'), quantity: quantity, price: price.to_money(:BRL), fees:     fees.to_money(:BRL)
        @quantity -= quantity
    end
end

例如,我可以创建资产,并进行买卖:

ciel3 = Stock.new(code: "CIEL3")
ciel3.buy(quantity: 100, price: 9.00, fees: 21.5, date: "12/05/2015")
 p ciel3
ciel3.buy(quantity: 100,price: 12, fees: 21.7, date: "12/06/2015")
ciel3.sell(quantity: 50,price: 11.5,fees: 20.86, date: "20/06/2015")
p ciel3
ciel3.buy(quantity: 200,price: 15,fees: 23.6, date: "12/07/2015")
puts ciel3.price.format
puts
puts
# puts ciel3.spotprice.format
p ciel3.transactions 

到目前为止,还可以(但我认为有一种更清晰、更易读的方法来做到这一点......不确定)。

但是假设我想查看所有类型为“SELL”的交易。 我怎样才能做到这一点? 如何查看具有哈希值的 ciel3.transaction 数组:type ?? 坦克

回答1

您可能需要一个Transaction类,而不是使用散列。

如果您使用 DB 支持它并使用 ActiveRecord,那么搜索将非常简单。

如果没有,您可以执行ciel3.transactions.select{|t| t[:type] == 'SELL'} ciel3.transactions.select{|t| t[:type] == 'SELL'}

回答2

我用 Ruby 编写了一个简单的命令行库存管理应用程序。 您可能可以为您的项目重用大量代码。

它在我的 GitHub 上:https://github.com/brunofacca/udacity-inventory-manager

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Ruby: Keeping track of Stock Transaction using Hash
    I am new to Ruby, and I am trying to code a "simple" system, so I can keep track of stock transaction. Calculating the average price, and in the future I will try to get dividends information. So far, my code looks like this (PLEASE feel free to propose better ways to do my code, as I said, I am new). require 'money' require 'money/bank/google_currency' require 'monetize' require 'date' require 'ystock' require 'ostruct' # (optional) # set the seconds after than the current rates are automatically expired # by default, they never expire Money::Bank::GoogleCurrency.ttl_in_seconds = 86400 I18n
  • Ruby On Rails 多个复合主键问题(Ruby On Rails multiple composite primary keys question)
    问题 我是 Ruby 的新手,我有包含以下主键的表: 交易类型: 交易类型交易头: 交易类型交易年交易编号交易明细: 交易类型交易年交易编号 city_id 股票编号股票代码: city_id 股票编号 当然,这些模型还有其他非主键,例如 customer_id、connection_id 或 date,或 user_id 等,但这些对关系并不重要,因为它们只是数据,或者我对这些没有任何问题。 这些是我的模型: #models class transaction_type < ActiveRecord::Base has_many :transaction_headers, :foreign_key=>'transaction_type' has_many :transaction_details, :foreign_key=>'transaction_type' has_many :tickers, :through=>:transaction_details end class transaction_header < ActiveRecord::Base belongs_to: transaction_types, :foreign_key=>'transaction_type' has_many :transaction_details has_many :tickers
  • Python量化交易学习笔记(51)——程序化交易2
    本文记录使用easytrader+easyquotation实现策略的程序化交易的流程。笔记(50)已经记录了使用easytrader进行程序化交易的过程,本文主要对easyquotation获取实时数据实现策略进行介绍。 easyquotation安装 pip install easyquotation 选择行情数据源 import easyquotation as eq # 选择数据源 q = eq.use('qq') # 新浪 ['sina'] 腾讯 ['tencent', 'qq'] 获取行情数据 quotation.stocks(['sz000001', 'sh600000'], prefix=True) # prefix默认为False 返回字典类型数据,类似于: {'sh000159': {'name': '国际实业', # 股票名 'buy': 8.87, # 竞买价 'sell': 8.88, # 竞卖价 'now': 8.88, # 现价 'open': 8.99, # 开盘价 'close': 8.96, # 昨日收盘价 'high': 9.15, # 今日最高价 'low': 8.83, # 今日最低价 'turnover': 22545048, # 交易股数 'volume': 202704887.74, # 交易金额 'ask1': 8.88, #
  • 使用监视器实现证券交易所(Implementing a stock exchange using monitors)
    问题 我正在尝试使用 Hoare 的监视器实施证券交易所。 它有两个函数buy()和sell()如下: buy(procid, ticker, nshares, limit) sell(procid, ticker, nshares, limit) 并应打印有关买方 ID、卖方 ID、股票代码、股票数量和价格的信息。 公平总是得到满足。 我的解决方案的伪代码如下,但并不完整。 它基本上为每个股票代码使用一个条件变量队列。 当卖方进程向证券交易所发送卖单时,卖方进程将在此队列中休眠,买方进程向该卖方进程发出信号,如果条件(匹配价格限制和股票数量)满足,则它想要购买。 monitor SE { int available_shares; int price; sell(procid, ticker, nshares, limit) { wait(ticker); // put sell order in ticker queue available_shares += nshares; price = limit; printf("Starting transaction with seller %i", procid); } buy(procid, ticker, nshares, limit) { if (limit <= price && nshares <= available
  • 如何在Ruby on Rails中使用映射表跟踪模型历史记录?(How to keep track of model history with mapping table in Ruby on Rails?)
    问题 梦 我想记录用户何时更改地址。 这样,在下订单时,它将始终能够引用下订单时使用的用户地址。 可能的模式 users ( id username email ... ) user_addresses ( id label line_1 line_2 city state zip ... ) user_addresses_map ( user_id user_address_id start_time end_time ) orders ( id user_id user_address_id order_status_id ... created_at updated_at ) 在sql中,它可能类似于:[sql] select ua.* from orders o join users u on u.id = o.user_id join user_addressses_map uam on uam.user_id = u.id and uam.user_address_id = o.user_address_id join user_addresses ua on ua.id = uam.user_address_id and uam.start_time < o.created_at and (uam.end_time >= o.created_at or uam.end
  • .NET 的股票交易脚本/语言?(Stock Trading script/language for .NET?)
    问题 是否有一个组件可用于在 .NET 中创建股票交易/回溯测试应用程序? 我正在寻找类似于 ModulusFE 的 TradeScript 的东西:http://www.modulusfe.com/tradescript/ 回答1 这并不像上面那个人试图让它听起来那么容易。 您最好使用 TradeScript、MQL4、EasyLanguage 甚至 MatLab - 有一些用于 MatLab 的回溯测试插件。 你不想自己滚动。 它比我们看到的要多得多。 回答2 我不知道我的理解是否正确……但是您应该能够很快编写一个非常简单的回溯测试应用程序。 你甚至可以在 Excel 中做到这一点...... 无论如何,您需要做几件事: 数据源(数据集)。 交易信号(最有可能在数据集上给出)。 您根据每个交易信号买入或卖出,最后您只需计算利润。 它只是一些功能:遍历数据集,进行预测,对于每个预测买入或卖出,跟踪盈亏。
  • 基金基础问题整理
    基金的概念 证券投资基金是指通过发售基金份额,将众多投资者的资金集中起来,形成独立资产,由基金托管人托管,基金管理人管理,以投资组合的方法进行证券投资的一 种利益共享、风险共担的集合投资方式。 当事人 基金投资者 以购买份额的方式投资基金,是基金的持有人 基金管理人 由基金管理公司担任 基金托管人 由取得基金托管资格的机构担任 封闭式基金与开放式基金的区别?(基金) 1.封闭式基金: 基金规模:相对固定,封闭期内不可申赎。 存续期限:有明确的存续期,期满后清盘。 交易方式;投资者可在实际市场买卖。 交易价格:竞价交易,随行就市。 投资运作:封闭期内不能赎回,因而可以进行长线投资。 信息披露;每周公布单位资产净值,每季度公布资产组合。 开放日时间;合同约定或管理人指定。 2.开放式基金: 基金规模:不固定,份额可变化,可在约定时间内申赎。 存续期限:没有固定期限,如未达到清盘条件,可一直存续。 交易方式:可通过中介机构进行申购和赎回。 交易价格:申述价格按照基金单位资产净值。 投资运作:要随时面临申赎,所以不能全部长线投资,流动性远高于封闭式基金。 信息披露:每日公布单位资产净值,每季度公布资产组合,每6个月公布招募说明书。 开放日时间;每个交易所工作日。 简述净价交易与全价交易有何差异?(债券) 净价交易中交易不含利息,全价交易中交易包含利息。 深交只有全价,上海净价全价都有。
  • 从任意哈希值初始化Ruby类,但仅使用具有匹配访问器的键(Initialize a Ruby class from an arbitrary hash, but only keys with matching accessors)
    问题 有没有一种简单的方法来列出在Ruby类中设置的访问器/阅读器? class Test attr_reader :one, :two def initialize # Do something end def three end end Test.new => [one,two] 我真正想做的是允许Initialize接受具有任意数量属性的Hash,但仅提交已定义读者的属性。 就像是: def initialize(opts) opts.delete_if{|opt,val| not the_list_of_readers.include?(opt)}.each do |opt,val| eval("@#{opt} = \"#{val}\"") end end 还有其他建议吗? 回答1 这就是我使用的方式(我将此方式称为hash-init)。 def initialize(object_attribute_hash = {}) object_attribute_hash.map { |(k, v)| send("#{k}=", v) } end 如果您使用的是Ruby 1.9,则可以做得更干净(发送允许使用私有方法): def initialize(object_attribute_hash = {}) object_attribute_hash.map { |(k, v)|
  • 用Python徒手撸一个股票回测框架
    通过纯Python完成股票回测框架的搭建。 什么是回测框架? 无论是传统股票交易还是量化交易,无法避免的一个问题是我们需要检验自己的交易策略是否可行,而最简单的方式就是利用历史数据检验交易策略,而回测框架就是提供这样的一个平台让交易策略在历史数据中不断交易,最终生成最终结果,通过查看结果的策略收益,年化收益,最大回测等用以评估交易策略的可行性。 代码地址在最后。 本项目并不是一个已完善的项目, 还在不断的完善。 回测框架 回测框架应该至少包含两个部分, 回测类, 交易类.回测类提供各种钩子函数,用于放置自己的交易逻辑,交易类用于模拟市场的交易平台,这个类提供买入,卖出的方法。 代码架构 以自己的回测框架为例。主要包含下面两个文件 backtest/ backtest.py broker.py backtest.py主要提供BackTest这个类用于提供回测框架,暴露以下钩子函数. def initialize(self): """在回测开始前的初始化""" pass def before_on_tick(self, tick): pass def after_on_tick(self, tick): pass def before_trade(self, order): """在交易之前会调用此函数 可以在此放置资金管理及风险管理的代码 如果返回True就允许交易,否则放弃交易 "
  • 用于组织历史库存数据的数据库架构(Database schema for organizing historical stock data)
    问题 我正在创建用于存储历史股票数据的数据库架构。 我目前有一个架构,如下所示。 我的要求是存储多个股票代码的“柱形数据”(日期,开盘价,高,低,收盘量)。 每个交易品种也可能有多个时间范围(例如Google每周柱和Google每日柱)。 我当前的模式将大部分数据放在OHLCV表中。 我距离数据库专家还很远,并且很好奇这是否太幼稚。 非常欢迎建设性的投入。 CREATE TABLE Exchange (exchange TEXT UNIQUE NOT NULL); CREATE TABLE Symbol (symbol TEXT UNIQUE NOT NULL, exchangeID INTEGER NOT NULL); CREATE TABLE Timeframe (timeframe TEXT NOT NULL, symbolID INTEGER NOT NULL); CREATE TABLE OHLCV (date TEXT NOT NULL CHECK (date LIKE '____-__-__ __:__:__'), open REAL NOT NULL, high REAL NOT NULL, low REAL NOT NULL, close REAL NOT NULL, volume INTEGER NOT NULL, timeframeID INTEGER NOT
  • [LeetCode 中等 动态规划 ]309. 最佳买卖股票时机含冷冻期
    题目描述 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。 示例: 输入: [1,2,3,0,2] 输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 动态规划 class Solution { public int maxProfit(int[] prices) { if (prices.length == 0) { return 0; } int n = prices.length; //「处于冷冻期」指的是在第i天结束之后的状态。也就是说:如果第i天结束之后处于冷冻期,那么第 i+1天无法买入股票。 // f[i][0]: 手上持有股票的最大收益 ( 买入股票的最小消耗 // f[i][1]: 手上不持有股票,并且处于冷冻期中的累计最大收益
  • leetcode买卖股票的最佳时机问题汇总java实现
    1.买卖股票的最佳时机 https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 思路:动态规划 class Solution { public int maxProfit(int[] prices) { if(prices==null||prices.length==0){ return 0; } //dp[i]表示到第i天的最大利润 int dp[]=new int[prices.length]; //记录到当前天的股票价格最小值 int minvalue=prices[0]; for(int i=1;i
  • 量化交易 实战之回归法选股 part 2
    实战之回归法选股 part 2 概述代码效果 概述 继上一片的理论, 我们这次来进行一下回测, 看一下结果如何. 代码 # 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。 import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。 def init(context): # 初始化股票因子权重 context.weights = np.array([0.04549957, 0.01249463, -0.02397849, 0.06077185, -0.00195205, -0.00892116, -0.04641399, -0.05644752, -0.08393869]) # 定义股票池数量 context.stocknum = 20 # 定时每月运行函数 scheduler.run_monthly(regression_select, tradingday=1) def regression_select(context, bar_dict): """回归预测选股逻辑""" # 获取沪深300 context.hs300 =
  • 【leetcode初级算法】买卖股票的最佳时机 II
    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3。 示例 2: 输入: [1,2,3,4,5] 输出: 4 解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。 因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。 示例 3: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 提示: 1 <= prices.length <= 3 * 10 ^ 40 <= prices[i] <= 10 ^ 4 作者:力扣 (LeetCode) 链接:https
  • 股票交易一次,两次,无限次java实现
    牛客刷题:股票交易一次,两次,无限次java实现 1.假设你有一个数组,其中第 i 个元素是股票在第 i 天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。设计一个算法来计算可以获得的最大收益。 // An highlighted block /** * 股票一次买卖:双指针算法 * * @auther gaowenbin * @create 2021-03-27-14:26 */ public class gupiaodanci { public static int maxProfit(int[] prices) { if (prices == null || prices.length == 0) { return 0; } int maxPro = 0; int min = prices[0]; for (int i = 0; i < prices.length; i++) { min = Math.min(min, prices[i]); maxPro = Math.max(maxPro, prices[i] - min); } return maxPro; } public static void main(String[] args) { System.out.println(maxProfit(new int[]{7,1,5,3,6,4})); }
  • Ruby on Rails:如何根据search_field 中的post 参数重定向页面?(Ruby on Rails: How to redirect page based on post params in search_field?)
    问题 我正在开发一个小股票市场应用程序,用户可以在其中根据股票代码查找公司股票信息。 在用户在搜索字段中发布 :symbol 参数后,他们应该被重定向到适当的“公司”页面(如华尔街日报、雅虎财经、谷歌财经等)。 我目前可以手动输入带有符号的路线,一切正常。 例如,本地主机:9292/company/GOOG。 我是一个完全的菜鸟,所以任何帮助将不胜感激。 谢谢! 我目前认为: <%== search_field_tag(:symbol, "Enter symbol") %> <%== submit_tag ("Search") %> 这是在我的路线: get "/company/:symbol" => "main#company" post "/company/:symbol" => "main#company_post" 编辑:我正在使用 MarketBeat gem 来提取数据,但我也有一个 Company 表,其中包含列符号和名称。 这是我的控制器: class MainController < ApplicationController def index render :index and return end def company @name = MarketBeat.company params["symbol"] @symbol = MarketBeat
  • 如何使用先进先出法计算股票交易的已实现盈亏?(How to calculate realized P&L of stock trades using the FIFO method?)
    问题 我正在寻找一个 Python 插件,它可以使用 FIFO 方法计算许多股票交易的已实现盈亏。 例如,假设我们有以下三个 MSFT 交易: +75 毫秒 25.10 +50 毫秒 25.12 -100 毫秒 25.22 在 25.22 卖出 100 股将完全抵消在 25.10 买入 75 股的净额,以及在 25.12 买入 50 股的部分净额,即 已实现盈亏 = 75 * (25.22 - 25.10) + 25 * (25.22 - 25.12) = 11.50 美元 悬而未决的职位是: +25 微软金融时报 25.12 回答1 没有 Python,但 R 项目记事本——它是 R-Forge 上更大的 TradeAnalytics 项目的一部分/核心就是这样做的。 我最近需要 C++ 功能的一个子集,并使用吸墨纸代码来基准测试/引导我的 C++ 移植。 (那是在工作,所以没有公共 C++,抱歉。) 回答2 这应该很容易用 Python 编写自己。 “FIFO”是短期的“先入先出队列”。 购买被添加到队列的后面。 从队列的前面出售咀嚼购买(或其中的一部分)。 Python 的 collection.deque(双端队列)是你所需要的机制。
  • python 股票量化盘后分析系统V0.43
    前言: 先放效果图: 这次更新主要是增加了多股跟全市股票回测,策略方面还是跟上篇文章的一样,21日跟55日均线相交的策略。多股方面考虑到了均线的周期跟实际股票的数据数量是否适合问题,例如假设55日的均线就必须有55根日K线才能计算出55日均线,但是当实际多股回测时回测到没有55日均线的新股票就会报错,于是采用了try…except…语句处理。还有一种情况就是单股在绘图时遇到一次也没有交易的情况或只有一个买的信号时绘图出现错误,也是用的try…except…语句处理。关于的backtrader的细节方面还有很多没有考虑到,后面遇到再慢慢解决,一个人自学搞开发真的累,中途找不到解决办法跟资料时真的有想过放弃,后来想想还是再努力下吧,就当是业余爱好也好,锻炼锻炼下脑子,或许比只玩游戏好,说不定解决了一个问题我就能LV1 UP一次,哈哈哈。 当多股回测股票代码输入框没有输入代码只输入时间跟日期就是全市股票回测,估计要3个小时左右才能测完,我的电脑回测了很久,这个问题后面还是得想办法解决,像是增加筛选条件之类的吧。还有多股输入代码那个逗号时小写的, 不是大写的,输入时请注意。 这次只修改了stock_backtrader.py,其他的没文件没修改,其他的文件代码请到上一版本复制下。 代码如下: from __future__ import (absolute_import, division
  • Python 量化投资实战教程(3) —A股回测MACD策略
    量化投资系列文章: Backtrader 教程 — Python 量化投资实战教程(1) Python 量化投资实战教程(2) —MACD策略(+26.9%) Python 量化投资实战教程(3) —A股回测MACD策略 Github仓库:https://github.com/Ckend/pythondict-quant 上一回,我们基于简单的MACD策略回测了华正新材这只股票的收益率,发现效果非常好,收益达到了26.9%,但这个策略放到其他股票上会不会有这么高的收益呢?我们今天就来试试看这个策略在不考虑基本面,只考虑技术面的情况下,在A股上的平均表现。 为了回测该策略在A股上的平均表现,我们从A股随机选取了1000只股票,使用MACD策略回测其2010年1月1日至今,使用MACD策略进行投资的表现。其中,以一万元作为本金,佣金为万分之五,每次交易100股。 最终发现,使用该策略最终亏损的股票有626只,盈利的有372只,有2只股票数据不足被去除。最高盈利有84%,最差亏损也达-34%。盈利超过10%的股票有30只,亏损超过30%的有29只。并总结了这30只盈利超过10%的股票的特点。 下面是用Python和backtrader分析这些股票的详细教程。在公众号后台回复:量化投资3 可获得本文全部代码及数据。本系列文章github仓库: https://github.com
  • LeetCode股票问题总结java
    股票问题总结java 个人博客 https://www.b2bchain.cn/6492.html ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 121. 买卖股票的最佳时机 剑指 Offer 63. 股票的最大利润 只能买卖一次,遍历维护当前最小值 一直更新最大利润即可 class Solution { public int maxProfit(int[] prices) { int len=prices.length; if(len==0) return 0; //只能买卖一次,遍历维护最小值 求得 最大利润即可 int minprice= prices[0]; int ans=Integer.MIN_VALUE; for (int i = 1; i <len ; i++) { if(prices[i]<minprice) minprice=prices[i]; if(ans<(prices[i]-minprice)) ans=prices[i]-minprice; } //细节 return