2

特定の「トレード」(「シグナル」で示される)がそれぞれの勝ち負けを示すことによって利益または損失をもたらしたかどうかを判断できる必要があります。

値の増加が2.5以上であるかどうかsignal、高リストと低リスト(リスト:、、、および同じ数の値を持つ)の次の場所(またはエントリポイントまたは日付+ 1)closehighsチェックするためにPythonが必要です。lowsエントリ信号を超えたある時点での%。

ただし、2.5%以上を評価する前に、Pythonで値が3%以上低下したかどうかを判断することも必要です。

これは、のエントリごとに発生する必要がありますsignal

本質的に、私は102.5%で販売するための制限と、97%での停止が必要です。

残念ながら、これまでに開発したコードは機能していないようです。

私は何が欠けていますか?

signals = [1,5,7]
close   = [5,10,10,10.5,11,12,11.9,14,14,15,16]
highs   = [7,10.2,10.1,11,12,12.1,12.2,14.5,18,19,20]
lows    = [4,9.9,9.8,10,10,11.8,11.8,12,13.8,13.85,14]

for i in signals:
    entry = close[i]
    print i
    for high in highs[i+1:]:
        profit = ( ( high - entry ) / entry ) * 100
    for low in lows[i+1:]:
        loss   = ( ( low  - entry ) / entry ) * 100
    if abs( loss ) <  3:
        if profit  >= 2.5:
            print 'Win'
        else:
            print 'Loss'
4

2 に答える 2

2

あなたprofitは に対してのみ計算されますがhighs[-1]lossは に対してのみ計算されlows[-1]ます。profitおよびloss各ループで置換すると、他のすべてが破棄されます。

条件が真である値のセットを見つけたいとします。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"
于 2012-07-23T09:06:29.183 に答える
2

バックテストのために python-libraries を既にチェックしましたか? 実際、私は他のライブラリを使用していますが、「pybacktest」、「PyAlgoTrade」、「UltraFinance」など、非常に人気のある Python ベースのソリューションがいくつかあります。おそらく、そのようなライブラリを統合すると、ユースケースに有利になる可能性があります...

于 2014-10-05T07:40:25.413 に答える