缩量黄金线
tj:=v<ref(v,1) and c/ref(c,1)>1.05;ts:=barslast(tj);
jx:ref(c,ts);
涨幅可以再调动,涨百分之五的更有说服力! import pandas as pd
import numpy as np
import ccxt# 交易所连接库
from datetime import datetime
import backtrader as bt# 回测框架
# ================== 数据模块 ==================
class DataFetcher:
def __init__(self, api_key, secret):
self.exchange = ccxt.binance({
'apiKey': api_key,
'secret': secret,
'enableRateLimit': True
})
def fetch_historical_data(self, symbol, timeframe, since):
"""获取历史数据"""
ohlcv = self.exchange.fetch_ohlcv(symbol, timeframe, since)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['date'] = pd.to_datetime(df['timestamp'], unit='ms')
return df.set_index('date')
# ================== 策略模块 ==================
class SMACrossover(bt.Strategy):
params = (
('fast', 10),
('slow', 30),
)
def __init__(self):
self.fast_ma = bt.indicators.SMA(period=self.p.fast)
self.slow_ma = bt.indicators.SMA(period=self.p.slow)
self.crossover = bt.indicators.CrossOver(self.fast_ma, self.slow_ma)
def next(self):
if not self.position:
if self.crossover > 0:# 金叉
self.buy(size=0.1)# 10%仓位
elif self.crossover < 0: # 死叉
self.close()
# ================== 回测模块 ==================
class Backtester:
def __init__(self, data):
self.cerebro = bt.Cerebro()
self.cerebro.adddata(data)
self.cerebro.addstrategy(SMACrossover)
def run_backtest(self):
self.cerebro.run()
return self.cerebro.plot()
# ================== 交易执行模块 ==================
class TradeExecutor:
def __init__(self, api_key, secret):
self.exchange = ccxt.binance({
'apiKey': api_key,
'secret': secret,
'enableRateLimit': True
})
def execute_order(self, symbol, side, amount):
"""执行交易订单"""
order_type = 'market'
try:
return self.exchange.create_order(symbol, order_type, side, amount)
except Exception as e:
print(f"交易执行失败: {e}")
# ================== 主程序 ==================
if __name__ == "__main__":
# 配置参数
API_KEY = 'your_api_key'
API_SECRET = 'your_api_secret'
SYMBOL = 'BTC/USDT'
TIMEFRAME = '1d'
# 数据获取
data_fetcher = DataFetcher(API_KEY, API_SECRET)
historical_data = data_fetcher.fetch_historical_data(SYMBOL, TIMEFRAME, since=datetime(2020,1,1).timestamp()*1000)
# 转换数据格式为Backtrader可识别格式
data = bt.feeds.PandasData(dataname=historical_data)
# 回测
backtester = Backtester(data)
backtester.run_backtest()
# 实盘交易示例(需谨慎)
# executor = TradeExecutor(API_KEY, API_SECRET)
# executor.execute_order(SYMBOL, 'buy', 0.01)# 买入0.01个BTC {短线龙头战法公式(参数可调)}
N:=5; // 近期周期
M:=3; // 连阳天数
量能倍数:=2; // 量能要求
MA5:=MA(C,5);
MA10:=MA(C,10);
VOL_MA5:=MA(V,5);
涨停:=C/REF(C,1)>1.098 AND H==L;// 排除烂板
连阳:=COUNT(C>O,M)>=M; // 连续阳线
板块热度:=EXIST((BLOCKVOL/REF(BLOCKVOL,1))>1.5,3);// 板块量能放大
龙虎榜:=DYNAINFO(28)>0; // 近期有上榜记录
量价突破:=V>REF(V,1)*量能倍数 AND C>REF(HHV(H,N),1); // 倍量突破前高
均线共振:=MA5>MA10 AND MA10>REF(MA10,1); // 均线多头排列
资金强度:=EMA((C-LLV(L,20))/(HHV(H,20)-LLV(L,20))*100,5)>80; // 威廉指标优化
DRAWTEXT_FIX(1,0.05,0,0,'当前模式:短线龙头筛选'),COLORYELLOW;
选股条件:
涨停 AND 连阳
AND 板块热度
AND 量价突破
AND 均线共振
AND 资金强度
AND 龙虎榜
AND FINANCE(7)/CAPITAL>0.3;// 流通市值适中(30-100亿) { 高收益策略指标 (32倍模型) }
{ 核心思路:强势股回调狙击+多重过滤验证 }
N1:=7; { 短线均线周期 }
N2:=42;{ 长线趋势周期 }
RSI_PERIOD:=5; { RSI敏感周期 }
{ 多空动能系统 }
MA_FAST:=EMA(CLOSE,N1);
MA_SLOW:=EMA(CLOSE,N2);
TREND_UP:=MA_FAST > MA_SLOW AND MA_SLOW > REF(MA_SLOW,3);
{ 量能突变检测 }
VOL_RATE:=VOL/MA(VOL,20);
VOL_BURST:=VOL_RATE > 2.5 AND VOL > REF(VOL,1)*1.8;
{ 主力资金强度 }
CMF:=SUM(((CLOSE-LOW)-(HIGH-CLOSE))/(HIGH-LOW)*VOL,14)/MA(VOL,14)*100;
MONEY_FLOW:=CMF > REF(CMF,5) AND CMF > 20;
{ 超短期RSI背离 }
RSI_VAL:=RSI(CLOSE,RSI_PERIOD);
RSI_BOT:=LLV(RSI_VAL,5) > LLV(RSI_VAL,10) AND LLV(CLOSE,5) < LLV(CLOSE,10);
{ 波动率过滤 }
ATR_RATIO:=ATR(14)/MA(CLOSE,14);
HIGH_VOLAT:=ATR_RATIO > 0.03; { 筛选活跃股 }
{ 强势板块确认 }
SECTOR_STR:=IF(INBLOCK('半导体'),1.2,IF(INBLOCK('人工智能'),1.3,1));
{ 终极买点组合 }
BUY_SIGNAL: VOL_BURST AND
TREND_UP AND
MONEY_FLOW AND
RSI_BOT AND
HIGH_VOLAT AND
CLOSE > MA(CLOSE,60)*1.15 AND
SECTOR_STR > 1 AND
EVERY(CLOSE>OPEN,2);
{ 止损信号 }
STOP_LOSS:=CLOSE < LLV(LOW,5)*0.97 OR CROSS(MA_SLOW,MA_FAST);
{ 可视化 }
DRAWICON(BUY_SIGNAL,LOW*0.98,1);
DRAWICON(STOP_LOSS,HIGH*1.02,2);
STICKLINE(BUY_SIGNAL,H,L,0.8,0),COLORRED;
页:
[1]