指定
import pandas as pd
import numpy as np
def generate_signals(data):
signals = pd.DataFrame(index=data.index)
signals['price'] = data['Close']
# Calculate moving averages
signals['short_ma'] = data['Close'].rolling(window=20, min_periods=1).mean()
signals['long_ma'] = data['Close'].rolling(window=50, min_periods=1).mean()
# Generate buy signals
signals['buy_signal'] = np.where(signals['short_ma'] > signals['long_ma'], 1, 0)
# Generate sell signals
signals['sell_signal'] = np.where(signals['short_ma'] < signals['long_ma'], -1, 0)
return signals
def backtest_strategy(signals, initial_capital=10000):
positions = pd.DataFrame(index=signals.index).fillna(0.0)
positions['asset'] = 1000 * signals['buy_signal'] + -1000 * signals['sell_signal']
# Calculate portfolio value
portfolio = positions.multiply(signals['price'], axis=0)
pos_diff = positions.diff()
portfolio['holdings'] = (positions.multiply(signals['price'], axis=0)).sum(axis=1)
portfolio['cash'] = initial_capital - (pos_diff.multiply(signals['price'], axis=0)).sum(axis=1).cumsum()
portfolio['total'] = portfolio['cash'] + portfolio['holdings']
portfolio['returns'] = portfolio['total'].pct_change()
return portfolio
# Example usage:
# Assuming 'data' is a DataFrame containing historical price data with 'Date' as index and 'Close' as a column
# signals = generate_signals(data)
# portfolio = backtest_strategy(signals)
# print(portfolio.tail())
反馈
1
等级
项目
378
72%
仲裁
19
32%
/
47%
逾期
16
4%
空闲
发布者: 15 代码
2
等级
项目
462
26%
仲裁
139
20%
/
60%
逾期
100
22%
空闲
3
等级
项目
478
40%
仲裁
105
40%
/
24%
逾期
82
17%
已载入
发布者: 2 代码
相似订单
PHANTOM PROTOCOL V1
35 - 150 USD
PHANTOM PROTOCOL V1 – MT5 EXPERT ADVISOR SPECIFICATION Develop a professional MetaTrader 5 (MT5) Expert Advisor named “PHANTOM PROTOCOL V1”. PRIMARY MARKET: - XAUUSD (Gold) - Designed primarily for M15 and H1 timeframes. - The EA must work with both 3-digit and 2-digit gold pricing where applicable. TRADING LOGIC: Use pure price-action and market-structure analysis rather than relying on a single indicator. The EA
Most of the expert is already coded . Create a panel to show the Ratio for the Range . Trigger is based on ratio . Show Distribution / project starts after we clear Distribution
项目信息
预算
30 - 50 USD
截止日期
从 1 到 14 天