CTA 전략의 발전과 발명자 계량화 플랫폼의 표준 클래식 라이브러리

저자:선함, 2019-08-01 11:12:35, 업데이트: 2023-10-20 20:15:33

img

1세대 CTA 거래 시스템과 전략

1세대 CTA 거래 시스템은 1960년대와 1970년대에 등장했다. 이 시기의 강력한 상품 시장의 추세로 인해 CTA 전략은 당시 상당한 수익을 얻었다. 이 기간 동안의 강력한 상품 시장의 추세는 제2차 세계 대전 이후의 지속적인 경제 성장과 경제 인플레이션의 상승으로 인한 것이다. 강력한 트렌드 시장은 단순한 트렌드 추적 시스템이 더 나은 수익을 창출하도록 허용했다. 1세대 CTA 시스템은 기본적인 시장과 품종을 덜 처리하고, 거래 시스템은 비교적 간단하며, 일반적으로 여러 거래 목표를 추적하는 거래 시스템이다. 이 전략은 당시의 상품 시장의 추세로 인해 잘 작동했다.

제1세대 거래 시스템에서 사용되는 전략은 현재 동향 추적 전략과 친숙한 전략들, 예를 들어 이동 평균 시스템 (단순한 이동 평균이 장기 이동 평균을 초과하거나 그 반대의 경우와 같은 간단한 필터링 조건과 함께), 간단한 흐름 추적 전략은 거래 목표의 기본의 연속적인 경향을 효과적으로 발휘할 수 있다. 지속적인 경제 성장, 인플레이션, 그리고 석유 위기가 이러한 지속성의 배후이다. 그러나 많은 거래자가 동일한 전략을 사용하고 기본의 연속적인 거래가 더 이상 존재하지 않을 때, 제1세대 전략은 새로운 환경에 적응할 필요가 있다.

2세대 CTA 거래 시스템과 전략

달러와 금의 분화로 인해 금융 선물 시장은 1970년에서 1980년 사이에 급속도로 성장하여 선물 관리 펀드가 통화 시장, 채권 시장, 지표 선물 및 주식 금융 파생물 등 많은 선물 시장에 참여할 수 있게 되었다. 또한 정보 기술의 발전과 저렴한 비용으로 낮에 데이터를 쉽게 얻을 수 있었다. CTA 펀드의 출입 규모의 증가와 경쟁의 증가는 CTA 전략의 복잡성과 적응력을 강화시켰다.

상기 시장 특성에 기초하여, 제2세대 CTA 거래 시스템과 전략은 제1세대 CTA 전략에 비해 다음과 같은 특징을 가지고 있다.

  • 거래 주제는 더 다양하다. 금융 선물 시장의 가입은 거래 품종과 시장의 다양성을 더 높인다.

  • 거래 전략의 위에, 제2세대 CTA 거래 시스템의 전략은 순수한 트렌드 추적과 가격 돌파에 국한되지 않는다. 더 많은 수학 모델을 적용하여 여러 시장을 모니터링한다. 다른 시장 조건이나 평균 반응 전략에 따라 트렌드 추적을 사용하느냐에 따라 트렌드 추적을 한다. 많은 기관이 미래에셋 시장에 참여하는 유동성 때문에 미래에셋 시장의 지속적인 낮은 변동성 기간이 발생하고 있다. 이러한 상황에서 전통적인 제1세대 CTA 시스템은 수익성이 높지 않고 시장 변화에 적응하기 어렵게 된다. 이 전략은 중요해진다.

  • 제2세대 CTA 전략은 거래 창과 보유 시간에 단기 거래를 할 수 있다. 제1세대 CTA 전략과는 달리, 제2세대 전략은 단기 및 고주파 거래의 내일 거래 패턴을 모니터링하기 시작했다. 이 특징은 컴퓨터 기술의 발전으로 인해 금융 데이터의 제공이 더 신속하고 빈번하게 되었다.

3세대 CTA 거래 시스템과 전략

제3세대 CTA 거래 시스템은 제2세대 거래 시스템의 더욱 다양화, 분산화, 그리고 더 많은 적응력을 갖는다. 제3세대 CTA는 더 많은 거래 시스템을 사용하여 더 많은 시장과 품종을 거래한다. 전략적으로, 더 유리한 시장 모델을 사용합니다. 이 모든 것은 여러 시장에서 운영되는 여러 모델의 조합에 기반합니다.

CTA 전략의 사용이 매우 광범위하고 시간이 지남에 따라 침착하고 매우 성숙하여 많은 거래자가 광범위하게 접근하고 알고 싶어하는 고전적인 전략 모델 (특히 초보자를 위해) 을 보이기 때문에, 발명자 정량화 플랫폼은 일찍이 표준 CTA 전략의 클래식 라이브러리를 개발했습니다.

확장성 측면도 매우 편리하고 코드의 설명은 매우 명확하고 간단하며, 깊이 있는 커포메이션이나 확장 작업을 수행하려면 기존 프레임워크에서 직접 수행해야합니다.

자바스크립트 버전의 일부 소스 코드:

function main() {
    $.CTA(exchanges[0], 0.01, function(r, mp, pair){  // 第一个参数是要做的交易所对象,第二个参数0.01是交易所要求的最小下单数量,第三个匿名函数function(){...}是回调函数,交易逻辑就写在这个函数中,该回调函数第一个参数r接收最新的K线数据,第二个参数接收持仓数,第三个参数接收交易对名称

        if (r.length < 20) {   // 判断K线柱数量 
            return
        }
        var emaSlow = TA.EMA(r, 20)
        var emaFast = TA.EMA(r, 5)
        var cross = _Cross(emaFast, emaSlow); // 判断指标相交状态,_Cross参看:https://www.fmz.com/bbs-topic/1140
        if (mp <= 0 && cross > 1) {
            Log(pair, "买, 金叉周期", cross, "mp:", mp);
            return 0.1 * (mp < 0 ? 2 : 1)  // 返回的数值就是要开仓的数量,正数是 开多,负数是开空,0是全部平掉。
        } else if (mp >= 0 && cross < -1) {
            Log(pair, "卖, 死叉周期", cross, "mp:", mp);
            return -0.1 * (mp > 0 ? 2 : 1)
        }
    })
}

img img img

더 많은 소스 코드와 클래스 라이브러리의 전체 내용은 다음을 참조하십시오:https://www.fmz.com/strategy/57267


관련

더 많은