操控趋势策略 笔记
最近一直在琢磨操控趋势策略,玩的好一波能赚数千u,玩的不好就亏个几百一千u
会亏钱,搞得我很不爽,玩了几十笔到现在赚了3w6,其中有1wu被冻结了….
反反复复让我提交了一个礼拜各种资料,到现在还没解开,交易所就是这样,亏钱笑嘻嘻,赚钱mmp
还在精进中,努力想办法不会亏钱,让每一次都能赚5ku以上
主要就是我拉盘有人砸盘,我跟着砸盘又拖底买入,太烦了
然后遇到btc动,其他币也会跟着动,得要没行情的时候才行
靠这个策略至少赚1m
今年计划 to 上海 随笔
8月月初会在上海租一个小办公室,再配上三四台电脑,由我朋友在上海坐班监督打卡和效率。
今年把团队做起来,等团队起来后去香港拿牌照,募资,发行基金。
之前做黑客的日子.... 黑客
初二拿着很烂的一体机,sqlmao 啊d 学c++当脚本小子,学习?学个屁
成绩一开始前十然后中位数,然后就是稳定倒数
那电脑打cf第一次启动凭概率加载完游戏,要等好几分钟,记忆犹深
两三年没做网络安全了
有点怀念哈哈
【招聘】量化团队组队中 量化交易
资金和策略太多一个人管理不过来
地点江西赣州,欢迎加入
一、高频做市商
- 网络延迟架构师
- 数学建模并优化
- 系统内延迟优化
- 精通Python,熟悉Rust或C++
二、套利
- Python异步策略开发
- 熟悉交易所
三、交易员
- 监控套利运行状态
- 对做市商机器人及时调整参数
四、链上
- 智能合约开发
- 节点搭建并优化低层
- 熟悉Python nodejs c++
五、渗透测试
- 对量化系统进行风险评估
- 技术过硬
如果你会其中一项,那么我们就可以聊聊啦~
两台Linux之间拷贝文件
使用ssh登录,下载远程目录到本地目录下
方法1
scp:
scp -r -p -P 22 root@127.0.0.1/www/wwwroot/file /home/file
-P 设置端口
-r 保存目录
方法2:
rsync -auvH --progress '-e ssh -p 22' root@127.0.0.1:/www/wwwroot/file /home/file
方法2可以跳过已经存在的文件,但是如果二级文件夹里的文件没同步完也会跳过,不会去检查
Dydx使用c++下单签名 教程
dydx python下单发现耗时了150ms
定位源码发现是签名耗时了90ms
垃圾python,官方说可以用c++的签名
弄了一晚上,终于编译出来了
不熟练Linux的劝退
编译:
-
sudo apt install golang-go
-
./presubmit.sh
坑1:nodejs版本太低,编译失败
升级:
sudo npm install n -g
sudo n stable
hash -r
坑2:gmock不存在,gmock最新版本还编译失败,CNM
下载并解压
https://github.com/google/googletest/tree/release-1.8.0
安装:
./travis.sh
cmake ./CMakeLists.txt
make
sudo make install
必胜方法,矩阵堆量 教程
0x1 问题
今天不讲量化,来聊聊其他的
铁废柴一年到头也想不明白,那些几万人用的程序,几百万人关注的自媒体账号
到底是怎么做出来的啊
为什么我发一百个视频才赚100块钱
我要怎么才可以过上小康生活?
0x2 答案
矩阵,堆数量
万物一切问题都可以靠堆数量来解决
废柴一个视频能赚一块钱,那如果他一天发1000个视频呢?
废柴一个闲鱼号一天能赚10元,那如果他有100个闲鱼号呢?
废柴一个陌陌账号,一天能加10个老色批,那如果他有10个陌陌呢?
.............
白哥,我知道了,但是账号要怎么解决呀?
- 无忧卡,5元一个月月租
- 招很多代理小白,分销,让他帮你操作,你供货,55分
- 同学、死党、父母,七大姑不大姨,社交不会差很好解决
- 接吗平台,一毛钱一条短信
- 二手手机,300元一台
白哥,我不但是个废柴,还是个懒狗,咋办?
我可真服你了,去找个三流程序员,把发视频发帖流程化,一天发1000000+帖
有资本后可以全程让代理操作,收徒,998,你买不了吃亏买不了上当
轻轻松松比小白领过的滋润
0x3 结
SEM推流小说推文一天,广告消耗100元,产出150元。有价差利润可以图,那么只管放大
万物都可以用堆量来解决,必胜的公式
如果你不是精英,早点认清自己早点找出自己的路
可以帮助你的圣杯策略:Ma8 策略
1# 屁话
偶然发现的一款策略,能神奇的不改参数适应市场
并且2018年到现在不改参数都是盈利的
比所谓的拟合策略强不知道多少倍,哈哈
后来这个策略作为一个因子伴随了我几个月的时间用于实盘
总比一直放在收藏夹吃灰,还不如分享给你们让我赚点流量
仅供分享思路,真要实盘赚钱,你要做的还很多
仅供分享思路,真要实盘赚钱,你要做的还很多
2# 原理
开仓:连续8根收盘价大于均线,最后一根收盘价小于均线
平仓:持仓3根k线,或突破最高点,或ATR,或固定止盈止损
3# 回测
4# 源码
原版:
https://www.tradingview.com/script/gl17fzdf-8-Day-Extended-Runs/
自己修改的:
import talib
import pandas as pd
from main.zhibiao import *
seting = {
"备注": "禁用",
"name": "Ma8",
"symbol": "BTCUSDT_1h_Buy",
"kTime": "1h",
"ma_len": 29,
"ma_type": "lsma",
"ma_src": "o+h+l+c",
"pianli": 14,
"pingcang": 4,
"tupo": 34,
"atr_len": 43,
"atr_mult": 2.871,
"atr_type": "rma",
"buy": 1,
"buyZhiying": 96.216,
"buyZhisun": 12.06,
"sell": 0,
"sellZhiying": 0,
"sellZhisun": 0,
"kai": 100
}
"""
MA连续偏离8次入场,十根K线后出场
"""
def Ma8(r, df, seting):
c = len(df)
df['ma_src'] = GetSrc(r, seting['ma_src'])
df['ma'] = GetMa(df['ma_src'], seting['ma_len'], seting['ma_type'])
df['atr'] = ATR(r, seting['atr_len'], seting['atr_type'])
df['zhisun'] = 0.0
if seting['buy']:
df['h'] = df['High'].rolling(seting['tupo']).max()
df['l2'] = df['Low'].rolling(seting['pianli']).min()
if seting['sell']:
df['l'] = df['Low'].rolling(seting['tupo']).min()
df['h2'] = df['High'].rolling(seting['pianli']).max()
df['da'] = 0
df['xiao'] = 0
df['buy'] = 0
# df['pingtime'] = 0
for i in range(c):
if i > seting['ma_len']:
if df['Close'][i] > df['ma'][i] and (df['Close'][i-1] < df['ma'][i-1] or df['da'][i-1]):
df['da'].values[i] = df['da'][i-1] + 1
if df['Close'][i] < df['ma'][i] and (df['Close'][i-1] > df['ma'][i-1] or df['xiao'][i-1]):
df['xiao'].values[i] = df['xiao'][i-1] + 1
preSide = 0
preZhisun = 0
preZhisunBili = 0
preZhiYingBili = 0
buy = 0
sell = 0
for i in range(c):
if i > seting['ma_len'] and i+1 < c:
if seting['buy']:
#连续多少根 大于 均线之上
if df['Close'][i] < df['ma'][i] and df['da'][i-1] > seting['pianli']: #and df['Close'][i] > df['l2'][i]
df['side'].values[i] = 'BUY'
if preSide != 'BUY':
preSide = 'BUY'
preZhisun = df['Open'][i+1] - seting['atr_mult'] * df['atr'][i]
preZhisunBili = GetRoeJia(-seting['buyZhisun'], {'liang': 1, 'jiage': df['Open'][i+1]})
preZhiYingBili = GetRoeJia(seting['buyZhiying'], {'liang': 1, 'jiage': df['Open'][i+1]})
# if not buy:
# df['pingtime'].values[i] = df['Time'][i] + (df['Time'][1] - df['Time'][0]) * (seting['pingcang'] + 2)
# df['pingtime'].values[i] = GetTime(df['pingtime'].values[i], '%Y-%m-%d %H:%M')
buy += 1
elif buy:
buy += 1
if buy > seting['pingcang']+1 or (seting['tupo'] and df['Close'][i] >= df['h'][i-1]):
df['close'].values[i] = 'BUY'
buy = 0
if preSide == "BUY":
preSide = 0
df['buy'].values[i] = buy
if seting['sell']:
if df['Close'][i] > df['ma'][i] and df['xiao'][i-1] > seting['pianli']: # and df['Close'][i] < df['h2'][i]
df['side'].values[i] = 'SELL'
if preSide != 'SELL':
preSide = 'SELL'
preZhisun = df['Open'][i+1] + seting['atr_mult'] * df['atr'][i]
preZhisunBili = GetRoeJia(-seting['sellZhisun'], {'liang': -1, 'jiage': df['Open'][i+1]})
preZhiYingBili = GetRoeJia(seting['sellZhiying'], {'liang': -1, 'jiage': df['Open'][i+1]})
# if not sell:
# df['pingtime'].values[i] = df['Time'][i] + (df['Time'][1] - df['Time'][0]) * (seting['pingcang'] + 2)
# df['pingtime'].values[i] = GetTime(df['pingtime'].values[i], '%Y-%m-%d %H:%M')
sell += 1
elif sell:
sell += 1
if sell > seting['pingcang']+1 or (seting['tupo'] and df['Close'][i] <= df['l'][i-1]):
df['close'].values[i] = 'SELL'
sell = 0
if preSide == "SELL":
preSide = 0
df['zhisun'].values[i] = preZhisun
if (preSide == 'BUY' and df['Low'][i] <= preZhisun) or (preSide == 'SELL' and df['High'][i] >= preZhisun) or \
(preSide == 'BUY' and df['Low'][i] <= preZhisunBili) or (preSide == 'SELL' and df['High'][i] >= preZhisunBili) or \
(preSide == 'BUY' and df['High'][i] >= preZhiYingBili) or (preSide == 'SELL' and df['Low'][i] <= preZhiYingBili):
preSide = 0
buy = 0
sell = 0
return df
Python 高频量化异步协程 笔记
1.踩坑
在我刚开始用异步协程框架写策略框架爽的飞起的时候
小数据没什么问题,流畅无延迟
后面加大数据量同时创建N个任务(loop.create_task)
那么最后面创建的这个任务,会延迟好几秒才执行,直接给我整懵逼了
任务越多,延迟情况越严重,我测试,任务很少,也会有0.00几秒的延迟
再使用多线程同时创建多个任务执行就不会有延迟的问题出现
但是一个新问题出现了,不使用异步协程又没办法使用aiohttp??
答案:用threading多线程调用含asyncio异步函数
相关资料:https://blog.csdn.net/LeKZzz/article/details/127343128
2. uvloop
import uvloop
uvloop.new_event_loop()
loop.create_task(print_money())
loop.run_forever()
Ps:使用uvloop 可以使 asyncio 更快。事实上,它至少比 nodejs、gevent 和其他 Python 异步框架要快 两倍 。基于 uvloop 的 asyncio 的速度几乎接近了 Go 程序的速度。
3. 目前结构
目前我的策略框架为:
- 异步协程
- aiohttp http请求
- 多线程
- Websocket更新触发策略,而非轮训
我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈
不过还是得向c++低头
可惜c++写起来太麻烦了,c++100行,python1行
后面慢慢把核心功能用c++实现,然后用python去调用
Python 高频量化Http网络请求速度优化 笔记
第一:c++为底层的python库
第二:异步携程 + aiohttp + Session
第三:urllib3 PoolManager
第四:requests + Session
第五:requests
说个小知识,requests并发请求使用多线程网络请求会阻塞,多进程才不会
总结:垃圾requests
部分交易所支持Websocket下单,比http请求步骤更少,不需要再连接,理论上速度更快
相关资料:
ETH RPC搭建 笔记
配置选择
先是看了aws、谷歌云、阿里云
这个配置都要1-2wrmb一个月,太贵了
问了很多朋友,打算用hetzner,50欧一个月足以
我选的配置:64gb,2tb ssd
开好后在邮箱收到信息
链接后
按以下步骤安装系统:https://0o0.me/server/hetzner-reinstall-with-raid0.html
系统选ubuntu 22
搭建RPC节点
搭建eth rpc指令:
mkdir /data
cd /data
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.11.2-73b01f40.tar.gz
tar -zxvf geth-linux-amd64-1.11.2-73b01f40.tar.gz
mkdir prysm
cd prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh
chmod +x prysm.sh
./prysm.sh beacon-chain generate-auth-secret
cd /data/
cd geth-linux-amd64-1.11.2-73b01f40
输入完,按两次回车:
nohup ./geth --datadir "/data/eth/" --maxpeers 75 --cache=2048 --authrpc.jwtsecret /data/prysm/jwt.hex --http --http.addr "127.0.0.1" --http.port "18181" >&1 &
cd /data/prysm/
输入完,按两次回车:
nohup ./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --jwt-secret=./jwt.hex --suggested-fee-recipient=0x91a0982397BEB2B65DFF9a6436695e362135cBa6 --accept-terms-of-use &
查看eth执行层日志 tail -f /data/geth-linux-amd64-1.11.2-73b01f40/nohup.out
查看eth共识层日志 tail -f /data/prysm/nohup.out
等待同步最新块,over~
大概要1周内
使用老版本执行层同步
eth执行层如果只想太慢可以用老版本
用老版本同步到分叉的那个块,再运行新版本
运行老版本之前要先关掉新版本的进程并且删除eth文件夹
ps -ef | grep geth
kill -9 123456
rm -rf /data/eth
wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.10.24-972007a5.tar.gz
tar -zxvf geth-linux-amd64-1.10.24-972007a5.tar.gz
cd geth-linux-amd64-1.10.24-972007a5/
nohup ./geth --datadir "/data/eth/" --maxpeers 75 --cache=2048 --http --http.addr "127.0.0.1" --http.port "18181" 1>&1 &
使用Python3执行脚本
等两个层都同步完成之后
就可以用python3来调用自己的rpc节点了
像我搭建的节点
ipc地址:/data/eth/geth.ipc
http地址:http://127.0.0.1:18181/
这里会出现pip3不存在的情况
需要先安装pip3
然后再安装web3
wget https://bootstrap.pypa.io/get-pip.py get-pip.py && sudo python3 get-pip.py
pip3 -V
pip3 install web3
python3 demo 代码:
from web3 import Web3
my_provider = Web3.IPCProvider('/data/eth/geth.ipc')
my_provider = Web3.HTTPProvider("http://127.0.0.1:18181/")
w3 = Web3(my_provider)
# 当前区块高度
blockNumber = w3.eth.blockNumber
print(blockNumber)
更多的操作可以在网上找资料
还可以用nodejs写,用golong的话最快
高频量化网络延迟速度优化 笔记
- aws c区最快,a区11ms,c区7ms,且系统差距就差很多延迟,最快的是ubuntu20
- python的aiohttp内部几百微妙,要用c++,招一个c++开发
- aws c5类型的cpu能快一点点
交易所:
- bian 在东京A区和C区,老服务器在C区,负载均衡达到一定程度就到A区,平时C区块
- coinex 东京C区
- okx 在阿里云香港
- bybit 在新加坡
- 火币 东京D区