Negociação automática com base na estratégia de negociação STOCH


Data de criação: 2023-09-28 11:38:44 última modificação: 2023-09-28 11:38:44
cópia: 0 Cliques: 702
1
focar em
1617
Seguidores

Esta estratégia é baseada no STOCH, um sistema de negociação automática simples. A estratégia é adequada para mercados como divisas, índices de ações, commodities, e também pode ser estendida para ações e criptomoedas.

Visão geral da estratégia

A estratégia usa o indicador STOCH para identificar o estado de sobrevenda e venda, em combinação com o ponto PIVOT para definir a posição de parada e perda, para realizar o acompanhamento da tendência. Quando o indicador STOCH mostra sobrevenda e venda, faça mais operações de tomada de posição; O ponto de parada é localizado perto do ponto PIVOT do dia, o que permite controlar o risco de forma eficaz; O ponto de parada parcial é definido para fechar parte da posição após um determinado lucro.

Princípio da estratégia

A estratégia usa a linha rápida% K e a linha lenta% D do indicador STOCH para realizar a troca de ouro e a troca de morte. A lógica específica é executar a operação de multiplicação quando a linha% K atravessa a linha% D de baixo para cima; quando a linha% K atravessa a linha% D de cima para baixo, execute a operação de troca de espaço.

Para controlar o risco, a posição longa faz um ponto de parada de perda mais perto do ponto de PIVOT mais baixo do dia, e a posição vazia faz um ponto de parada de perda de perto do ponto de PIVOT mais alto do dia, para bloquear o risco de forma eficaz.

Parte da lógica do stop-loss consiste em fechar 50% da posição após a abertura de uma posição e ao atingir um determinado nível de lucro. Isso permite otimizar a eficiência do uso do capital.

Em suma, a estratégia global Capture é o ponto exato para o estado de sobrevenda; Control é o controle de risco; Otimize é a eficiência no uso de recursos. Pode ser chamado de uma combinação orgânica de Capture, Control e Optimize.

Vantagens estratégicas

  • O indicador STOCH permite a captura efetiva do fenômeno de sobrecompra e sobrevenda, auxiliado pelo ponto PIVOT para controlar o risco e, assim, controlar totalmente o risco de negociação.

  • O mecanismo de parada parcial permite otimizar a eficiência do uso de capital. O método de parada parcial garante uma parte do lucro e mantém a margem de manobra para o lucro posterior.

  • Os parâmetros da estratégia podem ser personalizados e os comerciantes podem ajustar os parâmetros de acordo com as preferências de mercado e risco, permitindo a aplicação flexível da estratégia.

  • A lógica da estratégia é muito simples e clara, fácil de entender e de dominar, adequada para o uso de diferentes comerciantes. O código é intuitivo e fácil de ler, fácil de modificar e manter.

Risco estratégico

  • Como uma estratégia de acompanhamento de tendências, é fácil ficar preso em situações de turbulência e não conseguir obter lucro.

  • Os indicadores STOCH podem gerar sinais errados e desencadear comportamentos de negociação desnecessários. Os sinais devem ser filtrados adequadamente para evitar transações desnecessárias.

  • O ponto de parada é próximo ao ponto central do dia, e pode ser muito próximo após a liquidação da quebra. A distância de parada deve ser aumentada apropriadamente.

  • Alguns parâmetros da estratégia, como a duração do período, precisam ser ajustados de acordo com diferentes mercados, o que pode afetar o desempenho da estratégia.

  • O retorno baseia-se apenas em dados históricos e não garante o desempenho futuro.

  • O sistema de negociação automática deve garantir a estabilidade do servidor e evitar que as transações não funcionem devido a problemas de conexão.

Direção de otimização da estratégia

  • Pode-se introduzir filtros de tendência para evitar negociações cegas quando a tendência não é clara. Por exemplo, a inclusão do indicador MA para determinar a direção da tendência.

  • Pode ser adicionado ao monitoramento de volume de transação, como emissão, emissão de cabeça vazia, etc., filtrando brechas falsas.

  • Pode-se ajustar os parâmetros de acordo com diferentes variedades e períodos para otimizar o desempenho da estratégia. Por exemplo, ajustar os parâmetros de STOCH.

  • Algoritmos de aprendizagem de máquina podem ser considerados, utilizando modelos de treinamento de big data para otimizar automaticamente os parâmetros.

  • Pode-se ajustar a relação de perdas e perdas para introduzir o controle de risco, evitando a ocorrência de grandes perdas.

  • Mais condições podem ser adicionadas para filtrar o tempo de entrada e aumentar a taxa de vitória da estratégia.

Resumir

A estratégia em geral usa um método de acompanhamento de tendências mais simples e intuitivo, identificando o excesso de compra e venda com o indicador STOCH, e adicionando o PIVOT Stop Loss para controlar o risco, além de introduzir paradas parciais para otimizar a eficiência do capital. A estratégia é projetada a partir de três níveis de captura, controle e otimização, formando um sistema de negociação automático mais completo. A lógica da estratégia é fácil de entender, os parâmetros podem ser personalizados e usados por diferentes comerciantes.

Código-fonte da estratégia
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Peter_O

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000)
//
// This script was created for educational purposes only.
// It is showing how to use Alerts-Straight-From-Strategies and
// dynamic variables in TradingView alerts.
// And how to auto-execute them in Forex, indices, commodities markets
// 
// (This method will also work with stocks and crypto - anything your 
// broker is offering via their MT4/MT5 platform).
 
TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(13, title="K", minval=1)
periodD = input(3, title="D", minval=1)
smoothK = input(4, title="Smooth", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
plot(k, title="%K", color=color.blue)
plot(d, title="%D", color=color.orange)
h0 = hline(80)
h1 = hline(20)
fill(h0, h1, color=color.purple, transp=75)

GoLong=crossover(k,d) and k<80 and year>2009
GoShort=crossunder(k,d) and k>20 and year>2009

AlertTest=open>close or open<close or open==close
// } End of entries logic

// **** Pivot-points and stop-loss logic **** {
piv_high = pivothigh(high,1,1)
piv_low = pivotlow(low,1,1)
var float stoploss_long=low
var float stoploss_short=high

pl=valuewhen(piv_low,piv_low,0)
ph=valuewhen(piv_high,piv_high,0)

if GoLong 
    stoploss_long := low<pl ? low : pl
if GoShort 
    stoploss_short := high>ph ? high : ph
// } End of Pivot-points and stop-loss logic

// **** Trade counter and partial closing mechanism **** {
var int trade_id=0
if GoLong or GoShort
    trade_id:=trade_id+1

TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick))
TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick))
// } End of Trade counter and partial closing mechanism

strategy.entry("Long", strategy.long, when=GoLong)
strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel)
strategy.entry("Short", strategy.short, when=GoShort)
strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel)
strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel)

if GoLong
    alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close)
if GoShort
    alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel)
    alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close)
if TakePartialProfitLong
    alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close)
if TakePartialProfitShort
    alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5'
    alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)