金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 582|回复: 1

技术帮看一下?老师显示末尾缺少分号,需要怎么处理?

[复制链接]

8

主题

33

帖子

33

积分

Rank: 1

等级: 新手上路

注册:
2025-3-12
曾用名:
发表于 2025-3-12 20:57 | 显示全部楼层 |阅读模式
# 导入必要库
import pandas as pd
import talib
from pylab import *

# 策略参数
FAST_LEN = 20
SLOW_LEN = 60
ATR_LEN = 14
RISK_RATIO = 0.02

# 初始化函数
def initialize(context):
    # 设置合约
    context.symbol  = 'AU88'  # 沪金主力合约
    context.bar_interval  = '1d'  # 日线
    subscribe(context.symbol,  context.bar_interval)

    # 策略变量
    context.position  = 0  # 持仓方向
    context.stop_loss  = 0  # 动态止损价
    context.trail_high  = 0  # 波段高点跟踪

# K线处理函数
def handle_bar(context):
    # 获取数据
    hist = history_bars(context.symbol,  max(FAST_LEN, SLOW_LEN, ATR_LEN)*3,
                      context.bar_interval,  ['close','high','low','volume'])
    close = hist['close']
    high = hist['high']
    low = hist['low']
    vol = hist['volume']

    # 指标计算
    ma20 = talib.EMA(close, FAST_LEN) + 0.5*(high[-1] - low[-1])
    ma60 = talib.WMA(close, SLOW_LEN)
    atr = talib.ATR(high, low, close, ATR_LEN)[-1]

    # 交易信号
    cross_up = (ma20[-2] < ma60[-2]) and (ma20[-1] > ma60[-1])  # 金叉
    cross_down = (ma20[-2] > ma60[-2]) and (ma20[-1] < ma60[-1])  # 死叉

    # 辅助条件
    vol_cond = vol[-1] > talib.MA(vol, 20)[-1]
    cci = talib.CCI(high, low, close, 30)[-1]
    hhv_10 = talib.MAX(high[-10:], 10)[-1]
    llv_10 = talib.MIN(low[-10:], 10)[-1]

    # 构建交易条件
    long_cond = cross_up and vol_cond and (cci > -100) and (close[-1] > hhv_10)
    short_cond = cross_down and vol_cond and (cci < 100) and (close[-1] < llv_10)

    # 仓位管理
    if context.current_pos()  == 0 and atr > 0:
        contract_size = get_contract(context.symbol).multiplier
        capital = context.current_capital()
        lot = int(capital * RISK_RATIO / (atr * contract_size))
    else:
        lot = 0

    # 交易执行
    if context.position  == 0:
        if long_cond:
            order_target(context.symbol,  lot)
            context.position  = 1
            context.stop_loss  = close[-1] - 3*atr
            context.trail_high  = high[-1]

        elif short_cond:
            order_target(context.symbol,  -lot)
            context.position  = -1
            context.stop_loss  = close[-1] + 3*atr
            context.trail_low  = low[-1]

    # 持仓管理
    elif context.position  > 0:
        context.trail_high  = max(context.trail_high,  high[-1])
        if close[-1] < context.stop_loss  or close[-1] < context.trail_high*0.985:
            order_target(context.symbol,  0)
            context.position  = 0

    elif context.position  < 0:
        context.trail_low  = min(context.trail_low,  low[-1])
        if close[-1] > context.stop_loss  or close[-1] > context.trail_low*1.015:
            order_target(context.symbol,  0)
            context.position  = 0

# 风险控制
def on_strategy_end(context):
    order_target(context.symbol,  0)  # 平掉所有持仓

回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-3-13 08:53 | 显示全部楼层
这个时python的?另外不要直接用ai写代码,很多函数需要结合软件自己的语法才行的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-7-15 21:34 , Processed in 0.105086 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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