标签: algorithmic-trading

R中的Websocket

我设法通过以下规范在R中建立了与Mtgox websocket的连接:

我使用了从https://github.com/zeenogee/R-Websockets下载的改进的R库“ websocket” :

require("websockets")
con = websocket("https://socketio.mtgox.com/mtgox?Currency=USD")
Run Code Online (Sandbox Code Playgroud)

并成功建立连接。但是,套接字似乎没有广播。我做了一个简单的功能f

  f = function(con) {
  Print("Test Test!", con)
}

set_callback("receive", f, con)

while(TRUE)
  {
  service(con)
  Sys.sleep(0.05)
  }
Run Code Online (Sandbox Code Playgroud)

每当从网络套接字接收到一些数据时,它应该打印一些文本。但是websocket似乎没有触发“接收”方法,并且什么也没有显示。代码以无限循环结束,没有输出。

我知道websocket正在运行,因此代码中肯定有错误。我是否必须以某种方式“ ping”套接字才能开始广播?任何人都有想法如何使其工作?谢谢!

r algorithmic-trading websocket

3
推荐指数
1
解决办法
1351
查看次数

如何回顾Pandas数据帧函数调用中的前几行?

我正在研究/回测交易系统.

我有一个包含OHLC数据的Pandas数据框,并添加了几个计算列,用于识别我将用作启动头寸信号的价格模式.

我现在想添加一个能够跟踪当前净头寸的列.我已经尝试使用df.apply(),但是将数据帧本身作为参数而不是行对象传递,因为后者我似乎无法回顾之前的行以确定它们是否导致任何价格模式:

open_campaigns = []
Campaign = namedtuple('Campaign', 'open position stop')

def calc_position(df):
  # sum of current positions + any new positions

  if entered_long(df):
    open_campaigns.add(
        Campaign(
            calc_long_open(df.High.shift(1)), 
            calc_position_size(df), 
            calc_long_isl(df)
        )
    )

  return sum(campaign.position for campaign in open_campaigns)

def entered_long(df):
  return buy_pattern(df) & (df.High > df.High.shift(1))

df["Position"] = df.apply(lambda row: calc_position(df), axis=1)
Run Code Online (Sandbox Code Playgroud)

但是,这会返回以下错误:

ValueError: ('The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()', u'occurred at index 1997-07-16 08:00:00')
Run Code Online (Sandbox Code Playgroud)

滚动窗口函数似乎很自然,但据我所知,它们只作用于单个时间序列或列,因此无法工作,因为我需要在多个时间点访问多列的值.

我该怎么做呢?

python algorithmic-trading quantitative-finance dataframe pandas

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

在 python 中滚动 idxmax() ?

我有一个 python DataFrame,其中包含一些财务数据,我正在尝试为其创建一些技术指标。我试图弄清楚如何使用移动窗口函数来加速该过程,而不是逐个元素地进行。对于每个索引,我想返回过去 30 天的最大索引。我已经实现了一个逐个元素的解决方案,但正如你可以想象的那样,它非常慢。

    for s_sym in ls_symbols:
        for i in range(refresh, len(ldt_timestamps)):
            #Aroon-Up = ((period - Days Since High)/period) x 100 Aroon-Down = ((period - Days Since Low)/peiod) x 100'''
            whrmax = df_close[s_sym].ix[ldt_timestamps[i-uplen:i]].idxmax()
            maxaway = (df_close[s_sym].ix[whrmax : ldt_timestamps[i-1]]).count()
            aroonup = ((uplen - maxaway) / uplen ) * 100

            whrmin = df_close[s_sym].ix[ldt_timestamps[i-dnlen:i]].idxmin()
            minaway = df_close[s_sym].ix[whrmin : ldt_timestamps[i-1]].count()
            aroondn = ((dnlen - minaway) / dnlen ) * 100
Run Code Online (Sandbox Code Playgroud)

如何创建自定义滚动窗口函数?

python finance time-series algorithmic-trading pandas

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

R的布林带

我在R中测试布林带策略时遇到了麻烦.逻辑是,如果收盘价大于上限,我想做一个空头头寸,然后当它超过平均线时关闭仓位.如果Close低于Lower Band,我也想采取Long位置,当它超过Average时关闭位置.到目前为止,这就是我所拥有的:

