이 전략은 쌍 이동 평균의 황금 포크 데드 포크를 사용하여 트렌드를 판단하여 구매 및 판매 신호를 발송합니다. 빠른 이동 평균이 아래에서 느린 이동 평균을 통과하면 황금 포크가 발생하고 구매 신호가 발생합니다. 빠른 이동이 위에서 아래에서 느린 이동 평균을 통과하면 죽은 포크가 발생하고 판매 신호가 발생합니다.
이 전략은 다음과 같은 부분들로 구성되어 있습니다.
가격의 백분율 형태로 오징어 값을 계산한다. 오징어 값은 가격에서 중간값의 백분율을 것이다. 중간값은 예를 들어 20일 최고 가격과 최저 가격의 평균값으로 계산된다.
20일 hull 이동 평균처럼 진동수의 이동 평균을 계산한다.
이동 평균의 지연값을 계산합니다. 12일 지연처럼요.
이동 평균이 상위 또는 하위 지연 이동 평균을 판단하고, 골드 포크 또는 데드 포크 신호가 나타납니다.
구매 및 판매 신호를 발송합니다.
구체적으로, 전략은 먼저 가격의 진동수를 계산하고, 그 다음으로 진동수의 이동 평균을 계산하고, 그 다음으로 이동 평균의 지연값을 계산한다.
진동수가 이동 평균 상에서 지연 이동 평균을 통과할 때, 황금 포크 신호를 생성하고, 더 많은 일을 한다. 진동수가 이동 평균 아래에서 지연 이동 평균을 통과할 때, 죽은 포크 신호를 생성하고, 공백을 만든다.
그래서 이중 이동 평균의 교차를 판단하여 거래 방향을 결정합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이중 이동 평균을 사용하여 가짜 신호를 필터링하여 신호의 신뢰성을 높인다.
빠른 평균선과 느린 평균선의 조합을 사용하여 중간 트렌드를 잡습니다. 빠른 평균선은 가격 변화에 민감하고 느린 평균선은 지연성이 있으며, 조합을 사용하면 단기 잡음을 제거하면서 중간 트렌드 반전을 잡을 수 있습니다.
진동기의 사용은 더 명확한 거래 신호를 생성하기 위해 돌파구를 강조합니다.
사용자 정의 이동 평균 알고리즘과 파라미터, 다른 시장 환경에 적응.
전략 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽고, 초보자 학습에 적합하다.
이 전략에는 다음과 같은 위험도 있습니다.
이중 이동 평균의 교차는 신호 지연을 발생시키고, 최고의 진입 지점을 놓칠 수 있다.
이중 이동 평균은 재조정시장에서 잘못된 신호를 유발할 수 있다.
이 트렌드가 강하거나 약하다고 판단할 수 없고, 황소 시장에서 조기 퇴장할 수도 있다.
PARAMETERS는 너무 많은 변수를 조정할 수 있으므로 최적의 변수 조합을 찾는 것이 쉽지 않습니다.
단독 손실을 통제할 수 없는 막상 손실 장치가 없습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이동 평균의 종류와 매개 변수를 최적화하고, 다른 시장에서 다른 조합의 안정성을 테스트한다.
트렌드 판단 지표인 ADX를 추가하여 잘못된 신호로 인해 불필요한 거래가 발생하지 않도록 한다.
이동 중지 또는 비율 중지와 같은 단독 손실을 제어하는 스톱 전략을 추가하십시오.
거래량 에너지, RSI 등과 같은 다른 지표와 결합하여 거래 신호 품질을 향상시킵니다.
기계 학습 방법을 사용하여 매개 변수를 자동으로 최적화하여 더 안정적인 매개 변수 설정을 얻습니다.
입학 조건의 적절한 완화를 고려하여 표가 빠질 수 있는 가능성을 줄일 수 있습니다.
이 쌍 이동 평균 금 叉 死 叉 전략은 빠른 속도와 느린 속도 평균의 조합을 매칭하여 단기 시장 소음을 제거하면서 가격 중기 경향의 전환점을 포착하여 거래 신호를 생성한다. 이 전략의 장점은 간단하고 구현하기 쉽고 이해하기 쉽고 초보자 친화적이다. 그러나 잘못된 신호를 생성하고 트렌드 강도를 판단하지 못하는 등의 단점도 있다. 이동 평균 매개 변수를 최적화하여 트렌드 판단 지표를 추가하고 스톱 손실 조건을 설정하여 전략을 개선 할 수 있습니다.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 4h
basePeriod: 15m
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/
// © EvoCrypto
//@version=4
strategy("Distance Oscillator Strategy- evo", shorttitle="Distance Oscillator Strategy")
// INPUTS {
na_1 = input(false, title="────────────{ Oscillator }──────────────")
// Osc_Src = input(close, title="Oscillator Source ")
Example_Length = input(20, title="Example Length", minval=1)
Osc_Src = (highest(Example_Length) + lowest(Example_Length)) / 2
// Strategy can not let you choose a Moving Average to connect with like the study version, so I use the MA above as example
Osc_Format = input("Percent",title="Oscillator Format", options=["Percent", "Currency"])
na_2 = input(false, title="─────────────{ Average }──────────────")
Average_Type = input("Hull", title="Average Type", options=["Hull", "Sma", "Ema", "Wma"])
Length = input(50, title="Average Length", minval=1)
Lagg = input(12, title="Average Lagg", minval=1)
Display_MA = input(true, title="Display Average")
// }
// SETTINGS {
Osc_Sum =
Osc_Format == "Percent" ? (close - Osc_Src) / close * 100 :
Osc_Format == "Currency" ? (close - Osc_Src) : na
Osc_MA = Display_MA == false ? na:
Average_Type == "Hull"? hma(Osc_Sum, Length) :
Average_Type == "Sma" ? sma(Osc_Sum, Length) :
Average_Type == "Ema" ? ema(Osc_Sum, Length) :
Average_Type == "Wma" ? wma(Osc_Sum, Length) : na
Osc_MA_1 = Osc_MA[Lagg]
Cross_Up = crossover( Osc_MA, Osc_MA_1)
Cross_Down = crossunder(Osc_MA, Osc_MA_1)
Osc_Color = Osc_Sum > 0 ? color.new(#bbdefb, 70) : Osc_Sum < 0 ? color.new(#000000, 70) : na
Average_Color = Osc_MA > Osc_MA_1 ? color.new(#311b92, 100) : Osc_MA < Osc_MA_1 ? color.new(#b71c1c, 100) : na
// }
// PLOT {
plot(Osc_Sum, title="Oscillator", color=Osc_Color, style=plot.style_histogram, linewidth=2)
Plot_0 = plot(Osc_MA, title="Osc Average",color=#b71c1c, linewidth=2)
Plot_1 = plot(Osc_MA_1, title="Osc Average",color=#311b92, linewidth=2)
fill(Plot_0, Plot_1, title="Average", color=Average_Color)
plotshape(Cross_Up ? Osc_MA_1 : na, title="Cross Up", color=#bbdefb, location=location.absolute, size=size.tiny, style=shape.circle)
plotshape(Cross_Down ? Osc_MA_1 : na, title="Cross Down", color=#000000, location=location.absolute, size=size.tiny, style=shape.circle)
// }
// STRATEGY {
if (Cross_Up)
strategy.entry("Long", strategy.long)
if (Cross_Down)
strategy.entry("Short", strategy.short)
// }