操控趋势策略 笔记

最近一直在琢磨操控趋势策略,玩的好一波能赚数千u,玩的不好就亏个几百一千u
会亏钱,搞得我很不爽,玩了几十笔到现在赚了3w6,其中有1wu被冻结了….
反反复复让我提交了一个礼拜各种资料,到现在还没解开,交易所就是这样,亏钱笑嘻嘻,赚钱mmp

还在精进中,努力想办法不会亏钱,让每一次都能赚5ku以上
主要就是我拉盘有人砸盘,我跟着砸盘又拖底买入,太烦了
然后遇到btc动,其他币也会跟着动,得要没行情的时候才行

靠这个策略至少赚1m


苏慕白 发布于  2023-8-24 23:35 

【招聘】量化团队组队中 量化交易

资金和策略太多一个人管理不过来
地点江西赣州,欢迎加入

一、高频做市商

  1. 网络延迟架构师
  2. 数学建模并优化
  3. 系统内延迟优化
  4. 精通Python,熟悉Rust或C++

二、套利

  1. Python异步策略开发
  2. 熟悉交易所

三、交易员

  1. 监控套利运行状态
  2. 对做市商机器人及时调整参数

四、链上

  1. 智能合约开发
  2. 节点搭建并优化低层
  3. 熟悉Python nodejs c++

五、渗透测试

  1. 对量化系统进行风险评估
  2. 技术过硬

如果你会其中一项,那么我们就可以聊聊啦~


苏慕白 发布于  2023-7-6 11:31 

可以帮助你的圣杯策略: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
标签: ma8 圣杯

苏慕白 发布于  2023-4-1 21:01 

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. 目前结构

目前我的策略框架为:

  1. 异步协程
  2. aiohttp http请求
  3. 多线程
  4. Websocket更新触发策略,而非轮训

我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈
不过还是得向c++低头
可惜c++写起来太麻烦了,c++100行,python1行
后面慢慢把核心功能用c++实现,然后用python去调用


苏慕白 发布于  2023-3-22 23:06 

Python 高频量化Http网络请求速度优化 笔记

第一:c++为底层的python库
第二:异步携程 + aiohttp + Session
第三:urllib3 PoolManager
第四:requests + Session
第五:requests

说个小知识,requests并发请求使用多线程网络请求会阻塞,多进程才不会
总结:垃圾requests

部分交易所支持Websocket下单,比http请求步骤更少,不需要再连接,理论上速度更快

相关资料:

  1. https://www.cnblogs.com/ydf0509/p/14655383.html
  2. https://zhuanlan.zhihu.com/p/338093584?ivk_sa=1024320u
  3. https://github.com/ydf0509/nb_http_client

苏慕白 发布于  2023-3-22 22:33 

苏慕白 发布于  2023-3-22 13:53 

量化小资金日化10%很难吗 笔记

期权,合约对合约。现货对合约,币本位。链上提现,有波动就能赚钱
这是除了高频之外,最适合普通人的一条路了
达到顶级手续费顶级速度,你也可以的


苏慕白 发布于  2023-3-21 12:03 

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的话最快


苏慕白 发布于  2023-3-2 12:21 

高频量化网络延迟速度优化 笔记

  1. aws c区最快,a区11ms,c区7ms,且系统差距就差很多延迟,最快的是ubuntu20
  2. python的aiohttp内部几百微妙,要用c++,招一个c++开发
  3. aws c5类型的cpu能快一点点

交易所:

  1. bian 在东京A区和C区,老服务器在C区,负载均衡达到一定程度就到A区,平时C区块
  2. coinex 东京C区
  3. okx 在阿里云香港
  4. bybit 在新加坡
  5. 火币 东京D区

苏慕白 发布于  2023-2-19 23:58 

4-2日 好久没更新了 实盘

好久没更新博客了
最近两个月圣杯策略翻了几倍,但是踩了几个坑又赔回去了

这两天给圣杯策略做了个全交易对实时拟合

淘宝租了五台 i5-12600KF
然后用用遗传算法,实时拟合币安141个合约交易对、6个周期

回测日化100%+,恐怖吗,今天实盘跑了一天
还不错,但是还是有些bug
期待以后的效果


我现在还在跑千千千神的高频做市策略,带预测的,哈哈
最近币安上的新币韭菜ape、zil、gmt最多的时候一天100%,平时日化5%


苏慕白 发布于  2022-4-2 13:20 

2-25日 圣杯策略实盘随笔 实盘

累积跑了十天,这两天的暴跌行情全部吃到了
累积盈利40%左右:
图片alt
图片alt

这两天刚加了很多交易对,拟合的情况日化10%,最大回撤20%左右
再跑个十天,继续增加


今天早上4点时候,出现了插针的情况
图片alt

吸取了上次的教训,我的实盘增加了风控功能,成功把这次风险规避
回测系统的回撤达到了20%+,而实盘有风控回撤只有6%


交易就是如此,不断吸取教训,改进,每一次改进真金白银


苏慕白 发布于  2022-2-25 09:12 

2-16日 圣杯策略实盘随笔 实盘

最近半个月状态挺糟糕的,对自己的策略严重失去信心
亏30%的时候,继续抗,直到亏70%,才后知后觉
这就是人性,再次败给了自己
把风控抛之脑后


总结了两个问题:
第一个是我一直在币安跑,后面换了Okex,对比币安,滑点增大,有的时候滑点可以达到百分之一。我回测没有统计平均单笔利润,然后也不怎么在意滑点,只在意手续费,最后回测结果和实盘结果很大出入
第二个是过拟合的问题,几乎所有机构,都是对着历史拟合,失效了继续拟合,这似乎是一个无解的问题。导致历史最大回撤被超过。


调整了下心态,继续吧

目前操作为:

  1. 换回币安
  2. 除了多品种外,再增加多周期,也就是一个品种同时跑15m、30m、1h,2h。(另外可以尝试6m这种大家不常用的k线,会有意想不到的效果,用3m的k线拼接就好了)
  3. 注重平均单笔利润,如果你的策略回测结果平均单笔利润为万2,那么增加一点手续费或者滑点就是凉的结果
  4. 完整的风控,针对过拟合的问题,要及时更新拟合失效的品种,对每个品种最大回撤要有个预期。杠杆不要开太大

对了,目前币安的BUSD挂单为-0.0001%,吃单为0.0002%(貌似持续半年了)
但是比较USDT,挂单成交率没那么高,做的人太多
并且支持BUSD的合约交易对只有八个
图片alt


期间把失败分享给朋友的时候,有的人支持我继续,有的人叫我放弃炒币,好好做事
但是其实我的策略还是盈利的状态,就是开太高的杠杆一味追求利益,然后来到最大回撤关掉风控继续死扛
不过这都是自己作的,能怪谁呢?

图片alt

图片alt


苏慕白 发布于  2022-2-16 14:08 

黑客内幕交易 笔记

[该文章已加密,请点击标题输入密码访问]


苏慕白 发布于  2022-2-3 20:52 

又被教做人了 实盘

一直看不起长线策略年化几百太低
结果再次被金融市场按在地上狠狠的摩擦

最后尝试下高频(高频套利、千千的做市),不行专心跑长线了
然后把量化当成副业,不做主业,让他做为自己的理财方案

自己去做线报引流
有这个一天引流几百粉的能力,为啥要死磕金融一个?

半年前开始做这个早就稳定日入1k以上了
半年前做长线策略身家早就几百万了

就当做是历练了吧,让自己的心理承受能力更强(亏钱亏的)


苏慕白 发布于  2022-1-29 10:12