bbands <- BBands(stock$Close, n=20,sd=2)

sig1 <- Lag(ifelse((stock$Close >bbands$up),-1,0))

sig2 <- Lag(ifelse((stock$Close <bbands$dn),1,0))

sig3 <- Lag(ifelse((stock$Close > bbands$mavg),1,-1))

sig <- sig1 + sig2

...这就是我被困住的地方,我如何使用它sig3来获得理想的结果?

r testing-strategies algorithmic-trading

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

使用python填写网站上的文本框,然后单击按钮进行下载

如果使用http://www.barchart.com/historicaldata.php之类的网站,是否可以填写文本框,然后单击“提交”按钮下载数据?

我习惯于urllib下载整个页面,但似乎可以弄清楚如何将文本提交到文本框中,然后单击脚本中的按钮。

html python urllib algorithmic-trading

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

如何修改活跃交易的止损?

我在使用 MQL5 修改正在运行的交易的止损时遇到了麻烦。选择订单对我来说很有效。但是如果我尝试访问变量(例如OrderTicket()& OrderOpenPrice()),它总是返回 0.00000:

2017.06.01 00:06:32.114 2016.04.08 00:00:00   failed modify  buy 0.00  sl: 0.00000, tp: 0.00000 -> sl: 1.41594, tp: 0.00000 [Invalid request]
Run Code Online (Sandbox Code Playgroud)

这是我的止损修改无效:

void modifyStops() {

   int total = OrdersTotal();          // total number of placed pending orders
   Print( total + " Orders on the line!!!" );

   //--- Over all placed pending orders
   for ( int i = 0; i <  total; i++ )
   {     bool isOrderSelected = OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
         if (  isOrderSelected …
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading metatrader5 mql5

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

存储算法交易设置市场数据的最佳方式是什么?

我正在为交易自动化制作算法交易设置。目前,我有一个经纪商 API,它可以帮助我获取我感兴趣的所有股票的历史数据。

我想知道如何存储所有数据,无论是在文件系统还是数据库(基于 SQL 或 NoSQL)中。数据通过 REST API(如果相关)提供。

我的用例是查询历史数据以在实时市场中做出交易决策。我还必须开发一个回溯测试框架,该框架将查询历史数据以检查历史策略的性能。

我正在研究频率为 5 分钟 - 1 小时的蜡烛图,并且主要是日内交易策略。谢谢

sql database file algorithmic-trading nosql

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

Tradingview Pinescript 使用 := 运算符

我想了解如何 := 和 sum[1] 工作。这个和返回给我 6093。但是 sum 是 0,也是 sum[1] = 0 ,对吗?它如何返回我 6093?我搜索了tradeview wiki,但我不明白。我想将此代码更改为另一种语言,例如 javascript 、 c#

testfu(x,y)=>
    sum = 0.0
    sum:= 1+ nz(sum[1])
    sum
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading pine-script

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

如何导入外汇数据并使用 yfinance 和 pandas 数据阅读器读取它?

大家好,希望你们一切顺利。我使用了一个代码,通过从雅虎财经导入股票数据来绘制砖形图并计算柱形,效果很好,但我想在代码中使用雅虎财经的外汇数据,但它不起作用。

Stocklist=['AAPL']
start='2016-1-1'
for stock in StockList:
data[stock]=pdr.get_data_yahoo(stock, start)
Run Code Online (Sandbox Code Playgroud)

这就是我获取股票数据并使用它的方式,但它不适用于外汇,例如 EURUSD=X

python algorithm algorithmic-trading yahoo-finance pandas

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

运行脚本监控股市活动的平台?可能执行交易?

是否有可用于运行监控股票市场活动的脚本的软件平台?

我想编写一个脚本,以便在某些市场条件发生时向我发送警报.理想情况下,它还具有执行交易的能力.

我不是在寻找任何超级复杂的东西,而且我不需要昂贵的实时数据.我想做一些简单的事情:

If "SDY" drops to 5% below the DOD, then sell 50% of "DOD" to buy SDY
Run Code Online (Sandbox Code Playgroud)

编辑

看起来ETrade提供API.并不像我想要的那样简单,但这是针对任何对这个问题感兴趣的人:https: //us.etrade.com/e/t/activetrading/api

trading stocks stockquotes algorithmic-trading

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