2 个不稳定版本
0.1.0 | 2023年8月26日 |
---|---|
0.0.1 | 2023年6月15日 |
#5 in #coinbase
130KB
1K SLoC
oscillatorsetups
财务技术分析库
oscillatorsetups
是一个基于 Rust 的财务技术分析库,旨在确定各种技术振荡器的最盈利配置。
它提供了广泛金融数据的处理能力,使其适用于股票、商品、外汇和加密货币。
主要模块:
- 振荡器:对交易数据进行技术分析计算。
- 盈亏模拟:分析各种振荡器配置的潜在盈亏。
- 数据获取:虽然这不是它的主要焦点,但该库可以从加密货币交易所获取交易数据,作为辅助工具帮助进行振荡器分析。
由于易于获取和免费的 API 选项,选择了加密货币的 OHLCV
烛台数据,这有助于高效的测试和开发。
但是,也可以使用任何其他股票指数、商品、外汇数据进行分析。
当前分析能力
- 随机分析:该库目前支持对金融数据的随机振荡器分析。
- 开发中:目前正在开发其他技术指标的分析,如 MACD、RSI 等,将在未来的版本中引入。
安装
要将 oscillatorsetups
包含到您的项目中,请在您的 Cargo.toml
文件中添加以下内容:
[dependencies]
oscillatorsetups = "0.1.0"
使用
分析振荡器配置
以下是使用库确定盈利的随机振荡器配置的方法。
use oscillatorsetups::exchange::chart_data::klines::{Intervals, KlineParams};
use oscillatorsetups::pnl_simulator::stochastic::{PnlParams, Stochastic};
fn main() {
let stochastic = match Stochastic::new(
"binance", // or "coinbase"
KlineParams {
base_asset : "ETH",
quote_asset : "USDT",
interval : Intervals::H4, // Refer to exchange api for correct intervals set values
limit : 1000,
base_url : None, // Defaults: binance is https://api.binance.us or coinbase is "https://api.exchange.coinbase.com"
source : Some("api"),
}) {
Ok(s) => s
.exchange_fee(0.00075) // Default None
.min_qty(0.0001) // Default None
.min_price(0.01), // Default None
Err(e) => {
eprintln!("Failed to create Stochastic: {}", e);
return;
}
};
stochastic.top_net_profit(PnlRange { k_length:5..=42, k_smoothing:3..=42, d_length:3..=42, });
/* At the time of analyzing, above results were:
Net profit: 416.82, Parameters: PnlParams { k_length: 7, k_smoothing: 41, d_length: 24 }
Net profit: 418.47, Parameters: PnlParams { k_length: 11, k_smoothing: 40, d_length: 17 }
Net profit: 424.65, Parameters: PnlParams { k_length: 8, k_smoothing: 41, d_length: 21 }
Net profit: 426.67, Parameters: PnlParams { k_length: 8, k_smoothing: 41, d_length: 24 }
Net profit: 427.69, Parameters: PnlParams { k_length: 23, k_smoothing: 8, d_length: 41 }
Net profit: 435.26, Parameters: PnlParams { k_length: 8, k_smoothing: 40, d_length: 16 }
Net profit: 437.07, Parameters: PnlParams { k_length: 6, k_smoothing: 42, d_length: 15 }
Net profit: 440.80, Parameters: PnlParams { k_length: 8, k_smoothing: 41, d_length: 23 }
Net profit: 444.60, Parameters: PnlParams { k_length: 8, k_smoothing: 40, d_length: 24 }
Net profit: 456.35, Parameters: PnlParams { k_length: 42, k_smoothing: 3, d_length: 4 }
*/
// Further to get full breakdown of most profitable configurations
let pnl = stochastic.pnl(PnlParams { k_length: 42, k_smoothing: 3, d_length: 4, });
println!("{:#?}",pnl);
/* Prints
PnL {
net_profit: 456.35,
gross_profit: 1143.09,
gross_loss: -686.74,
buy_and_hold_return: 102.81,
profit_factor: 1.665,
commission_paid: Some(191.792,),
total_closed_trades: 94,
num_winning_trades: 36,
num_losing_trades: 58,
percent_profitable: 38.3,
avg_winning_trade: 31.75,
avg_losing_trade: -11.84,
ratio_avg_win_loss: 2.682,
largest_winning_trade: 130.9,
largest_losing_trade: -39.92,
avg_ticks_in_winning_trades: 7.36,
avg_ticks_in_losing_trades: 3.65,
}
*/
}
交易所费用信息
每个交易所都有自己的费用结构,费用计算可能因交易量、订单类型、会员级别以及使用原生交易所代币等因素而不同。
以 Coinbase 为例,典型的费用层级从 0.50% 的 Taker 费用和 0.50% 的 Maker 费用开始,对于高量交易者可以降低至 0.04% 的 Taker 费用和 0.00% 的 Maker 费用。
假设您在 Coinbase Pro 上购买价值 1000 美元的资产,交易费率为 0.50%,您可以按照以下方式计算费用:
Coinbase
费用百分比将以小数形式表示,0.50% = 0.005(因为 0.50 ÷ 100 = 0.005)
费用 = $1000(资产价值)x 0.005(小数形式的费用百分比)= $5.00
Binance
标准费用 = $1000(资产价值)x 0.001(标准费用百分比,以小数形式表示)
标准费用 = $1
25% BNB 折扣费用 = $0.75
注意:自本篇帖子起,Binance 对美国地区的 Tier 0 对的比特币和 以太坊 交易提供 0% 费率。费率 - Binance US
测试
要运行库的测试,请使用以下命令:cargo test
。
常见问题和解决方案
- 创建随机失败:解码响应体错误:行 1 列 0 无效类型:map,期望一个序列
请确保您查询的交易所支持指定的间隔。请检查并修改以下配置中的间隔
KlineParams {
base_asset : "ETH",
quote_asset : "USDT",
interval : Intervals::M15, // Refer to the exchange API for the correct set of interval values.
limit : 1000,
base_url : None, // Defaults: Binance is "https://api.binance.us" and Coinbase is "https://api.exchange.coinbase.com"
source : Some("api"),
}
贡献
欢迎并感谢您的贡献!
- 复制存储库。
- 创建您的功能分支(git checkout -b feature/YourFeatureName)。
- 提交您的更改(git commit -am '添加一些功能')。
- 将更改推送到分支(git push origin feature/YourFeatureName)。
- 发起一个拉取请求。
对于重大更改,建议先打开一个问题来讨论拟议的修改。
免责声明
本库提供基于历史市场数据的技术分析工具。请理解其局限性
- 过去与未来:分析结果基于历史数据,不能保证未来的结果。
- 无预测保证:虽然基于已建立的经济理论,但本库不保证市场预测。
- 多样化策略:不要仅依赖此工具。将其输出与其他策略和见解合并是明智的。
- 负责任投资:特别是对于新手交易或技术分析,请从小额投资开始,以掌握市场动态。
您的交易和投资决策应始终基于全面的研究。如有疑问,请寻求财务专家的意见。
许可证
本项目根据 Apache License 2.0 许可证授权。有关更多信息,请参阅 LICENSE 文件。
依赖关系
~9–21MB
~333K SLoC