您好,使用交易开拓者(TB)编写策略代码是一个很好的选择,因为TB提供了强大的量化交易平台和丰富的API接口。下面是一个简单的示例,展示如何在TB中编写一个基于双均线的期货交易策略。这里我来做个简单的阐述,要是有不懂的地方可以随时找我单聊。
下面是一个基于双均线的期货交易策略示例代码。这个策略的基本思想是:当短期均线(例如10日均线)上穿长期均线(例如30日均线)时买入,当短期均线下穿长期均线时卖出。
```python
from tqsdk import TqApi, TqSim, TqBacktest, TqReplay, taf, taf_backtest
class DualMAStrategy:
def __init__(self, api, symbol, short_period=10, long_period=30):
self.api = api
self.symbol = symbol
self.short_period = short_period
self.long_period = long_period
self.short_ma = 0
self.long_ma = 0
self.position = 0
def run(self):
quote = api.get_quote(self.symbol)
kline = api.get_kline_serial(self.symbol, duration_seconds=60 * 60, count=100) # 获取1小时K线数据
while True:
api.wait_update()
if api.is_changing(kline):
self.short_ma = sum(kline.close[-self.short_period:]) / self.short_period
self.long_ma = sum(kline.close[-self.long_period:]) / self.long_period
if self.position == 0:
if self.short_ma > self.long_ma:
self.buy()
elif self.position > 0:
if self.short_ma < self.long_ma:
self.sell()
def buy(self):
order = self.api.insert_order(symbol=self.symbol, direction="BUY", offset="OPEN", volume=1)
self.position = 1
print(f"Buy order placed at price: {order.price}")
def sell(self):
order = self.api.insert_order(symbol=self.symbol, direction="SELL", offset="CLOSE", volume=1)
self.position = 0
print(f"Sell order placed at price: {order.price}")
if __name__ == "__main__":
api = TqApi(TqSim(), backtest=TqBacktest(start_dt=datetime.datetime(2020, 1, 1), end_dt=datetime.datetime(2023, 12, 31)))
symbol = "SHFE.rb2101" # 示例合约代码,根据实际情况修改
strategy = DualMAStrategy(api, symbol)
strategy.run()
api.close()
``
希望这些指导对你有所帮助!如果你有任何具体的问题或需要进一步的帮助,请随时提问。
想不想深入了解期货量化交易、数据回测、策略优化?赶快预约我领取资料,我会帮助你提升交易策略的成功效率。还是那句话,万事开头难,这里说的只是抛砖引玉,如果你是量化小白,找个老手带你入门是很重要的,有问题就通过电话或微信联系我吧,还有现成的内部量化策略,低回撤,收益稳定,免编程,直接用!
发布于2024-10-29 13:14 上海