3.45K 浏览
0

您好:

我在运行交易策略的多实例的示例程序时,

出现提示错误:

short_avg = ma(klines[“close”], args.SHORT)

ValueError: window must be an integer

示例程序如下:

<span class="n">SYMBOL</span> <span class="o">=</span> <span class="s2">"SHFE.bu1912"</span>  <span class="c1"># 合约代码</span>
<span class="n">SHORT</span> <span class="o">=</span> <span class="mi">30</span>  <span class="c1"># 短周期</span>
<span class="n">LONG</span> <span class="o">=</span> <span class="mi">60</span>  <span class="c1"># 长周期</span>

<span class="n">api</span> <span class="o">=</span> <span class="n">TqApi</span><span class="p">(</span><span class="n">TqSim</span><span class="p">())</span>

<span class="n">klines</span> <span class="o">=</span> <span class="n">api</span><span class="o">.</span><span class="n">get_kline_serial</span><span class="p">(</span><span class="n">SYMBOL</span><span class="p">,</span> <span class="n">duration_seconds</span><span class="o">=</span><span class="mi">60</span><span class="p">,</span> <span class="n">data_length</span><span class="o">=</span><span class="n">LONG</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">target_pos</span> <span class="o">=</span> <span class="n">TargetPosTask</span><span class="p">(</span><span class="n">api</span><span class="p">,</span> <span class="n">SYMBOL</span><span class="p">)</span>

<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
    <span class="n">api</span><span class="o">.</span><span class="n">wait_update</span><span class="p">()</span>
    <span class="k">if</span> <span class="n">api</span><span class="o">.</span><span class="n">is_changing</span><span class="p">(</span><span class="n">klines</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span> <span class="s2">"datetime"</span><span class="p">):</span>
        <span class="n">short_avg</span> <span class="o">=</span> <span class="n">ma</span><span class="p">(</span><span class="n">klines</span><span class="p">[</span><span class="s2">"close"</span><span class="p">],</span> <span class="n">SHORT</span><span class="p">)</span>
        <span class="n">long_avg</span> <span class="o">=</span> <span class="n">ma</span><span class="p">(</span><span class="n">klines</span><span class="p">[</span><span class="s2">"close"</span><span class="p">],</span> <span class="n">LONG</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">long_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o"><</span> <span class="n">short_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="ow">and</span> <span class="n">long_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">></span> <span class="n">short_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
            <span class="n">target_pos</span><span class="o">.</span><span class="n">set_target_volume</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">)</span>
            <span class="nb">print</span><span class="p">(</span><span class="s2">"均线下穿,做空"</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">short_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="o"><</span> <span class="n">long_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span> <span class="ow">and</span> <span class="n">short_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">></span> <span class="n">long_avg</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
            <span class="n">target_pos</span><span class="o">.</span><span class="n">set_target_volume</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
            <span class="nb">print</span><span class="p">(</span><span class="s2">"均线上穿,做多"</span><span class="p">)

</span>
lookis 已回答的问题 2020年8月8日
1

如果你用的是 argparse 做参数输入的话,需要把参数类型指定一下

parser.add_argument(‘SHORT’, type=int)

或者在使用的时候做一下类型转化 int(arg.SHORT)

P.S 你粘的示例程序被解析成html代码了,不易读所以我这就完全没看你的代码做的回答

lookis 已回答的问题 2020年8月8日