我正在尝试使用FREQTRADE进行代码的回溯测试。这一概念是指尾随止损但买入(尾随买入)。回溯测试结果表明,没有发出购买订单
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# TRAILING BUY
current_price=dataframe['close'].tail(1)
dataframe['trailbuy'] = 0 # keep on trailing
trailing_buy_offset = 0.005
trailing_buy_order_enabled = True
trailing_buy_order_started = False
if trailing_buy_order_started:
if current_price < trailing_buy_order_downlimit: # if price is still falling down
trailing_buy_order_uplimit = current_price * (1 + trailing_buy_offset) # update uplimit
trailing_buy_order_downlimit = current_price # update downlimit
dataframe['trailbuy'] = 0 # keep on trailing
if current_price >= trailing_buy_order_uplimit: # if price has bounced back and now is over uplimit
dataframe['trailbuy'] = 1 # finished trailing - buy order must be submitted immediately
trailing_buy_order_started = False
if trailing_buy_order_started == False and trailing_buy_order_enabled == True:
trailing_buy_order_started = True
trailing_buy_order_uplimit = current_price * (1 + trailing_buy_offset) # initialize uplimit
trailing_buy_order_downlimit = current_price # initialize down limit
return dataframe
我在spyder中分别运行了代码,使用for循环在数据帧中运行,这表明dataframe['trailing']
在应该发出购买订单时会发生变化
以下是我在spyder中用于检查想法的代码:
data=[[1628812800000,44400.06,44440.62,44391.87,44425.53,62.976777],[1628812860000,44428.3,44457.45,44409.06,44442.97,36.574744]]
(使用了更多OHLCV条目)
current_price=dataframe['close'].tail(1)
trailing_buy_offset = 0.005
trailing_buy_order_enabled = 1
trailing_buy_order_started = 0
for i in (range(0,len(dataframe['open']))):
dataframe['trailbuy'] = 0
current_price=dataframe['close'][i]
if trailing_buy_order_started:
if current_price < trailing_buy_order_downlimit: # if price is still falling down
trailing_buy_order_uplimit = current_price * (1 + trailing_buy_offset) # update uplimit
trailing_buy_order_downlimit = current_price # update downlimit
dataframe['trailbuy'] = 0 # keep on trailing
if current_price >= trailing_buy_order_uplimit: # if price has bounced back and now is over uplimit
dataframe['trailbuy'] = 1 # finished trailing - buy order must be submitted immediately
trailing_buy_order_started = 0
if trailing_buy_order_started == 0 and trailing_buy_order_enabled == 1:
trailing_buy_order_started = 1
trailing_buy_order_uplimit = current_price * (1 + trailing_buy_offset) # initialize uplimit
trailing_buy_order_downlimit = current_price # initialize down limit
print(dataframe['trailbuy'].tail(1))
我不知道我在freqtrade使用的strategy.py文件中的代码定位是否有问题。任何帮助都将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