
Diese Strategie ist eine typische Moving Average Crossover-Strategie, die zwei Gruppen von Mittellinien, eine Gruppe von schnellen Mittellinien und eine Gruppe von langsamen Mittellinien gleichzeitig verwendet. Wenn eine schnelle Mittellinie über die langsame Mittellinie geht, erzeugt sie ein Kaufsignal. Wenn eine schnelle Mittellinie unter die langsame Mittellinie geht, erzeugt sie ein Verkaufsignal.
Die Hauptlogik der Strategie ist die Bestimmung der Einstiegs- und Ausstiegszeiten auf der Grundlage der Kreuzung zweier Gruppen von schnellen Mittelwerten.
Zuerst berechnen wir zwei Gruppen von schnellen Durchschnittslinien:
Dann wird beurteilt, ob die schnelle EMA Gold- oder Dead-Fork-Slow-SMA ist:
Um falsche Signale zu filtern, wurde eine zweite Gruppe von EMA- und SMA-Bestätigungen hinzugefügt:
Auf diese Weise können viele falsche Signale durch die Bestätigung von zwei Gruppen von schnellen Gleichlinien gefiltert und somit die Zuverlässigkeit der Signale verbessert werden.
Wenn die Beurteilung ein Kaufsignal erzeugt, machen Sie einen Auftritt; Wenn die Beurteilung ein Verkaufsignal erzeugt, machen Sie einen Auftritt.
Darüber hinaus hat die Strategie eine Stop-Stop-Loss-Logik eingerichtet. Die Stop-Stop- und Stop-Loss-Preise werden auf der Grundlage der eingestellten Gewinn- und Verlustquote verfolgt, wenn Positionen gehalten werden.
Die Strategie hat folgende Vorteile:
Die Strategie birgt auch einige Risiken:
Um das Risiko zu kontrollieren, empfiehlt es sich:
Die Strategie kann auch in folgenden Bereichen optimiert werden:
Insgesamt bietet die Binary Equilibrium-Strategie die Möglichkeit, die Handelssignale durch die Kreuzung von schnellen und langsamen Ebenen zu erzeugen und das Stop-Loss-Risiko zu kontrollieren. Die Strategie ist einfach, intuitiv und leicht umsetzbar. Die Strategie kann nach Markt- und Bedarfparametern optimiert werden.
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 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/
// © JMLSlop
//@version=4
src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)
// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len)
//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)
//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)
//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)
// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01
plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")
// Orders config
takeProfitPrice =
(strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na
longStopPrice = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)
longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
strategy.entry("Enter L", strategy.long)
shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
strategy.entry("Enter S", strategy.short)
if (strategy.position_size > 0)
strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)