找回密码
 立即注册

QQ登录

只需一步,快速开始

广告载入中...
查看: 601|回复: 3

缩量黄金线

[复制链接]
发表于 2017-8-10 09:22 | 显示全部楼层 |阅读模式

马上注册,享用更多功能,让你轻松玩转本论坛。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
tj:=v<ref(v,1) and c/ref(c,1)>1.05;
ts:=barslast(tj);
jx:ref(c,ts);

 楼主| 发表于 2017-8-10 09:26 | 显示全部楼层
涨幅可以再调动,涨百分之五的更有说服力!
回复

使用道具 举报

 楼主| 发表于 2025-3-5 07:20 | 显示全部楼层
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
回复

使用道具 举报

 楼主| 发表于 2025-3-5 08:06 | 显示全部楼层
{短线龙头战法公式(参数可调)}
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亿)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表