标签: algorithmic-trading

算法交易软件安全防护

我正在研究自动交易系统.我应该有什么样的保安?

我的主要想法是让多个部分相互检查.

我将有第二个独立的小流程,它也将连接到同一交易账户并监控简单的事情,例如确保总净头寸不超过一定限度,或者例如10分钟内不超过N个订单,或多于M个仓位同时开仓.您还可以检查实际未结头寸是否与策略流程认为实际持有的头寸相对应.作为奖励,我可以在不同的机器/网络提供商上运行此检查程序.

除了主策略中的检查,这将确保无论发生什么奇怪的错误,都不会发生任何真正的错误.

我应该监控和注意的任何其他事情?

monitoring finance safety-critical algorithmic-trading

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

用于开发自动交易算法的课程等?

有没有人知道任何课程等教学人如何学习如何应用技术分析和交易机制来开发自动交易算法?

analysis trading algorithmic-trading

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

如何将自己的数据输入PyAlgoTrade?

我正在尝试使用PyAlogoTrade事件分析器

但是我不想使用来自yahoo!finance的数据,我想用我自己的但无法弄清楚如何解析CSV,它的格式如下:

Timestamp      Low  Open   Close       High        BTC_vol     USD_vol       [8]      [9]
2013-11-23 00  800  860    847.666666  886.876543  853.833333   6195.334452  5248330  0
2013-11-24 00  745  847.5  815.01      860         831.255     10785.94131   8680720  0
Run Code Online (Sandbox Code Playgroud)

完整CSV在这里

我想做的事情如下:

def main(plot):
    instruments = ["AA", "AES", "AIG"]
    feed = yahoofinance.build_feed(instruments, 2008, 2009, ".")
Run Code Online (Sandbox Code Playgroud)

然后yahoofinance.build_feed(instruments, 2008, 2009, ".")用我的替换CSV

我试过了:

import csv

with open( 'FinexBTCDaily.csv', 'rb' ) as csvfile:
     data = csv.reader( csvfile )

def main( plot ): …
Run Code Online (Sandbox Code Playgroud)

csv algorithmic-trading quantitative-finance pyalgotrade back-testing

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

如何在 MQL4 中计算(添加)日期时间值?

使用 MQL4 我在处理datetime.

我想做的是datetime按月或按年排列。

目前我就是这样做的。

datetime myDate;

myDate[0] = D'2010.01.01 00:00';
myDate[1] = D'2010.02.01 00:00';
myDate[2] = D'2010.03.01 00:00';
myDate[3] = D'2010.04.01 00:00';
.
.
Run Code Online (Sandbox Code Playgroud)

不过我想像下面这样做

myDate[0] = D'2010.01.01 00:00';
for (int i = 1;i < 6 ;i+=){
    myDate[i] = myDate[i - 1] + 1year;
}
Run Code Online (Sandbox Code Playgroud)

如果是月份,

myDate[0] = D'2010.01.01 00:00';
for (int i = 1; i < 12 ; i++){
    myDate[i] = myDate[i - 1] + 1month
}
Run Code Online (Sandbox Code Playgroud)

问:如何计算加1month1year

algorithmic-trading mt4 metatrader4 mql4

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

使用 python 请求从 oanda V20 Rest api 流式定价

我正在尝试从 Oandas 的 V20 Rest api 流式传输仪器的价格,但没有取得太大成功。我正在使用 python requests,因为它适用于常规 get 请求。这是我必须要做的:

import requests
url = 'https://stream-fxpractice.oanda.com/v3/accounts/MY_ACCOUNT_ID/pricing?instruments=EUR_USD'
head = {'Content-type':"application/json",
        'Accept-Datetime-Format':"RFC3339",
        'Authorization':"Bearer MY_ACCESS8TOKEN"}


r = requests.get(url, headers=head, stream=True)
print(r)

for line in r.iter_lines():

    if line:
        decoded_line = line.decode('utf-8')
        print(json.loads(decoded_line))
Run Code Online (Sandbox Code Playgroud)

响应错误代码为 405,表示不支持该方法。我究竟做错了什么?

python rest algorithmic-trading python-2.7 python-requests

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

最小化WebSocket客户端延迟的一些经验法则是什么?

我目前正致力于延迟关键应用程序.在分析我的代码之后,我得出结论,瓶颈可能与我的WebSocket客户端有关.我不控制服务器,只控制客户端.

上下文

我在与服务器相同的可用区域中运行带有ENA(弹性网络适配器)的c5d.xlarge Ubuntu实例.如果我从我的实例ping服务器,则延迟低于1毫秒(通常在0.2到0.5毫秒之间).我的代码是用Haskell编写的,这是我使用的WebSocket库:http://hackage.haskell.org/package/websockets 服务器发送的消息时间戳和我收到消息后创建的时间戳之间的差异通常在下面10毫秒对我来说足够好了.但是,有时这个时间差会增加到4-500毫秒甚至更差(超过1-1.5秒).我怀疑当服务器必须处理增加的活动时会发生这种情况,因此当服务器负载很重时.尽管我没有发现任何迹象表明它可能是我的代码,我的实例设置或两者的组合导致了这种延迟峰值,但我仍然持怀疑态度,因此我前往https://websocket.org/echo来自我的本地计算机(Mac)的.html,以便检查那里的延迟(使用Chrome作为我的浏览器).由于这比我的实例更远离服务器,因此延迟稍高,但通常低于50毫秒.这里也发生了4-500毫秒的延迟峰值.

