
Эта стратегия является системой торговли, которая отслеживает тенденции, основанные на двухместных и случайных показателях (Stochastic). Она сочетает в себе систему равномерности, чтобы судить о тенденциях рынка, а также использует случайные показатели для захвата перекрестных сигналов в районах перепродажи и перепродажи, и устанавливает динамические уровни стоп-стоп для контроля риска. Этот метод гарантирует надежность торговых сигналов и эффективно управляет риском-прибылью на каждую сделку.
Стратегия основана на следующих ключевых элементах:
Условия покупки должны быть выполнены одновременно:
Продажа на противоположных условиях:
Это целостная система стратегий, объединяющая трендовый отслеживание и динамическую торговлю. С помощью однолинейной системы и использования случайных индикаторов в сочетании можно гарантировать, что торговое направление соответствует основной тенденции, а также можно торговать в соответствующих ценовых зонах. В то же время, стратегия также включает в себя совершенный механизм управления рисками, используя динамическое стоп-лосс и фиксированный риск-прибыль для контроля риска.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © quadawosanya
//@version=5
//indicator("My script")
//@version=5
strategy("EMA-Stochastic Strategy", overlay=true)
// EMA settings
ema50 = ta.ema(close, 50)
ema150 = ta.ema(close, 150)
// Stochastic settings
kLength = 14
dLength = 3
smoothK = 3
stochK = ta.sma(ta.stoch(close, high, low, kLength), smoothK)
stochD = ta.sma(stochK, dLength)
// Parameters for Stop Loss and Take Profit
var float stopLossLevel = na
var float takeProfitLevel = na
// Buy condition
buySignal = (close > ema50 and close > ema150) and (ema50 > ema150) and (stochK < 30 and ta.crossover(stochK, stochD))
// Sell condition
sellSignal = (close < ema50 and close < ema150) and (ema50 < ema150) and (stochK > 70 and ta.crossunder(stochK, stochD))
// Previous low for Stop Loss for Buy
lowBeforeBuy = ta.lowest(low, 5)
// Previous high for Stop Loss for Sell
highBeforeSell = ta.highest(high, 5)
// Entry and exit logic
if (buySignal)
stopLossLevel := lowBeforeBuy
risk = close - stopLossLevel
takeProfitLevel := close + 2 * risk
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel, limit=takeProfitLevel)
if (sellSignal)
stopLossLevel := highBeforeSell
risk = stopLossLevel - close
takeProfitLevel := close - 2 * risk
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel, limit=takeProfitLevel)
// Plotting EMAs
plot(ema50, color=color.blue, title="50 EMA")
plot(ema150, color=color.red, title="150 EMA")
// Visualize Buy and Sell signals
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Visualize Stop Loss and Take Profit levels
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit")
plot(close)