分析数据和执行市场操作的工具

anansi-toolkit的Python项目详细描述


阿南西

依赖关系

Python,琵琶,诗歌。在

安装poetry,在 osx、linux或bashonwindows终端,键入:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

或者,诗歌也可以由pip安装(假设您已经安装了 python和pip已经安装):

^{pr2}$

在Jupyter笔记本上消费

这只是一个建议,您可以在任何python上运行anansi 终端。仅在linux上测试。

执行以下命令:

poetry install
poetry run python -m ipykernel install --user --name=$(basename $(pwd))
poetry run jupyter notebook > jupyterlog 2>&1 &

直截了当地说:运行默认的反向测试操作

导入依赖项

fromanansi.tradingbot.modelsimport*fromanansi.tradingbotimporttradersfromanansi.tradingbot.viewsimportcreate_user,create_default_operation

添加新用户

my_user_first_name="John"create_user(first_name=my_user_first_name,last_name="Doe",email="{}@email.com".format(my_user_first_name.lower()))

创建默认操作

my_user=User[1]create_default_operation(user=my_user)

实例化交易员

my_op=Operation.get(id=1)my_trader=traders.DefaultTrader(operation=my_op)

运行交易员

my_trader.run()

玩数据库模型

获取所有用户

users=select(userforuserinUser)users.show()
id|first_name|last_name|login_displayed_name|email         
--+----------+---------+--------------------+--------------
1 |John      |Doe      |                    |john@email.com
my_user.first_name
'John'

某些操作属性

my_op.stop_loss.name
'StopTrailing3T'

一些交易者属性

my_trader.Classifier.parameters.time_frame
'6h'

更新某些属性

before_update=my_trader.operation.position.side,my_trader.operation.position.exit_reference_pricemy_trader.operation.position.update(side="Long",exit_reference_price=1020.94)after_update=my_trader.operation.position.side,my_trader.operation.position.exit_reference_pricebefore_update,after_update
(('Zeroed', None), ('Long', 1020.94))

请求克林

Klines治疗和准备使用,包括市场指标方法

