标签: algorithmic-trading

如何修复运行时错误:Python 迭代期间双端队列发生变化

我正在尝试为算法交易实现市场模拟,我在 github 上找到了这段代码https://github.com/DrAshBooth/PyLOB。问题是,当我在小窗口(例如 2 天)运行代码时,一切都很好,并且得到了预期的结果。但是当我将窗口增加到 20 天或更长时,我收到“RuntimeError: deque mutated during iteration”。我检查了我的代码,但从未发现任何可能在运行期间改变双端队列的内容。以下是产生错误的代码部分:

    self.tape = deque(maxlen=None)
    .
    .
    .
    def avg_volume_traded(self):
       if self.tape != None and len(self.tape) > 0:
          num = 0
          total_volume = 0
          for entry in self.tape:
             total_volume = entry['qty'] + total_volume
             num += 1
          if num != 0 and total_volume != None:
             return total_volume, num
       else:
          return None, None
Run Code Online (Sandbox Code Playgroud)

这是实际的错误消息:

    Exception in thread Thread-10986:
    Traceback (most recent call last):
      File "/home/hamid/anaconda3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
        self.run()
      File …
Run Code Online (Sandbox Code Playgroud)

python lob algorithmic-trading deque

5
推荐指数
1
解决办法
1万
查看次数

如何在Amibroker回测期间获取交易的利润百分比

我正在使用 Amibroker v6.3

我想了解回测期间进行的交易的利润百分比,然后相应地调整卖出标准。当利润低于10%时,我想使用这个函数sell_below10()。当利润>10%时,则使用函数 sell_abv10()。

如何在回测期间检测交易的利润百分比,以便我可以相应地使用正确的卖出功能?

谢谢。

trading algorithmic-trading back-testing amibroker

5
推荐指数
1
解决办法
925
查看次数

Tradingview Pine 脚本给出画线功能的分辨率错误

//@version=4

study(shorttitle="try", title="line", overlay=true, resolution="")

line.new(x1=bar_index[10], y1=close[10], x2=bar_index, y2=close)
Run Code Online (Sandbox Code Playgroud)

我想使用 pine 脚本在交易视图图表中绘制一条简单的线。我收到分辨率错误。我错过了什么吗?

错误:第 5 行:“解决方案”参数与具有副作用的函数不兼容。脚本“crcheck”已保存

algorithmic-trading pine-script

5
推荐指数
2
解决办法
5060
查看次数

找不到函数或函数引用“ema”

我收到错误第 13 行:找不到函数或函数引用“ema”。当我知道 ema 是一个函数时。

我正在尝试执行一个简单的策略,如果价格高于 200 DEMA,并且 SuperTrend 指标发出“买入”信号,则进入多头交易。如果超级趋势指标给出“卖出”信号,我想卖出。我的代码朝着正确的方向发展吗?非常感谢一些帮助!

//@version=5
strategy("DEMA and SuperTrend", overlay=true)

// SuperTrend
atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

// DEMA
demaLength = input(200)
src = input(close, title="Source")
e1 = ema(src, demaLength)
e2 = ema(e1, demaLength)
dema = 2 * e1 - e2

if ta.change(direction) < 0 and close > dema
    strategy.entry("long", strategy.long)
    
if ta.change(direction) > 0
    strategy.close("long", strategy.close)
Run Code Online (Sandbox Code Playgroud)

trading indicator algorithmic-trading pine-script

5
推荐指数
1
解决办法
2万
查看次数

“直播”流的简单移动平均线 - 快速实施

在我的交易应用程序中,我有股票价格的“实时报价”。我需要维持 SMA。假设我想要 20 根蜡烛的 SMA,其中每根蜡烛的持续时间为 10 秒。这意味着

每 10 秒我就有一个“检查点”,其中:

  1. 我“关闭”当前蜡烛并存储最后 10 秒的平均价格。平均值为(最大值 - 最小值)/2
  2. 我“启动”新蜡烛并存储最后的价格。
  3. 我清理“过时的”蜡烛。

每一个刻度:

  1. 我更新当前“形成”蜡烛的“最后”价格并重新计算 SMA。

