98년 학부생의 동전과 정량화 경로

저자:어린 천재 수확기, 2020-03-07 18:11:51, 업데이트: 2023-10-11 19:52:46

img

98년 학부생의 동전과 정량화 경로

1.入币圈

저는 98년생이고, 현재 985학년 컴퓨터 대학에 재학 중이며, 앞으로 이 대학에서 공부를 계속할 것입니다.

코인클럽에 접촉한 것은 2017년 9월 1일이었습니다. 네, 이 날을 잘 기억합니다. 왜냐하면 3일 후 코인클럽에 큰 파장을 일으킨 94 사건, 중앙은행 등 5부위원회가 공동으로 발표한 ICO 위험을 예방하고 코인 가격 벨트.

9월 1일, 저는 위크소프트 공용지에서 비트코인을 소개하는 동영상을 봤습니다. (이건 왕의 자신만의 동영상인 것 같습니다.) 이 것에 대해 매우 호기심을 느꼈습니다. 그래서 토큰을 다운로드하고 100달러를 넣었습니다. 비트코인의 가격을 보며, 3W 더 많은 인원, 저는 겁에 질렸습니다. 그래서 조금은 LTC를 샀습니다. 그때는 120원 정도였습니다. 다음 날 밤은 계좌에 몇 개의 동전 한 덩어리의 변동과 돈을 넣은 몇 개의 동전 구간에 있는 사람들 사이에서 대화를 나누었습니다.

9월 4일, 중앙은행의 한 문건, 동전 가격이 급격히 상승하고, 내가 빨리 고기를 잘라서 나가게 만들었고, 천천히 동전 가격의 하락을 보았을 때, 토큰 등 국내 거래소도 등록되지 못했고, 국내 외환 거래소 간격이 엄청났습니다.

그 후 나는 학교에 돌아갔고, 더 이상 글쓰기에 뛰어들지 않았습니다. (새 을 쫓고 떨어지는 것을 알고 있지만), 그러나 여전히 동전 회로의 움직임을 관찰하고, 때때로 몇 개의qq 그룹에서 사람들이 무슨 말을하는지보고 있습니다. 12 월이 갑자기 올랐을 때, 쇠시장의 가장 미친 달, 은 수백 배로 상승했습니다. 다른 모든 동전도 두 배로 상승했습니다. 50% 이하의 변동도 계산할 수 없습니다. 나는 흥분했고, 몇 천 달러를 채웠고, 그 다음 다양한 을 쫓고 떨어지는 이상한 조작을하고, 눈물을 흘리며 다양한 동전 비행을 보았지만 스스로 은 것도 없었습니다.

1월 18일, 열한 황금시장이 시작되고, 나는 okcoin을 등록하고, 계약을 시작했고, 20배의 레버링, 두 배, 파업, 계속, k 라인을 쳐다보고, 밤낮으로 잠을 자지 않았습니다.

거의 모든 계약 도박꾼들과 마찬가지로, 나는 결국에 파산했다. 그러나 말해야 할 것은, 이 경험이 내가 이전에 인정하지 못했던 많은 금융 지식을 가르쳐 주었다는 것입니다.

2.搞量化

컴퓨터에 대해 공부하는 사람으로서 수면이 안되는 많은 밤들을 겪은 후, 저는 프로그램이 나를 대신해서 거래를 하도록 하는 방법이 있는지 생각해보게 되었습니다.

사실 그 때 저는 fmz (당시 botvs라고 불렸던) 을 발견했습니다. 하지만 저는 너무 열성했고, 이 플랫폼을 어떻게 사용할지 알 수 없었기 때문에 하루 반 동안 열심히 일했습니다. 그래서 포기했습니다.

그리고 나서 저는 제 자신의 API를 쓰기 시작했습니다.https://github.com/ccyanxyz/okex), 이중 평선, 격자 같은 전략을 썼고, 돈을 벌지 않았지만, 양량화 문을 한 발로 밟았으며, 다양한 기술 지표를 알게 되었고, 탈리브 키보드를 배우기도 했다. 나중에 학교가 너무 많기 때문에 계속하지 않았고, 로봇은 멈춰서서서 수동 판 판 조작 모드로 돌아갔지만 빈도는 매우 낮아서 가끔씩 한두 장을 조작했습니다.

3.用FMZ

