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.
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.
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.
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.
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.
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.
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.
/*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)