再生产

在Chrome中,转到https://websocket.org/echo.html并连接到:wss://www.bitmex.com/realtime 最后,将以下消息发送到服务器并检查Chrome Developer Tools中"网络"选项卡下的WebSocket框架:

{"op": "subscribe", "args": ["orderBook10:XBTUSD"]}

有没有办法在这种情况下进一步减少延迟?在配置我可能缺少的WebSocket客户端连接时是否有任何经验法则?我尝试使用WebSocket压缩扩展,但似乎没有帮助.我觉得我无能为力,因为服务器不受我的控制.谢谢!

networking haskell algorithmic-trading websocket low-latency

5
推荐指数
0
解决办法
568
查看次数

如何使用python3.7处理ib_insync中的异步错误?

抱歉,我可能会问一个愚蠢的问题,但我只是python和algotrading的初学者。我现在使用带有ib_insync的Python 3.7和ibapi尝试连接交易平台。但是,由于Python 3.7使用async作为关键字,因此当我尝试使用ib_insync进行编码时:

from ib_insync import *

ib = IB()
ib.connect('127.0.0.1', 7496, clientId=1)

contract = Forex('EURUSD')
bars = ib.reqHistoricalData(contract, endDateTime='', durationStr='30 D', barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)

df = util.df(bars)
print(df['date', 'open', 'high', 'low', 'close'])
Run Code Online (Sandbox Code Playgroud)

它最终像这样:

from ib_insync import *

ib = IB()
ib.connect('127.0.0.1', 7496, clientId=1)

contract = Forex('EURUSD')
bars = ib.reqHistoricalData(contract, endDateTime='', durationStr='30 D', barSizeSetting='1 hour', whatToShow='MIDPOINT', useRTH=True)

df = util.df(bars)
print(df['date', 'open', 'high', 'low', 'close'])
Run Code Online (Sandbox Code Playgroud)

我知道我需要将异步名称更改为其他名称。我试图在ibapi中修改文件client.py,但似乎根本不起作用。为了使它起作用,我应该更改代码的哪一部分?

python algorithmic-trading python-3.x interactive-brokers ib-api

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

参考先前退出价格的 Pine 脚本入场策略

我正在尝试在电视中建立一个策略(仅限多头头寸),其中strategy.entry将考虑之前的退出价格。例如:

strategy.entry("long", strategy.long, when = longcondition==true)
strategy.close("long", strategy.close, when = longcondition==false)
Run Code Online (Sandbox Code Playgroud)

除了 longcondition==true 之外,我还想为 Strategy.entry 插入另一个条件,它说明了以下意图:

strategy.entry("long", strategy.long, when = longcondition==true and close[1] < previousExitPrice)
Run Code Online (Sandbox Code Playgroud)

怎样做才正确呢?预先感谢您的答复。

trading algorithmic-trading pine-script

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

如何在 Python 中创建一个简单的标志

从雅虎获得 SPY 的数据后,我创建了一个收盘价通道,如下所示,最大和最小滚动窗口。色谱柱是 HC 和 HL。

我需要创建一个列(我称之为标志),当收盘价等于 HC 时显示 1,并且该值会持续到收盘价等于 HL。此时Flag的值为-1。如您所见,非常简单,Flag 可以只有两个值;1 或 -1。

简单的公式是这样的:

  1. 如果关闭 == HC 则标志为 1
  2. 如果关闭 == HL 则标志为 -1
  3. 如果 Close != HC 和 Close !=HL 则 flag 等于保存在变量 flag 上的最后一个值。

我尝试了几件事,包括下面的代码,但都没有成功。此代码的问题在于显示了 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)

python trading algorithmic-trading pandas

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

将 mql4 EA 转换为 mql5

我一直在试图弄清楚如何将我的 MQL4 代码更改为 MQL5。到目前为止,我已经能够更改 RSI 和 MACD 条件以及 SendOrder(),但是还有很多,例如 ModifyOrder() 和 CloseOrder() 以及我无法完成的其他事情。我知道这是一口口水,但我真的很感激在完成这个过程中得到一些帮助。

这是原始 MQL4 代码:

extern int MagicNumber=112223;
extern double Lots =0.005;
extern double StopLoss=0;
extern double TakeProfit=0;
extern int TrailingStop=0;
extern int Slippage=3;

int mode_main = 0;
int mode_signal = 1;
//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+
int start()
{
  double MyPoint=_Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;

  double TheStopLoss=0;
  double TheTakeProfit=0;
  if( TotalOrdersCount()==0 ) 
  {
     int result=0;
     if((iMACD(NULL,PERIOD_M5,12,26,9,PRICE_CLOSE,mode_signal,0)<iMACD(NULL,PERIOD_M5,12,26,9,PRICE_CLOSE,mode_main,0))&&(iRSI(NULL,PERIOD_M5,2,PRICE_CLOSE,0)>84)) // Here is your open buy rule
     {
        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA",MagicNumber,0,Blue);
        if(result>0)
        { …
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading metatrader5 mql5

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