한 바퀴 돌린 후에도 나는 FMZ로 돌아왔지만, 이미 자신의 수작업 전략에 대한 경험이 있었기 때문에, FMZ는 매우 빠르다. 나는 FMZ가 거의 모든 주요 거래소를 연결하고 거래, 계좌 등을 통합하고, 편리하고 유용하게 사용할 수 있도록 한 코드를 작성하면 어디에서나 달려갈 수 있습니다.

저는 GitHub에서 fmz 공개 전략 저장소를 찾았습니다.https://github.com/fmzquant/strategies(이번 글은 보물을 찾은 것 같고, 밤이 한두 번씩 모든 전략을 뒤돌아보고, 복사하고, 복사하고, 전략 논리를 읽고, 개선하려고 노력했지만, 나는 여전히 너무 바베리아였으며, 모든 전략을 읽고도 한 장의 인쇄기를 작성하지 못했습니다.

나중에는 내가 신중하게 침착하고 생각해 보았는데, 현재 동전圈은 17 년의 동전圈이 아닙니다. 2000块에서 2000w까지의 신화 이야기는 없을 것입니다. 이 가난한 학생이 돈을 버는 것에 대해, 동전 翻身을 원하는 것은 이미 하늘의 밤이었습니다. 그래서 나는 동전 가격 추격에 집착하는 것을 포기했습니다.

현재까지, 나는 사람들에게 많은 전략을 썼고, 프로세스는 사실 상당히 굽어 졌으며, 종종 사람들이 미숙한 아이디어 또는 완전히 돈을 벌 수 없는 전략을 가지고 나를 찾아 왔고, 많은 사람들의 요구 사항은 명확하게 설명되지 않았습니다.

원래는 학교가 너무 많아서 접수 빈도가 점점 낮아졌고, 많은 사람들이 거절했습니다. 그러나 2월에 fcoin이 달아났고, 대부분의 자산을 가져갔습니다. (하지만 나는 돈이 많지 않았습니다.) 그래서 최근에는 초보자가 거절하지 않고 접수해야했습니다.

제 전략 목록:

오늘 fmz에서 조금은 말도 안되는 것을 발견했는데, 어떤 블로거가 제 블로거 광고를 그대로 복사하는 것인데, 이 광고는 그의 광고입니다.

"이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요, 이봐요.

왜 내가 FMZ에 능숙하다고 말하지 않았을까, 아무도 C++에 능숙하지 못한다고, 하하하하, 그래서 내 자기소개서와 같은 관련 기술 소개는 익숙해져있다.

4.一个套利思路

최근 몇 가지 전략들을 연구한 후, 현금 헤지, 선물, 연장, 삼각형 헤지 등, 지난 이틀 동안 본 적이 없는 전략 아이디어를 (아마도 나 혼자인지 모르겠지만) 여기 공유해보세요.

현재 외환 시장에서 몇 개의 거래가 다음과 같은 가격으로 이루어지고 있다고 가정합니다.

USDollar/BritishPound 0.5
BritishPound/FrenchFranc 10.0
FrenchFranc/USDollar 0.21

이 경우, 처리 비용을 고려하지 않고, 만약 제가 1달러를 가지고 있었다면, 저는 먼저 영국 파운드, 프랑스 프랑, 그리고 다시 미국 달러로 바꿀 수 있었고, 다시 1달러에서 1x0.5x10.0x0.21=1.05달러로 바뀌었습니다. 이윤은 0.05달러였습니다.

이 예시에서 유리한 기회는 존재하지만, 다음 예시에서는 그렇지 않습니다.

USDollar/BritishPound 0.5
USDollar/FrenchFranc 4.9
BritishPound/FrenchFranc 10.0
BritishPound/USDollar 1.99
FrenchFranc/BritishPound 0.09
FrenchFranc/USDollar 0.19

이 거대한 시장에서 어떻게 우리가 이득이 있는지 판단할 수 있을까요?

이 문제는 방향 그래프의 최단 경로 문제로 추상화될 수 있으며, 각 화폐를 꼭대기로, 교환 가격을 측면 중량으로 사용하여 방향 그래프를 구성하고, 꼭대기에서 출발하여 (예를 들어 USD) 도표에서 유리한 고형 경로를 찾습니다.

위 예제는 OJ 기사에서 가져온 것입니다.http://poj.org/problem?id=2240이 글의 내용은 이 부분에서 볼 수 있습니다.http://hehejun.blogspot.com/2018/10/poj2240-arbitrage.html

