React项目开发实践:RM_dev_portfolio作品集网站指南

需积分: 5 0 下载量 161 浏览量 更新于2024-12-04 收藏 250KB ZIP 举报
资源摘要信息:"RM_dev_portfolio:我的我们开发和设计作品集网站" 1. Create React App入门知识点: - Create React App是一个官方支持的脚手架,用于简化React应用的创建和启动流程。 - 使用Create React App可以帮助开发者快速搭建起一个现代的Web应用开发环境。 - 在项目目录中,可以通过运行脚本命令来管理React应用的不同开发阶段。 - “yarn start”命令用于在开发模式下运行React应用,开发者所做的更改会自动编译并实时反映到浏览器中,便于观察效果。 - “yarn test”命令用于启动交互式测试环境,可以进行组件的单元测试和快照测试,提升代码质量。 - “yarn build”命令用于构建生产环境下的应用,会对应用进行优化,压缩代码,减少传输体积,并且文件名会包含哈希值,以确保浏览器缓存的正确性,这对于部署到生产环境是非常重要的。 - “yarn eject”是一个不可逆的操作,它允许开发者查看并自定义底层的构建配置,比如webpack、Babel等工具的配置,但一旦执行,将无法恢复到使用Create React App的默认配置。 2. JavaScript编程语言知识点: - JavaScript是一种高级的、解释执行的编程语言,它在浏览器端提供动态交互功能。 - JavaScript是Web开发的三大核心技术之一(HTML、CSS、JavaScript),通常用于实现前端逻辑。 - JavaScript支持事件驱动编程,能够响应用户的交互动作,如点击、滚动、输入等。 - JavaScript是基于原型继承的面向对象语言,可以使用函数、对象、数组等多种数据类型。 - ES6(ECMAScript 2015)之后的版本为JavaScript带来了许多新特性,如箭头函数、模板字符串、解构赋值、类、模块等。 - Node.js的出现让JavaScript能够在服务器端运行,极大地扩展了其应用场景。 3. 压缩包子文件的文件名称列表知识点: - “RM_dev_portfolio-main”表明了项目文件夹的主要结构。在文件系统中,项目可能被组织成一个或多个子目录。 - 项目名称通常会使用连字符或下划线进行分隔,以保持命名的一致性和可读性。 - 在使用版本控制系统(如Git)时,不同的文件夹结构会反映项目的不同模块或者功能部分。 - 主文件夹通常包含项目的入口文件,例如在React项目中,入口文件一般是index.js或者App.js。 - 压缩包子文件(zip file)通常用于在不同的开发环境或者在代码提交前进行代码分发和归档。 通过上述知识解析,开发者能够了解如何使用Create React App来创建和管理React应用,掌握JavaScript作为前端开发核心语言的基础应用,并对项目的文件结构有一个基本的认识。

import jqdata # 初始化聚宽账号密码 def initialize(context): # 设置回测日期区间 set_benchmark('000300.XSHG') set_option('use_real_price', True) # 设置买入的股票数量上限 g.max_stock_count = 5 def handle_data(context, data): # 获取当前日期 current_date = context.current_dt.date() # 获取股票池中的股票列表 stocks = get_index_stocks('000852.XSHG') # 按照股票池中的股票进行遍历 for stock in stocks: # 判断股票是否满足买入条件 if check_buy_condition(stock, current_date, context): buy_stock(stock, context) # 判断持有的股票是否满足卖出条件 if check_sell_condition(stock, current_date, context): sell_stock(stock, context) def check_buy_condition(stock, current_date, context): # 判断股票是否连续下跌三天 prices = attribute_history(stock, 3, '1d', ['close']) if len(prices) == 3 and prices['close'][-1] < prices['close'][-2] < prices['close'][-3]: return True else: return False def buy_stock(stock, context): # 判断当前持仓的股票数量是否已达上限 if len(context.portfolio.positions) >= g.max_stock_count: return # 买入股票 order_value(stock, context.portfolio.cash / g.max_stock_count) def check_sell_condition(stock, current_date, context): # 获取持有股票的买入日期 buy_date = context.portfolio.positions[stock].init_time.date() # 判断是否满足卖出条件 if current_date - buy_date >= 3: # 判断是否亏损超过5% if (context.portfolio.positions[stock].last_price - context.portfolio.positions[stock].avg_cost) / context.portfolio.positions[stock].avg_cost <= -0.05: return True return False def sell_stock(stock, context): # 卖出股票 order_target(stock, 0)当中buy_date = context.portfolio.positions[stock].init_time.date()报错'NoneType' object has no attribute 'date'