下面的示例使用“handlers”中的“KlinesFromBroker”类 模块('marketdata'包),它作为 数据代理,不仅仅是序列化请求(为了尊重 但也像熊猫一样顺从克莱恩 数据帧, extended 市场指标法。在

fromanansi.marketdata.handlersimportKlinesFromBroker
BinanceKlines=KlinesFromBroker(broker_name="binance",ticker_symbol="BTCUSDT",time_frame="1h")
^{pr21}$
newest_klines
<;样式范围>; .dataframe tbody tr th:仅类型{ 垂直对齐:中间; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
<;/style>;
Open_timeOpenHighLowCloseVolume
02020-06-17 11:00:009483.259511.539466.009478.611251.802697
12020-06-17 12:00:009478.619510.889477.359499.251120.426332
22020-06-17 13:00:009499.249565.009432.009443.484401.693008
32020-06-17 14:00:009442.509464.839366.099410.954802.211120
42020-06-17 15:00:009411.279436.549388.439399.242077.135281
.....................
21622020-09-15 13:00:0010907.9410917.9610834.0010834.713326.420940
21632020-09-15 14:00:0010834.7110879.0010736.6310764.194382.021477
21642020-09-15 15:00:0010763.3710815.4710745.6310784.463531.309654
21652020-09-15 16:00:0010785.2310827.6110700.0010784.233348.735166
21662020-09-15 17:00:0010784.2310812.4410738.3310794.841931.035921

2167行×6列

应用简单移动平均指标

indicator=newest_klines.apply_indicator.trend.simple_moving_average(number_of_candles=35)
indicator.name,indicator.last(),indicator.serie
('sma_ohlc4_35',
 10669.49407142858,
 0                NaN
 1                NaN
 2                NaN
 3                NaN
 4                NaN
             ...     
 2162    10619.190500
 2163    10632.213571
 2164    10644.682643
 2165    10657.128857
 2166    10669.494071
 Length: 2167, dtype: float64)
newest_klines
<;样式范围>; .dataframe tbody tr th:仅类型{ 垂直对齐:中间; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
<;/style>;
Open_timeOpenHighLowCloseVolume
02020-06-17 11:00:009483.259511.539466.009478.611251.802697
12020-06-17 12:00:009478.619510.889477.359499.251120.426332
22020-06-17 13:00:009499.249565.009432.009443.484401.693008
32020-06-17 14:00:009442.509464.839366.099410.954802.211120
42020-06-17 15:00:009411.279436.549388.439399.242077.135281
.....................
21622020-09-15 13:00:0010907.9410917.9610834.0010834.713326.420940
21632020-09-15 14:00:0010834.7110879.0010736.6310764.194382.021477
21642020-09-15 15:00:0010763.3710815.4710745.6310784.463531.309654
21652020-09-15 16:00:0010785.2310827.6110700.0010784.233348.735166
21662020-09-15 17:00:0010784.2310812.4410738.3310794.841931.035921

2167行×6列

同上,但显示指示栏

indicator=newest_klines.apply_indicator.trend.simple_moving_average(number_of_candles=35,indicator_column="SMA_OHLC4_n35")
newest_klines
<;样式范围>; .dataframe tbody tr th:仅类型{ 垂直对齐:中间; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
<;/style>;
Open_timeOpenHighLowCloseVolumeSMA_OHLC4_n35
02020-06-17 11:00:009483.259511.539466.009478.611251.802697NaN
12020-06-17 12:00:009478.619510.889477.359499.251120.426332NaN
22020-06-17 13:00:009499.249565.009432.009443.484401.693008NaN
32020-06-17 14:00:009442.509464.839366.099410.954802.211120NaN
42020-06-17 15:00:009411.279436.549388.439399.242077.135281NaN
........................
21622020-09-15 13:00:0010907.9410917.9610834.0010834.713326.42094010619.190500
21632020-09-15 14:00:0010834.7110879.0010736.6310764.194382.02147710632.213571
21642020-09-15 15:00:0010763.3710815.4710745.6310784.463531.30965410644.682643
21652020-09-15 16:00:0010785.2310827.6110700.0010784.233348.73516610657.128857
21662020-09-15 17:00:0010784.2310812.4410738.3310794.841931.03592110669.494071

2167行×7列

原始klines,使用低级抽象模块“data_brokers

免责声明:此处的请求未排队!有禁止的危险 如果超出了某些限制,IP甚至会阻塞API密钥。与一起使用 小心。

fromanansi.marketdataimportdata_brokers
BinanceBroker=data_brokers.BinanceDataBroker()
my_klines=BinanceBroker.get_klines(ticker_symbol="BTCUSDT",time_frame="1m")
^{pr35}$
<;样式范围>; .dataframe tbody tr th:仅类型{ 垂直对齐:中间; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
<;/style>;
Open_timeOpenHighLowCloseVolume
0160016556010688.1210691.1410684.8810684.8821.529835
1160016562010684.8810686.1510681.8410685.9918.487428
2160016568010686.0010687.6510684.9210687.0922.246376
3160016574010687.0910689.5410683.8610687.2618.818481
4160016580010687.2610687.2610683.7110685.7638.281582
.....................
494160019520010762.4310763.4810760.3510760.758.572210
495160019526010760.7510762.4810759.3010759.3111.089815
496160019532010759.3010762.2210755.3910761.2627.070820
497160019538010761.2610761.2610751.7410756.0215.482246
498160019544010755.6110756.5710748.0310748.0461.153777

499行×6列

同上,但返回从数据代理获取的所有信息

my_klines=BinanceBroker.get_klines(ticker_symbol="BTCUSDT",time_frame="1m",show_only_desired_info=False)
^{pr35}$
<;样式范围>; .dataframe tbody tr th:仅类型{ 垂直对齐:中间; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
<;/style>;
Open_timeOpenHighLowCloseVolumeClose_timeQuote_asset_volumeNumber_of_tradesTaker_buy_base_asset_volumeTaker_buy_quote_asset_volumeIgnore
0160016556010688.1210691.1410684.8810684.8821.5298351600165619230126.587773373.010.279415109864.1498220.0
1160016562010684.8810686.1510681.8410685.9918.4874281600165679197536.180849336.08.25649888223.5660540.0
2160016568010686.0010687.6510684.9210687.0922.2463761600165739237738.839831415.013.378805142975.2432460.0
3160016574010687.0910689.5410683.8610687.2618.8184811600165799201100.293663539.09.06295796849.6118440.0
4160016580010687.2610687.2610683.7110685.7638.2815821600165859409068.511314534.016.799813179523.7085310.0
.......................................
494160019520010762.4310763.4810760.3510760.758.572210160019525992253.016477292.02.39477825771.7154130.0
495160019526010760.7510762.4810759.3010759.3111.0898151600195319119341.014647277.03.06445832976.2565340.0
496160019532010759.3010762.2210755.3910761.2627.0708201600195379291245.877535490.014.654896157679.9267580.0
497160019538010761.2610761.2610751.7410756.0215.4822461600195439166520.446192353.07.39040779491.1609610.0
498160019544010755.6110756.5710748.0310748.0461.1537771600195499657520.935924585.013.436657144474.0846840.0

499行×12列

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ws-consumer服务地址中的java动态属性   java如何比较整数列表,然后按升序排序?   javascript我正在使用java脚本调用一个函数,但它没有调用代码下面的方法,也没有调用secretitnames()函数   在文本窗格中多次使用Java insertIcon图标   JavaMSAL安卓。AuthenticationActivity完成,但用于身份验证请求的线程池线程仍处于等待状态   if语句中的java多范围比较   java toString()表示输出   java如何在jcstrest测试中生成指令重新排序   java我怎样才能运行它?   web应用程序中使用Hibernate和Spring的java问题   如何将字符串数据写入Java文本文件   如何在java命令提示符下运行已签名的jar文件?   java从我的菜单调用RCP应用程序   java如何等待Canvas/GraphicsContext完成任务,然后再继续执行代码块?