我正在建立一个交易组合管理系统,负责非高频交易组合的生产,优化和模拟(处理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开发.
我正在努力建立一个创建SAR系列的课程.但似乎我不太了解这些步骤.我不确定计算的初始值.
这是我的第一次尝试:
public class SAR : IndicatorCalculatorBase
{
public override List<Ohlc> OhlcList { get; set; }
public double AccelerationFactor = 0.02;
public double MaximumAccelerationFactor = 0.2;
public override IIndicatorSerie Calculate()
{
SingleDoubleSerie sarSerie = new SingleDoubleSerie();
bool trendUp = false, trendChanged = false;
double instantFactor = AccelerationFactor;
for (int i = 1; i < OhlcList.Count; i++)
{
if (OhlcList[i].Low > OhlcList[i - 1].Low) // uptrend
{
if (!trendUp)
{
trendUp = true;
trendChanged = true;
instantFactor = AccelerationFactor;
}
else …Run Code Online (Sandbox Code Playgroud) 我正在使用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) 我正在使用 Binance API 来使用 Python 3.6 制作我的交易机器人。和CCXT 库(在这里您可以找到文档)。
他们在其网站上拥有的一项非常有用的功能是能够以当前余额的一定比例下订单:
例如,如果我看着在BTC/USDT加密硬币对,我有50 USDT我的账户,我可以买之间进行选择N的数量BTC或使用100%的帐户的USDT用于购买,因此购买的最高金额BTC,我可以。
我多次阅读文档,但我找不到以任何方式使用 API 执行这些“余额百分比”订单的选项:我唯一能做的就是将 a 传递float给订单函数。这就是我现在下订单的方式:
amount = 0.001
symbol = "BTC/USDT"
def buyorder(amount, symbol): # this makes a market order taking in the amount I defined before, for the pair defined by "symbol"
type = 'market' # or 'limit'
side = 'buy' # or 'sell'
params = {} # …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试设置一个脚本,以便在另一个脚本显示多个特定数据点时生成条件警报。
input(type=source) 工作没有问题,但是一旦我尝试添加多个源输入,它就会停止一起工作。
我使用的是 Premium Tradingview 计划,在 pinescript 文档中找不到任何内容来解释此限制。通过深入挖掘,我能找到的最好的推理是他们的系统无法处理每个人在脚本上堆叠脚本的情况。
最简单的解决方案是将条件警报添加到我试图从中提取的脚本中,但在这种情况下我无权访问该源代码。
有谁知道从单一来源提取多个数据点的解决方法?
否则我想我的解决方案是尝试重新创建源并在那里构建警报?
谢谢!
当我添加到图表或保存时,我的脚本最近刚刚开始在控制台中显示这些行。
"The function 'anonym_function_10' should be called on each calculation for consistency. It is recommended to extract the call from the ternary operator or from the scope."
"The function 'anonym_function_11' should be called on each calculation for consistency. It is recommended to extract the call from the ternary operator or from the scope."
Run Code Online (Sandbox Code Playgroud)
需要一些帮助来理解这一点,代码是否会因准确性而受到影响,或者这可能是将来可能出现的问题?解决这个问题的解决方案是什么?
// @version=4
f_top_fractal(src) => src[4] < src[2] and src[3] < src[2] and src[2] > src[1] and src[2] > src[0]
f_bot_fractal(src) => src[4] > src[2] and src[3] …Run Code Online (Sandbox Code Playgroud) 感谢大家迄今为止的帮助。到目前为止,我已经在 pinescript 中编写了许多不同的策略,并且我已经阅读了 pinescript 手册和许多谷歌文章,但我仍然对追踪止损在 pinescript 中如何工作感到困惑。
例如,对于strategy.exit,我有一个trail_price,它标记要激活的追踪止损条目。然而,我所有的回溯测试都表明追踪止损位于该特定蜡烛线的最高点,即使 Trail_offset 尚未被触及。仅仅是因为交易视图回溯测试假设在一根蜡烛线中达到了最大利润,即使后续蜡烛线继续朝着您的目标方向发展?
例如,这是我的strategy.exit 的示例。Strategy.exit("long_TP", "long", Trail_price = 入场价格 + ATR, Trail_offset = ATR, stop= 入场价格 - ATR). 我注意到,只要在该特定交易收盘前获利,我将赚取 2 倍到 3 倍的 Trail_offset(在本例中基于 ATR,即,如果 ATR 为 50 点,我将赚取 100 甚至 150 点)。蜡烛吧。任何后续的蜡烛线,即使做多,即使没有达到 Trail_offset 止损,也不会被纳入计算(即,即使我的 ATR 是 50 点,当蜡烛线收盘时我可能会赚取 70 点,即使随后的蜡烛继续做多)。
我的假设是否不正确(即我的代码),或者这只是回溯测试的限制,因为程序无法知道蜡烛条内部发生了什么,只能知道最高价、最低价、开盘价和收盘价?然而,我确实对此感到好奇,因为有时即使蜡烛线处于最低点,也没有达到 Trail_offset,因此理论上利润应该继续累积,而不是在蜡烛线收盘后止损。
编辑:我添加了一些更多信息以进行澄清 - 这是一个带有一些解释的示例代码:
If condition == true
long = strategy.position_size[0] > strategy.position_size[1] //go long if there is order entry
entry_price_long = valuewhen(long, open, 0) //entry price is the opening price, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 okex 交易所版本 5 上使用 ccxt 创建永久限价订单。该 API 成功在现货交易所下订单(限价订单和市价订单),但在永续交易所上失败。这就是我正在尝试的-
exchange_swap = ccxt.okex5({
'apiKey': credentials['okex']['apikey'],
'secret': credentials['okex']['secretkey'],
'password': credentials['okex']['password'],
'options': {
'defaultType': 'swap',
}
})
params = {
"test":True
}
order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7)
Run Code Online (Sandbox Code Playgroud)
错误信息-
ccxt.base.errors.BadRequest: okex5 {"code":"1","data":[{"clOrdId":"","ordId":"","sCode":"51000","sMsg":"Parameter posSide error ","tag":""}],"msg":""}
Run Code Online (Sandbox Code Playgroud)
在搜索此错误后,我在他们的文档中发现了这一点-
Error message Http status code Error code
Parameter {0} error. 400 51000
Run Code Online (Sandbox Code Playgroud)
文档链接 - Okex v5
PS - 我可以通过 okex 上的交易仪表板放置此内容,但不能通过 API 放置。我有足够的余额来创建此订单。
整个错误消息是这样的——
Traceback (most recent call last):
File "C:\Users\ishaa\Desktop\trading\Crypto Vibhor\Testing Files\ccxt_test.py", line 70, in
<module>
order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7) …Run Code Online (Sandbox Code Playgroud)