回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我的一本字典有个奇怪的问题。你知道吗</p>
<p>下面是一个方法,它将根据接收到的时间帧执行另一个方法。时间框架为m1、m5、m15、m30、H1、H4、D1、W1、m1。你知道吗</p>
<p>基本上从1分钟到1个月。你知道吗</p>
<pre><code>def get_trading_range(self, init_date, time_frame):
"""
"""
key = time_frame[:1]
tr_dict = {
'D' : self._daily_range(init_date),
'W' : self._weekly_range(init_date),
'M' : self._monthly_range(init_date),
'H' : self._hourly_range(init_date, time_frame),
'm' : self._minutely_range(init_date, time_frame)
}
return tr_dict[key]
</code></pre>
<p>方法的调用方式如下</p>
<pre><code>DateRange().get_trading_range(datetime(some_date), 'D1')
</code></pre>
<p>它似乎在选择“m”方法。我尝试删除'm'键和值,然后再次执行时,它选择'H'方法。只有同时删除“m”和“H”键和值时,才会执行“D”方法。你知道吗</p>
<p>这是什么奇怪的虫子吗?你知道吗</p>
<p>这是回溯</p>
<pre class="lang-none prettyprint-override"><code>Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "engine.py", line 25, in _historical
HistoricalCollector().historical_prices(hist_queue, live_queue, event)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 90, in historical_prices
self._historical_iter(hist_queue, live_queue, fxoffer)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 73, in _historical_iter
self._collect_data(fxc, offer, time_frame, init_date)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 28, in _collect_data
dtx = DateRange().get_trading_range(init_date, time_frame)
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 84, in get_trading_range
'm' : self._minutely_range(init_date, time_frame),
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 103, in _minutely_range
freq = self._data_frequency(time_frame)[0]
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 23, in _data_frequency
return freq_keys[time_frame]
KeyError: 'D1'
</code></pre>
<p>也尝试了<code>key = time_frame[0]</code></p>
<pre class="lang-none prettyprint-override"><code>Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "engine.py", line 25, in _historical
HistoricalCollector().historical_prices(hist_queue, live_queue, event)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 90, in historical_prices
self._historical_iter(hist_queue, live_queue, fxoffer)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 73, in _historical_iter
self._collect_data(fxc, offer, time_frame, init_date)
File "/home/nonroot/fxcmminer_1.1/fxcm/historical.py", line 28, in _collect_data
dtx = DateRange().get_trading_range(init_date, str(time_frame))
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 84, in get_trading_range
'm' : self._minutely_range(init_date, time_frame),
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 103, in _minutely_range
freq = self._data_frequency(time_frame)[0]
File "/home/nonroot/fxcmminer_1.1/fxcm/tradinghours.py", line 23, in _data_frequency
return freq_keys[time_frame]
KeyError: 'D1'
</code></pre>