Die erste Generation von CTA-Trading-Systemen entstand in den 1960er und 1970er Jahren. Die CTA-Strategie erwirtschaftete zu dieser Zeit erhebliche Erträge aufgrund der starken Trends in den Warenmärkten. Die starke Entwicklung der Warenmärkte in dieser Zeit ist auf die anhaltende Wirtschaftsentwicklung und die steigende Inflation nach dem Zweiten Weltkrieg zurückzuführen. Starke Trendmärkte ermöglichten eine bessere Rendite durch einfache Trend-Tracking-Systeme.
Strategien, die in der ersten Generation von Handelssystemen verwendet werden, sind Strategien, mit denen sich jetzt Trend-Tracking-Strategien wie beispielsweise Moving Average-Systeme vertraut machen. Zusätzlich zu einigen einfachen Filterbedingungen, z. B. wenn die kurzfristige Moving Average die langfristige Moving Average übersteigt oder umgekehrt, kann eine einfache Trend-Tracking-Strategien effektiv die kontinuierliche Entwicklung der Handelsziele auslösen.
Durch die Entkoppelung des Dollars und des Goldes entwickelte sich der Finanz-Futures-Markt in den 1970er und 1980er Jahren rasant, was es den Futures-Management-Fonds ermöglichte, sich in vielen Futures-Märkten zu beteiligen, darunter den Geldmarkt, den Bondmarkt, Aktien-Futures und Aktien-Finanzderivate. Darüber hinaus machten die Entwicklungen in der Informationstechnologie und die niedrigen Kosten den Zugang zu Daten tagsüber leicht.
Basierend auf den oben genannten Marktmerkmalen weist die zweite Generation von CTA-Handelssystemen und -Strategien im Vergleich zur ersten Generation von CTA-Strategien folgende Eigenschaften auf:
Die Einbeziehung des Finanz-Futures-Marktes führt zu einer größeren Vielfalt an Handelsarten und Märkten.
Neben der Handelsstrategie sind die Strategien der zweiten Generation von CTA-Handelssystemen nicht nur auf reine Trendverfolgung und Preisdurchbrüche beschränkt. Mehr mathematische Modelle werden angewendet, um mehrere Märkte zu überwachen. Trendverfolgung wird je nach unterschiedlichen Marktbedingungen oder durchschnittlichen Reaktionsstrategien angewendet. Da viele Institutionen an der Liquidität der Futures beteiligt sind, gibt es auch dauerhafte Niedrigfluktuationsphasen in den Futuresmärkten.
Die zweite Generation von CTA-Strategien ermöglicht kurzfristige Transaktionen in den Handelsplätzen und in den Haltezeiten. Im Gegensatz zu der ersten Generation von CTA-Strategien hat die zweite Generation von Strategien begonnen, das Tagesgeschäftsmodell von kurzfristigen und hochfrequenten Transaktionen zu überwachen. Dieses Merkmal ist auf die Entwicklung der Computertechnologie zurückzuführen, die die Bereitstellung von Finanzdaten rechtzeitig und häufiger macht.
Die dritte Generation von CTA-Handelssystemen ist eine weitere Diversifizierung, Dezentralisierung und mehr Anpassungsfähigkeit der zweiten Generation von Handelssystemen. Die dritte Generation von CTAs verwendet mehr Handelssysteme, um mehr Märkte und Sorten zu handeln. Strategisch gesehen verwendet sie profitablere Marktmodelle. All dies basiert auf einer Kombination mehrerer Modelle, die in mehreren Märkten betrieben werden.
Da die CTA-Strategie so weit verbreitet ist und mit der Zeit langweilig geworden ist, ist sie ein klassisches Strategie-Modell, das von zahlreichen Tradern (insbesondere für Neulinge) weit verbreitet und verstanden werden möchte.
Die Skalierbarkeit ist auch sehr einfach, die Anmerkungen für den Code sind sehr klar und einfach zu verstehen, und wenn Sie eine tiefgreifende Anpassung oder Erweiterung anstreben, müssen Sie dies direkt im vorhandenen Framework tun.
Ein Teil des Quellcodes (JavaScript Version):
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)
}
})
}
Weitere Quellcodes und eine vollständige Bibliothek finden Sie unter:https://www.fmz.com/strategy/57267