그래서 최근에 저는 이득을 잡을 수 있는 전략을 세우고 활용할 수 있는지 궁금했습니다.https://github.com/wardbradt/peregrine이 프로젝트에서는 이 수리 문제를 음수변에 있는 도표의 최단 경로 문제로 추상화하고자 한다. 위의 OJ 문제와 다른 문제 해결 아이디어는 음수변에 있는 도표의 최단 경로가 벨만-포드 알고리즘을 이용하는 문제이다.

제가 직접 fmz에서 간단한 구현을 했습니다. OJ 문제와 관련된 문제 해결 아이디어를 참조하여, 아직 작성되지 않았으며, 정확성을 보장할 수 없습니다.

var coins = {
    EMPTY: 0,
};
var price = {};

function get_coins() {
    for(var i = 0; i < exchanges.length; ++i) {
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        var len = Object.keys(coins).length;
        if(!coins.hasOwnProperty(quote)) {
            coins[quote] = len;
            len += 1;
        }
        if(!coins.hasOwnProperty(base)) {
            coins[base] = len;
            len += 1;
        }
    }
}

function get_graph() {
    var graph = [];
    for(var i = 0; i < exchanges.length; ++i) {
        var ticker = _C(exchanges[i].GetTicker);
        var base = _C(exchanges[i].GetCurrency);
        var quote = _C(exchanges[i].GetQuoteCurrency);
        graph.push({
            from: coins[base],
            to: coins[quote],
            weight: ticker.Buy
        });
        price[base + quote] = ticker.Buy;
        graph.push({
            from: coins[quote],
            to: coins[base],
            weight: 1 / ticker.Sell
        });
        price[quote + base] = 1 / ticker.Sell;
    }
    return graph;
}

function bfm(graph, initAmount, feeRate) {
    var dist = [];
    var pre = [];
    var i;
    var j;
    var fee = 0;
    for(i = 0; i < Object.keys(coins).length; ++i) {
        dist.push(0);
        pre.push(-1);
    }
    dist[1] = initAmount;
    for(i = 0; i < Object.keys(coins).length - 1; ++i) {
        for(j = 0; j < graph.length; ++j) {
            var from = graph[j].from;
            var to = graph[j].to;
            var rate = graph[j].weight;
            if(dist[from] * rate > dist[to]) {
                dist[to] = dist[from] * rate;
                pre[to] = from;
            }
        }
    }
    if(dist[1] <= initAmount) {
        return false;
    }
    var path = [];
    var top = pre[1];
    var coin_keys = Object.keys(coins);
    path.push({
        from: coin_keys[top],
        to: coin_keys[1],
        rate: price[coin_keys[top] + coin_keys[1]]
    });
    while(top != 1) {
        var temp = top;
        top = pre[top];
        path.push({
            from: coin_keys[top],
            to: coin_keys[temp],
            rate: price[coin_keys[top] + coin_keys[temp]],
        });
    }
    path.reverse();
    
    fee = path.length * feeRate * initAmount;
    if(dist[1] - initAmount <= fee || path.length == 0) {
        return false;
    }
    return path;
}

function onTick() {
    var graph = get_graph();
    var account = _C(exchanges[0].GetAccount);
    var balance = account.Balance;
    
    var path = bfm(graph, balance, 0);
    if(!path) {
        return;
    }
    Log(path);
    
    // buy & sell follow the path 
    ...
}

function main() {
    get_coins();
    
    while(1) {
        onTick();
    }
}

5.总结

요약하자면, FMZ는 좋은 플랫폼이며, 유용하고 신뢰할 수 있으며, 큰 돈을 버는 소음이 있습니다. FMZ가 점점 더 좋아지고 있기를 바랍니다.

[2020년 3월 7일 오후에 쓴 글, 한 사람이 전략을 작성하고 나서 자신의 fmz 잔액이 부족하다는 것을 보고, 오셔서 속임수를 작성했습니다]

이 글은 한국어와 한국어에 대한 이야기입니다.


관련

더 많은

류유스완미세 신호가 잘못됐습니다. 어떻게 연결할 수 있을까요?

슈퍼 2021마이크로 신호 오류

오렌도안녕하세요, 숙주님, 반갑습니다. 제가 방금 전략적 요구사항을 게시했습니다. 이제 집주인은 돈을 받지 못하고 있습니다.

작은 꿈붐비는 건조한 물품 공유, 찬!

초목감사합니다.

b6712금융권에서 활용할 수 있지만, 국제 금융에서 외환 이자율은 학부생의 과제이며, 이미 이자율이 없는 가능성이 보인다.

czgcool

존.

어린 천재 수확기, 함께 배워요.