이 전략은 여러 이동 평균 라인의 돌파 및 콜백을 기반으로 거래 신호를 생성합니다. 가격이 상승 이동 평균 라인을 통과 할 때 길게 가고 가격이 하락 이동 평균 라인을 넘어갈 때 짧게됩니다.
이 코드는 21일, 50일, 100일 및 200일이라는 다양한 기간을 가진 4개의 이동 평균 라인을 사용합니다. 가격이 이 MA 라인을 통과할 때 긴 포지션을 입력하고 가격이 이 MA 라인을 넘어갈 때 짧은 포지션을 입력합니다. 또한, 스톱 로스와 취리 이윤 수준은 전략에 설정됩니다. 구체적으로, 스톱 로스는 이전 촛불의 최저 지점 근처에 설정되며, 취리 이윤은 이전 촛불의 최저 지점과 가장 높은 지점 사이의 거리의 3배에 설정됩니다.
이 전략의 핵심 아이디어는 움직이는 평균을 사용하여 트렌드를 판단하는 것입니다. 가격이 상승 MA 라인을 통과하면 상승 추세를 나타냅니다. 가격이 하향 MA 라인 아래에 떨어지면 하락 추세를 나타냅니다. 다른 기간과 여러 MA 라인을 사용하여 추세를 더 정확하게 판단하고 트렌드의 일관성을 통해 거래 신호를 확인할 수 있습니다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략의 주요 위험은 다음과 같습니다.
이러한 위험은 MA 매개 변수를 조정하고 스톱 로스를 최적화하고 수익을 취함으로써 줄일 수 있습니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
일반적으로, 이것은 전략에 따른 전형적인 추세이다. 장점은 명확한 논리이며 이해하기 쉽고 구현하기 쉽다. 단점은 잘못된 신호에 취약하다. 전략은 매개 변수 조정 및 다른 지표를 추가하여 개선 될 수 있다. 중장기 보유에 적합하며 단기 거래 전략의 구성 요소로도 사용될 수 있다.
/*backtest start: 2022-11-15 00:00:00 end: 2023-11-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("DolarBasar by AlperDursun", shorttitle="DOLARBASAR", overlay=true) // Input for Moving Averages ma21 = ta.sma(close, 21) ma50 = ta.sma(close, 50) ma100 = ta.sma(close, 100) ma200 = ta.sma(close, 200) // Calculate the lowest point of the previous candle for stop loss lowestLow = ta.lowest(low, 2) // Calculate the highest point of the previous candle for stop loss highestHigh = ta.highest(high, 2) // Calculate take profit levels takeProfitLong = lowestLow - 3 * (lowestLow - highestHigh) takeProfitShort = highestHigh + 3 * (lowestLow - highestHigh) // Entry Conditions longCondition = ta.crossover(close, ma21) or ta.crossover(close, ma50) or ta.crossover(close, ma100) or ta.crossover(close, ma200) shortCondition = ta.crossunder(close, ma21) or ta.crossunder(close, ma50) or ta.crossunder(close, ma100) or ta.crossunder(close, ma200) // Stop Loss Levels stopLossLong = lowestLow * 0.995 stopLossShort = highestHigh * 1.005 // Exit Conditions longExitCondition = low < stopLossLong or high > takeProfitLong shortExitCondition = high > stopLossShort or low < takeProfitShort if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) if (longExitCondition) strategy.exit("Long Exit", from_entry="Long", stop=stopLossLong, limit=takeProfitLong) if (shortExitCondition) strategy.exit("Short Exit", from_entry="Short", stop=stopLossShort, limit=takeProfitShort)