我需要能够确定特定的“交易”(由“信号”表示)是否通过指示每个交易的赢或输而产生盈利或亏损。
我需要使用Python检查高低列表中的下一个位置( signal
或入口点或日期+ 1)(列表: {{1} , close
, highs
将具有相同数量的值),以使值增加等于或大于在进入信号之外的某个点处为2.5%。
但是,我还希望Python确定在升值2.5%或更多之前该值是否下降3%或更多。
必须对lows
中的每个条目进行此操作。
从本质上讲,我需要限制卖出102.5%和止损97%。
不幸的是,到目前为止我开发的代码似乎没有用。
我缺少什么?
signal
答案 0 :(得分:2)
profit
仅针对highs[-1]
计算,loss
仅针对lows[-1]
计算。当您在每个循环中替换profit
和loss
时,其他所有内容都将被丢弃。
您希望找到条件为true的值的 set 。使用zip
将低点和高点放在一起:
for i in signals:
entry = float(close[i])
for high, low in zip(high[i + 1:], low[i + 1:]):
profit = ((high - entry) / entry) * 100
loss = ((low - entry) / entry) * 100
if loss > -3:
if profit >= 2.5:
print "Win"
else:
print "Loss"
答案 1 :(得分:2)
您是否已经检查过python-libraries进行回测?事实上我使用其他库,但有一些非常流行的基于python的解决方案,如“pybacktest”,“PyAlgoTrade”或“UltraFinance”。也许集成这样的库可能对您的用例有利......