1960년대와 1970년대에 등장한 CTA 거래 시스템의 첫 번째 세대. 당시의 원자재 시장의 강력한 추세로 인해 CTA 전략은 그 당시 상당한 성과를 거두었다. 이 기간 동안의 원자재 시장의 강력한 추세는 제2차 세계 대전 이후 지속적인 경제 성장과 증가하는 경제 인플레이션으로 인해 발생할 수 있다. 강력한 트렌드 시장은 간단한 트렌드 추적 시스템을 통해 더 나은 수익을 얻을 수 있다. 첫 번째 세대의 CTA 시스템은 더 적은 기본 시장과 품종을 다루고 있으며 거래 시스템은 비교적 간단하며 일반적으로 여러 거래 목표를 추적하는 거래 시스템이다. 그 당시의 원자재 시장의 추세 때문에이 전략은 잘 작동했다.
1세대 트레이딩 시스템에서 사용되는 전략은 현재 트렌드 추적 전략에 익숙한 것, 예를 들어 모바일 평균 시스템 (단기 이동 평균이 장기 이동 평균을 초과하거나 그 반대의 경우와 같은 몇 가지 간단한 필터링 조건과 함께). 간단한 트렌드 추적 전략은 거래 목표 기본 요소의 연속 트렌드를 효과적으로 재생할 수 있습니다. 지속적인 경제 성장, 인플레이션 및 석유 위기가 이러한 끈기있는 이유입니다. 그러나 많은 거래자가 동일한 전략을 사용하고 기본 요소가 계속 존재할 때 새로운 환경에 적응하기 위해 1세대 거래 전략이 개발되어야합니다.
미국 달러와 금의 분리로 인해 1970년부터 1980년까지 금융 선물 시장은 급속도로 발전하여 선물 관리 펀드가 화폐 시장, 채권 시장, 주식 지수 선물 및 주식 금융 파생 상품을 포함한 많은 선물 시장에 참여할 수있었습니다. 또한 정보 기술의 발전과 저렴한 비용으로 낮 동안 데이터를 쉽게 얻을 수 있습니다. CTA 펀드에 들어가는 자금 규모의 증가와 경쟁이 증가함에 따라 CTA 전략이 더 복잡하고 적응력이 있습니다.
위의 시장 특성을 바탕으로, 두 번째 세대의 CTA 거래 시스템과 전략은 첫 번째 세대의 CTA 전략에 비해 다음과 같은 특징을 가지고 있습니다.
거래의 테마는 더 다양합니다. 금융 선물 시장의 진출은 거래의 다양성과 시장을 더 다양화했습니다.
트레이딩 전략의 관점에서, 2세대 CTA 트레이딩 시스템의 전략은 순수한 트렌드 추적과 가격 돌파로 국한되지 않습니다. 여러 시장을 모니터링하기 위해 더 많은 수학적 모델을 적용합니다. 다른 시장 조건이나 평균 반응 전략에 따라 트렌드 추적을 사용 여부. 많은 기관이 미래에셋 시장의 유동성에 참여하기 때문에 미래에셋 시장의 지속적인 낮은 변동성 기간도 나타났습니다. 이 경우 전통적인 1세대 CTA 시스템은 수익을 창출하고 시장 변화에 적응하기가 어렵습니다. 이 전략은 중요해집니다.
제2세대 CTA 전략은 거래 창과 보유 시간에 단기 거래를 수행 할 수 있습니다. 제1세대 CTA 전략과 달리 제2세대 전략은 단기 및 고주파 트레이딩 내일 거래 패턴을 모니터링하기 시작했습니다. 이 기능은 컴퓨터 기술의 발달로 인해 금융 데이터의 제공이 보다 신속하고 빈번하게됩니다.
세 번째 세대의 CTA 거래 시스템은 두 번째 세대의 거래 시스템의 추가 다양화, 분산화 및 적응력입니다. 세 번째 세대의 CTA는 더 많은 시장과 품종을 거래하기 위해 더 많은 거래 시스템을 사용합니다. 전략의 측면에서 더 수익성있는 시장 모델을 사용합니다. 이 모든 것은 여러 시장에서 실행되는 여러 모델의 조합에 기반합니다.
CTA 전략의 광범위한 응용과 시간이 지남에 따라 CTA 전략의 성숙성을 고려하여 많은 수의 양적 트레이더 (특히 초보자) 가 널리 접촉하고 이해하고자하는 고전적인 전략 모델입니다. FMZ Quant 플랫폼은 매우 일찍 표준 CTA 전략 클래스 라이브러리를 개발했습니다. FMZ Quant 플랫폼에서 CTA 전략을 적용하고 싶다면 단순히 코드를 복사하거나 클래스 라이브러리를 직접 참조할 수 있습니다.
확장성 또한 매우 편리합니다. 코드 코멘트는 매우 명확하고 이해하기 쉽습니다. 깊이 있는 사용자 정의 또는 확장 작업을 수행하려면 기존 프레임워크에서 직접 수행해야합니다.
소스 코드의 일부 (자바스크립트 버전):
function main() {
$.CTA(exchanges[0], 0.01, function(r, mp, pair){ // The first parameter is the exchange object to be done, the second parameter 0.01 is the minimum order quantity required by the exchange, the third anonymous function function() {...} is the callback function, and the trading logic is written in the function. The first parameter r of the callback function receives the latest K-line data, the second parameter receives the number of positions, and the third parameter receives the name of the trading pair.
if (r.length < 20) { // Determine the number of K-line bars
return
}
var emaSlow = TA.EMA(r, 20)
var emaFast = TA.EMA(r, 5)
var cross = _Cross(emaFast, emaSlow); // To determine the intersection status of indicators, for _Cross, please refer to: https://www.fmz.com/bbs-topic/9116
if (mp <= 0 && cross > 1) {
Log(pair, "Buy, Golden Cross period", cross, "mp:", mp);
return 0.1 * (mp < 0 ? 2 : 1) // The value returned is the number of positions to be opened, a positive number is to open a long position, a negative number is to open a short position, and 0 is to close all positions.
} else if (mp >= 0 && cross < -1) {
Log(pair, "Sell, Bearish Crossover period", cross, "mp:", mp);
return -0.1 * (mp > 0 ? 2 : 1)
}
})
}
소스 코드 및 클래스 라이브러리에 대한 자세한 내용은 다음을 참조하십시오:https://www.fmz.com/strategy/57267.