3.64K 浏览
0

from tqsdk import TqApi, TqSim, BacktestFinished, TqBacktest, TargetPosTask
from datetime import date
from tqsdk.ta import MA
 def buy_Position(klines):
    ma5 = MA(klines,5)
    ma10 = MA(klines,10)
    if klines.iloc[-1].close > ma5.iloc[-1].ma:
        return 1
    return 0
 def close_buy(klines):
    ma5 = MA(klines,5)
    ma10 = MA(klines,10)
    if klines.iloc[-1].close < ma5.iloc[-1].ma:
        return 1
    return 0
 def sell_Position(klines):
    ma5 = MA(klines,5)
    ma10 = MA(klines,10)
    if klines.iloc[-1].close < ma5.iloc[-1].ma:
        return 1
    return 0
 def close_sell(klines):
    ma5 = MA(klines,5)
    ma10 = MA(klines,10)
    if klines.iloc[-1].close > ma5.iloc[-1].ma:
        return 1
    return 0
  try:
    symbol = "DCE.i2009"
    acc = TqSim(100000)
    api = TqApi(acc, backtest=TqBacktest(start_dt=date(2020,3,16), end_dt=date(2020,4,16)),web_gui = "http://127.0.0.1:12345")
    klines = api.get_kline_serial(symbol,1200,200)
    orders = api.get_order()
    data = api.get_position(symbol)
    buy_his_today = data["pos_long_his"]+data["pos_long_today"]
    sell_his_today = data["pos_short_his"]+data["pos_short_today"]
     while True:
        api.wait_update()
        klines = api.get_kline_serial(symbol,1200,200)
         if buy_Position(klines):
            if orders == {} and buy_his_today == 0:
                order = api.insert_order(symbol, direction="BUY", offset="OPEN",volume=1)
                print("开多仓")
        if close_buy(klines):
            if orders != {} and buy_his_today != 0:
                order = api.insert_order(symbol, direction="SELL", offset="CLOSE",volume=1)
                print("平多仓")
        if sell_Position(klines):
            if orders == {} and sell_his_today == 0:
                order = api.insert_order(symbol, direction="SELL", offset="OPEN",volume=1)
                print("开空仓")
        if close_sell(klines):
            if orders != {} and sell_his_today != 0:
                order = api.insert_order(symbol, direction="BUY", offset="CLOSE",volume=1)
                print("平空仓")
except BacktestFinished as e:
  # 回测结束时会执行这里的代码
  print(acc.trade_log)

lhb5186 已回答的问题 2021年5月3日
0

ma5.iloc[-1].ma

为什么我这样写会报错’Series’ object has no attribute ‘MA’

这怎么解决?

lhb5186 已回答的问题 2021年5月3日
您正在查看2个答案中的1个,单击此处查看所有答案。