2023-07-10 上传

def initialize(context): # 设置回测日期区间 set_benchmark('000300.XSHG') set_option('use_real_price', True) # 设置买入的股票数量上限 g.max_stock_count = 5 def handle_data(context, data): # 获取当前日期 current_date = context.current_dt.date() # 获取股票池中的股票列表 stocks = get_index_stocks('000852.XSHG') # 按照股票池中的股票进行遍历 for stock in stocks: # 判断股票是否满足买入条件 if check_buy_condition(stock, current_date, context): buy_stock(stock, context) # 判断持有的股票是否满足卖出条件 if check_sell_condition(stock, current_date, context): sell_stock(stock, context) def check_buy_condition(stock, current_date, context): # 判断股票是否连续下跌三天 prices = attribute_history(stock, 3, '1d', ['close']) if len(prices) == 3 and prices['close'][-1] < prices['close'][-2] < prices['close'][-3]: return True else: return False def buy_stock(stock, context): # 判断当前持仓的股票数量是否已达上限 if len(context.portfolio.positions) >= g.max_stock_count: return buy_date = context.current_dt.date() # 买入股票 order_value(stock, context.portfolio.cash / g.max_stock_count) def check_sell_condition(stock, current_date, context): # 获取持有股票的买入日期 buy_date = context.current_dt.date() time_diff = current_date - buy_date threshold = timedelta(days=3) # 判断是否满足卖出条件 if time_diff >= threshold or ((context.portfolio.positions[stock].last_price - context.portfolio.positions[stock].avg_cost) / context.portfolio.positions[stock].avg_cost <= -0.05): # 判断是否亏损超过5% return order_target(stock, 0) 报错 type object 'UserObject' has no attribute '__getattr__'

2023-07-11 上传

import numpy as np import pandas as pd import talib def initialize(context): context.symbol = 'BTCUSDT' context.window_size = 5 context.deviation = 1 context.trade_size = 0.01 context.stop_loss = 0.05 context.take_profit = 0.1 schedule_function(rebalance, date_rules.every_day(), time_rules.market_open()) def rebalance(context, data): price = data.history(context.symbol, 'close', context.window_size + 1, '1d') signal = mean_reversion_signal(price, context.window_size, context.deviation) current_position = context.portfolio.positions[context.symbol].amount if signal[-1] == 1 and current_position <= 0: target_position_size = context.trade_size / data.current(context.symbol, 'close') order_target_percent(context.symbol, target_position_size) elif signal[-1] == -1 and current_position >= 0: order_target(context.symbol, 0) elif current_position > 0: current_price = data.current(context.symbol, 'close') stop_loss_price = current_price * (1 - context.stop_loss) take_profit_price = current_price * (1 + context.take_profit) if current_price <= stop_loss_price or current_price >= take_profit_price: order_target(context.symbol, 0) def moving_average(x, n): ma = talib.SMA(x, timeperiod=n) return ma def std_deviation(x, n): std = talib.STDDEV(x, timeperiod=n) return std def mean_reversion_signal(price, window_size, deviation): ma = moving_average(price, window_size) std = std_deviation(price, window_size) upper_band = ma + deviation * std lower_band = ma - deviation * std signal = np.zeros_like(price) signal[price > upper_band] = -1 # 卖出信号 signal[price < lower_band] = 1 # 买入信号 return signal ''' 运行回测 ''' start_date = pd.to_datetime('2019-01-01', utc=True) end_date = pd.to_datetime('2021-01-01', utc=True) results = run_algorithm( start=start_date, end=end_date, initialize=initialize, capital_base=10000, data_frequency='daily', bundle='binance' ) ''' 查看回测结果 ''' print(results.portfolio_value)运行有错误

2023-05-26 上传
2023-05-28 上传