Esta estratégia projeta um sistema de negociação automática simples baseado no indicador STOCH. É adequado para Forex, índices de ações, commodities e pode ser estendido para ações e mercados de criptomoedas.
Esta estratégia identifica estados de sobrecompra e sobrevenda usando o indicador STOCH combinado com pontos PIVOT para definir posições de stop loss, realizando a tendência seguinte. Ele vai longo ou curto quando o indicador STOCH mostra sinais de sobrecompra ou sobrevenda. Os pontos de stop loss são definidos perto dos pontos PIVOT do dia para controlar efetivamente os riscos. Os pontos de lucro parcial são definidos para fechar posições parciais após certo nível de lucro.
Esta estratégia utiliza o cruzamento de linhas %K e %D do indicador STOCH para gerar sinais longos e curtos. Especificamente, quando a linha %K cruza acima da linha %D, ela vai longo. Quando a linha %K cruza abaixo da linha %D, ela vai curta. Isso captura os estados de sobrecompra e sobrevenda.
Para controlar os riscos, o ponto de stop loss longo é definido perto do ponto PIVOT mais baixo diário e o ponto de stop loss curto é definido perto do ponto PIVOT mais alto diário.
Para lucro parcial, fecha 50% da posição após um certo nível de lucro após a abertura da posição.
Em resumo, esta estratégia Captura pontos de sobrecompra e sobrevenda adequadamente; Controla riscos usando stop loss; e otimiza a eficiência do uso de capital.
A utilização do indicador STOCH permite capturar de forma eficaz os estados de sobrecompra e sobrevenda.
O mecanismo de captação parcial de lucro otimiza a eficiência do uso do capital.
Os parâmetros personalizáveis permitem flexibilidade com base nas condições do mercado e na preferência de risco.
Lógica simples e clara, fácil de compreender e dominar para todos os comerciantes.
Como uma estratégia de tendência, pode ficar preso em mercados de faixa e não obter lucro.
O STOCH pode gerar sinais falsos, causando negociações desnecessárias.
A distância de stop loss perto dos pontos de pivô pode ser muito próxima após a ruptura.
Alguns parâmetros, como o período, podem precisar de ajustamentos para diferentes mercados, caso contrário, afetam o desempenho da estratégia.
O backtest baseia-se apenas em dados históricos, não pode garantir o desempenho futuro, mais fatores incontroláveis na negociação ao vivo.
Os sistemas de negociação automática exigem conexões estáveis para evitar problemas de execução de negociações.
Adicionar um filtro de tendência para evitar negociações sem tendências claras, como usar MA para determinar a direção da tendência.
Adicionar análise de volume para detectar falhas e evitar armadilhas.
Ajustar parâmetros como entradas STOCH com base em diferentes produtos e prazos para otimizar o desempenho.
Considere algoritmos de aprendizado de máquina para treinar modelos usando big data e otimizar automaticamente parâmetros.
Definir o rácio do fator de lucro para introduzir o controle de risco e evitar grandes perdas de negócios.
Adicionar mais filtros como condições de negociação, fundamentos para melhorar a taxa de vitória.
Esta estratégia adota uma abordagem simples e intuitiva de tendência baseada no indicador STOCH para identificar pontos de sobrecompra / sobrevenda. Com o PIVOT stop loss para controlar o risco e lucro parcial para otimizar a eficiência do capital. O projeto abrange Capture, Control e Optimize. A lógica é simples e personalizável. Mas também tem alguns riscos e pode ser otimizada ainda mais.
/*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)