
Por que é chamado de termostato? Nomeamos esse sistema com base em sua adaptabilidade para alternar e negociar nos modos de mercado, swing e tendência. O sistema foi derivado de nossa observação do sucesso de sistemas específicos em segmentos de mercado específicos. Este sistema permite a criação de estratégias de dupla natureza para aproveitar ambos os modos de mercado.
Primeiro, criamos uma função para ajudar a determinar padrões de mercado. Com base na saída desta função, o termostato alterna do modo de acompanhamento para o modo de oscilação de curto prazo.
O modo de acompanhamento de tendências usa um mecanismo de acompanhamento de tendências semelhante ao encontrado nas Bandas de Bollinger. O sistema de swing de curto prazo é um rompimento aberto que incorpora reconhecimento de padrões. Esta função compara a distância percorrida pelo mercado com a distância real percorrida pelo mercado:
Abs(Preço de Fechamento - Preço de Fechamento[29])/(Preço mais alto (30) - Preço mais baixo (preço baixo, 30 dias) * 100
Esta função gera um valor entre 0 e 100. Quanto maior o valor, menos concorrido é o mercado atual. Se o valor retornado pela função for menor que 20, o sistema entra no modo de oscilação de curto prazo.
Basicamente, o mercado está mostrando uma ação oscilante e o sistema tenta capturar essa oscilação e obter um pequeno lucro com ela. Os termostatos tentam realizar esse feito comprando/vendendo pequenos impulsos de mercado. Se as flutuações forem grandes o suficiente, o sistema alterna os modos.
Por meio de uma análise aprofundada das flutuações de curto prazo, descobrimos que às vezes é melhor comprar do que vender, e vice-versa. Esses horários podem ser identificados por meio de padrões visuais simples. Se o fechamento de hoje for superior à máxima, mínima e fechamento de ontem (também conhecido como ponto de pivô do dia), então acreditamos que a ação do mercado amanhã provavelmente será de baixa. No entanto, se o fechamento de hoje estiver abaixo da média da máxima, mínima e fechamento de ontem, então o mercado de hoje provavelmente estará em alta. Classificamos esses momentos como mais fáceis para comprar e vender.
A estratégia de termostato é uma estratégia muito popular na Inventor Quantitative Platform. Os usuários podem adicionar alguma lógica de negociação adicional de acordo com suas necessidades para fazer a estratégia ter um desempenho melhor. A seguir está uma estrutura típica de uma estratégia de termostato na Inventor Quantitative Platform:
Imagem principal: Fórmula do trilho superior: TOP^^MAC+N_TMPTMP; // trilho superior do canal de Bollinger Fórmula da trilha inferior: BOTTOM^^MAC-N_TMPTMP; // Trilha inferior do canal de Bollinger
Sub-imagem: Fórmula CMI: CMI:ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100; //0-100 Quanto maior o valor, mais forte a tendência. CMI<20 indica modo de oscilação, CMI>20 indica tendência.
Código (Meu idioma):
MAC:=MA(CLOSE,N);
TMP:=STD(CLOSE,N);
TOP^^MAC+N_TMP*TMP; // 布林通道上轨
BOTTOM^^MAC-N_TMP*TMP; // 布林通道下轨
BBOLL:=C>MAC;
SBOLL:=C<MAC;
N_CMI:=30;
CMI:ABS(C-REF(C,N_CMI-1))/(HHV(H,N_CMI)-LLV(L,N_CMI))*100; //0-100 取值越大,说明趋势越强,CMI<20震荡模式,CMI>20为趋势
N_KD:=9;
M1:=3;
M2:=3;
RSV:=(CLOSE-LLV(LOW,N_KD))/(HHV(HIGH,N_KD)-LLV(LOW,N_KD))*100; //收盘价与N周期最低值做差,N周期最高值与N周期最低值做差,两差之间做比值。
K:=SMA(RSV,M1,1); //RSV的移动平均值
D:=SMA(K,M2,1); //K的移动平均值
MIND:=30;
BKD:=K>D AND D<MIND;
SKD:=K<D AND D>100-MIND;
// 震荡模式
BUYPK1:=CMI < 20 AND BKD; //震荡多单买平开
SELLPK1:=CMI < 20 AND SKD; //震荡空单卖平开
// 趋势模式下原有震荡持仓的处理
SELLY1:=REF(CMI,BARSBK) < 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND K<D; //震荡多单止盈
BUYY1:=REF(CMI,BARSSK) < 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND K>D; //震荡空单止盈
// 趋势模式
BUYPK2:=CMI >= 20 AND C > TOP; // 趋势多单买平开
SELLPK2:=CMI >= 20 AND C < BOTTOM; // 趋势空单卖平开
// 趋势模式下原有震荡持仓的处理
SELLY2:=REF(CMI,BARSBK) >= 20 AND C>BKPRICE*(1+0.01*STOPLOSS*3) AND SBOLL;//趋势多单止盈
BUYY2:=REF(CMI,BARSSK) >= 20 AND C<SKPRICE*(1-0.01*STOPLOSS*3) AND BBOLL;//趋势空单止盈
SELLS2:=REF(CMI,BARSBK) >= 20 AND C<BKPRICE*(1-0.01*STOPLOSS) AND SBOLL;//趋势多单止损
BUYS2:=REF(CMI,BARSSK) >= 20 AND C>SKPRICE*(1+0.01*STOPLOSS) AND BBOLL;//趋势空单止损
IF BARPOS>N THEN BEGIN
BUYPK1,BPK;
SELLPK1,SPK;
BUYPK2,BPK;
SELLPK2,SPK;
END
BUYY1,BP(SKVOL);
BUYY2,BP(SKVOL);
BUYS2,BP(SKVOL);
SELLY1,SP(BKVOL);
SELLY2,SP(BKVOL);
SELLS2,SP(BKVOL);
Os resultados do backtest desta estratégia são os seguintes:

Para mais detalhes, consulte: https://www.fmz.com/strategy/129086