我正在建立一个交易组合管理系统,负责非高频交易组合的生产,优化和模拟(处理1分钟或3分钟的数据条,而不是标记数据).
我计划使用Amazon Web服务来承担整个应用程序的负载.
我有四种选择,我正在考虑作为语言.
这是项目范围的极端范围.这不是它的方式,也许永远不会,但它符合要求的范围:
速度是一个问题,但我相信Java可以处理负载.
我只是想确保Java CAN能够轻松地处理上述要求.我不想在C++中使用该项目,但如果需要,我会这样做.
C#之所以存在,是因为我认为它是Java的一个很好的替代品,即使我根本不喜欢Windows,如果所有的东西都相同,我会更喜欢Java.
Python - 我读过关于PyPy和pyscho的事情,声称python可以通过JIT编译进行优化,以接近类似C的速度运行......这几乎是它在这个列表中的唯一原因,除了Python是一个事实伟大的语言,可能是最令人愉快的编码语言,这不是这个项目的一个因素,而是一个振作.
总结一下:
没有涉及毫秒甚至第二的交易.唯一的考虑因素是Java是否可以在分散必要数量的EC2服务器时处理这种负载.
非常感谢你们的智慧.
是否有人使用关闭来开发自动交易策略?你有什么经历?我期待学习clojure并想知道我是否可以在这种情况下使用它,如果有任何资源在这种情况下使用它请提供一个链接.我目前只使用ruby和javascript进行Web开发.
我有兴趣使用PHP,JavaScript和新的HTML 5 canvas对象进行外汇交易试验.我看了一下,但想知道我可以用于外汇交易的JavaScript API.
谁能推荐任何东西?
似乎所有主要的投资银行都在Unix(Linux,Solaris)中使用C++来实现低延迟/高频服务器应用.人们如何在交易高频权益时实现低延迟?任何书都教会如何实现这一目标?
我正在使用R中的ibrokers软件包,我正在尝试为交易设置多个收盘价.例如,以106美元的价格购买100股AAPL,以107美元的价格卖出50股,以108美元的价格卖出50股,止损价为105美元.
当我发送多个获利订单时,似乎忽略了50的数量,而是我得到两个卖单,每个100股.
这是我正在运行的代码
tws <- twsConnect()
stock <- twsEquity("AAPL")
parentLongId <- reqIds(tws)
parentLongOrder <- twsOrder(parentLongId, action="BUY", totalQuantity = 100,
orderType = "LMT", lmtPrice = 106,
transmit=TRUE)
placeOrder(tws, stock, parentLongOrder)
childLongProfitId <- reqIds(tws)
childLongProfitOrder <- twsOrder(childLongProfitId, action="SELL", totalQuantity = 50,
orderType = "LMT", lmtPrice = 107,
transmit=TRUE, parentId = parentLongId)
placeOrder(tws, stock, childLongProfitOrder)
childLongProfitId2 <- reqIds(tws)
childLongProfitOrder2 <- twsOrder(childLongProfitId2, action="SELL", totalQuantity = 50,
orderType = "LMT", lmtPrice = 108,
transmit=TRUE, parentId = parentLongId)
placeOrder(tws, stock, childLongProfitOrder2)
childLongStopId <- reqIds(tws)
childLongStopOrder <- …Run Code Online (Sandbox Code Playgroud) 所以我目前正致力于Kraken APIfor 的实现Java.我正在使用我在http://pastebin.com/nHJDAbH8上找到的示例代码.
Kraken(https://www.kraken.com/help/api)描述的一般用法是:
API-Key= API密钥
API-Sign=使用HMAC-SHA512
( URI path + SHA256( nonce + POST data ) )和base64解码的秘密API密钥的消息签名
和
nonce=始终增加无符号64位整数
otp=双因素密码(如果启用了双因子,否则不需要)
但是我面临以下回应:
{"error":["EAPI:Invalid key"]}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种方法(获取新的API,尝试更改sha256方法,因为我认为它的散列方式有问题)
所以这是代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class KrakenClient {
protected static String key = "myAPIKey"; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个从交易所获取订单簿的比特币交易应用程序。一个典型的订单簿看起来像这样:https : //www.bitstamp.net/api/order_book/(它有两部分,“bids”和“asks”,它们应该分开存储,但使用相同的数据结构)。一个解决方案是只存储这个大订单的一部分,这将解决访问效率问题,但它引入了一组与一致性和更新限制有关的其他问题。所以现在,似乎更好的解决方案是获取订单并不断更新它。
现在,此交易者应用程序稍后会使用新订单和已删除订单更新此获取的订单簿。例如,如果您在订单簿中以 900 美元的价格购买 1.5BTC 的订单,它可能会被完全取消,或者可能会更新为包含更多或更少的 BTC。此外,可以在低于或高于该价格的情况下添加新订单。
有两个关键操作:
快速找到价格完全相同的订单(在更新或取消的情况下)
快速找到与提供的价格最接近但低于该价格的订单
在更新的情况下,我们可能实际上并不知道它是一个更新,因此我们可能会开始执行(2)并最终执行(1)。
我不是数据结构方面的专家,所以我开始查看最常见的数据结构,现在我觉得它应该是某种树,但我不确定是哪一种。我最没有根据的猜测是这样一种数据结构,其中每个节点都是价格中的一个数字,因此,例如,我们要快速找到价格为 900 美元的所有节点,items['9']['0']然后查找叶节点。现在我的脑子里还是一团糟,所以请不要对我评价太苛刻。任何建议都会很棒。
从雅虎获得 SPY 的数据后,我创建了一个收盘价通道,如下所示,最大和最小滚动窗口。色谱柱是 HC 和 HL。
我需要创建一个列(我称之为标志),当收盘价等于 HC 时显示 1,并且该值会持续到收盘价等于 HL。此时Flag的值为-1。如您所见,非常简单,Flag 可以只有两个值;1 或 -1。
简单的公式是这样的:
我尝试了几件事,包括下面的代码,但都没有成功。此代码的问题在于显示了 0 值。而且我不知道如何通过条件使其消失:
import pandas as pd
import pandas_datareader as dr
import numpy as np
from datetime import date
df = dr.data.get_data_yahoo('SPY',start='01-01-2019',end=date.today())
df['HC'] = df['Close'].rolling(20).max()
df['LC'] = df['Close'].rolling(20).min()
df['Flag'] = [1 if (df.loc[ei, 'Close'] == df.loc[ei, 'HC']) else
-1 if (df.loc[ei, 'Close'] == …Run Code Online (Sandbox Code Playgroud) 我收到错误第 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) 我正在使用交易视图图表库,问题是所有股票都是沙特阿拉伯的,因此在沙特阿拉伯,一周从周日开始,而在库中,一周从周一开始,所以当我从选项卡中单击工作日时,页脚展示日从星期一开始。
我使用提供的 setTimezone() 方法将时区更改为“亚洲/利雅得”,但它只是更改了图书馆的时区,我的问题仍然存在。我试图找到方法但毫无用处。