因此,在任何价格变动时我都需要“重新计算”SMA。在大多数情况下,只有最后一根蜡烛的价格发生变化(因为我们使用最后的价格)。每 10 秒一次,我需要多一点额外的工作 - 我需要“忘记”过时蜡烛的平均值,并“存储”“刚刚创建”蜡烛的平均值。

您能建议如何以最低的延迟实现这一点吗?低延迟是首要要求。

c++ algorithmic-trading

4
推荐指数
1
解决办法
5649
查看次数

MQL4 函数指针/函数回调解决方案

据我所知,MQL4 中不存在函数指针。

作为一种解决方法,我使用:

// included for both caller as callee side
class Callback{
   public: virtual void callback(){ return; }
}
Run Code Online (Sandbox Code Playgroud)

然后在传递回调的源中:

class mycb : Callback{
   public: virtual void callback(){
     // call to whatever function needs to be called back in this source
   }mcbi;
Run Code Online (Sandbox Code Playgroud)

现在 mcbi 可以通过如下方式传递:

 afunction(){
    fie_to_receive_callback((Callback *)mycbi);
 }      
Run Code Online (Sandbox Code Playgroud)

接收者可以回调为:

 fie_to_receive_callback(mycb *mcbi){
    mcbi.callback(); // call the callback function
  }
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法在 mql4 中传递函数回调?

algorithmic-trading forex mql4

4
推荐指数
2
解决办法
2448
查看次数

如何开始使用 QuickFix 库

我已经给出了一个使用c++和quickFix库开发算法交易系统的项目,我在谷歌上搜索了quickFix库,但没有找到任何有用的信息。谁能给我一些信息,我应该从哪里开始?

c++ algorithmic-trading quickfix

4
推荐指数
1
解决办法
2507
查看次数

poloniex中的returnTradeHistory总是返回空列表

我正在使用poloniex提供的python包装器:wrapper

我现在尝试运行的方法是:

def returnTradeHistory(self,currencyPair):
    return self.api_query('returnTradeHistory',{"currencyPair":currencyPair})
Run Code Online (Sandbox Code Playgroud)

但该方法.returnTradeHistory()总是返回一个空列表,即使我已经使用该硬币进行了交易.其他方法按预期工作,即使那些也需要私有API(例如,返回余额).

这是输出的打印: 脚本运行

这是我的交易历史记录: 交易历史

我在这里错过了什么?

python algorithmic-trading bitcoin poloniex

4
推荐指数
1
解决办法
682
查看次数

如何在滚动窗口中应用 Python 中的 Hurst 指数

我试图在滚动窗口上对 SPY 收盘价应用赫斯特指数。如果我将以下代码(我从这里获得:https : //www.quantstart.com/articles/Basics-of-Statistical-Mean-Reversion-Testing)应用于收盘价列,则效果很好。然而,这给了我一个静态值。考虑到最近 200 个收盘价,我想在滚动窗口上应用赫斯特指数。我的目标是获得一列,其中考虑到最近 200 个收盘价,在每一行中更新 Hurst 指数。

from numpy import cumsum, log, polyfit, sqrt, std, subtract
from numpy.random import randn
import pandas_datareader as dr
from datetime import date

df = dr.data.get_data_yahoo('SPY',start='23-01-1991',end=date.today())

def hurst(ts):
    """Returns the Hurst Exponent of the time series vector ts"""
    # Create the range of lag values
    lags = range(2, 100)

    # Calculate the array of the variances of the lagged differences
    tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]

    # …
Run Code Online (Sandbox Code Playgroud)

python trading algorithmic-trading quantitative-finance

4
推荐指数
1
解决办法
4186
查看次数

安装ibapi包

嗨,我正在尝试在 python 中安装 ibapi 但是该包似乎不可用,因为每次我尝试安装它时都会出现错误,还有另一种方法可以安装这个包。对你的帮助表示感谢。我留下了我使用的代码。尝试安装软件包

pip install ibapi
Run Code Online (Sandbox Code Playgroud)

python algorithmic-trading quantitative-finance interactive-brokers ib-api

4
推荐指数
3
解决办法
6514
查看次数