리소스 로딩... 로딩...

수평선 파열과 함께 트렌드 포착 전략

저자:차오장, 날짜: 2024-04-26 15:22:06
태그:

img

전반적인 설명

이 전략은 수평선을 지원 및 저항 수준으로 사용하며 가격이 이 선을 넘을 때 거래 신호를 생성합니다. 주요 아이디어는: 첫째, 특정 조건에 따라 수평선을 그리고, 가격이 선을 넘을 때 긴 거리로 이동하고, 가격이 선을 넘을 때 포지션을 닫습니다. 동시에, 이전 촛불의 낮은 가격이 현재 폐쇄 가격보다 높다는 것과 같은 수평선을 생성하는 것과 같은 조건이 있습니다.

전략 원칙

  1. 이전 촛불의 낮은 가격이 현재 폐쇄 가격보다 크다는 조건에 기초하여 이전 촛불의 낮은 가격에 20의 길이의 수평선을 그리며 항상 최신 10 줄만을 유지하십시오.
  2. 현재 가격이 마지막 수평선을 넘어서면 이전 모든 긴 포지션을 닫고 새로운 긴 포지션을 개척합니다.
  3. 새로운 수평선을 그리면, 만약 포지션이 있다면 먼저 닫고, 새로운 긴 포지션을 열어야 합니다.

전략적 장점

  1. 전략 논리는 간단하고 명확하고 이해하기 쉽고 실행하기 쉽습니다.
  2. 수평선 지원과 저항 레벨의 돌파구를 사용하여 신호를 생성함으로써 트렌드를 잘 파악할 수 있습니다.
  3. 새로운 수평선이 생성되면 먼저 이전 포지션을 닫고 새로운 포지션을 열 수 있습니다. 이는 이전 포지션이 가져올 수있는 위험을 줄일 수 있습니다.
  4. 전략은 수평선 길기와 수를 조정하여 최적화 할 수 있습니다.

전략 위험

  1. 오시일레이션 시장에서 빈번한 수평선 돌파는 오버 트레이딩으로 이어질 수 있으며 큰 미끄러짐과 거래 수수료로 이어질 수 있습니다.
  2. 전략의 수평선 정의는 상대적으로 간단하며 다른 지표에 대한 검증이 부족하여 일부 잘못된 신호를 생성할 수 있습니다.
  3. 그것은 단지 길고 짧지 않으며 하락 추세를 완전히 활용할 수 없습니다.

전략 최적화 방향

  1. 다른 지표는 거래량 변화와 같은 수평 선의 유효성을 확인하기 위해 결합하여 잘못된 신호를 줄일 수 있습니다.
  2. 오스실레이션 시장에서는 수평선 돌파의 크기를 증가시킴으로써 거래의 빈도를 줄일 수 있습니다.
  3. 하락 추세에서 이익을 얻기 위해 마감 판매 메커니즘을 추가합니다.
  4. 다른 시장 조건에 적응하기 위해 수평 선의 길이와 수를 동적으로 조정하는 것을 고려하십시오.

요약

이 전략은 수평선을 중요한 지지 및 저항 수준으로 사용하고, 라인 돌파를 통해 거래 신호를 생성합니다. 이점은 논리가 간단하고 구현하기 쉽고, 트렌드를 잘 파악할 수 있다는 것입니다. 그러나 단점은 과거래, 잘못된 신호를 생성 할 수 있으며, 길지만 짧지 않을 수 있다는 것입니다. 미래에는 다른 지표를 결합하여 최적화하고 개선 할 수 있습니다. 거래 빈도를 줄이고, 짧은 판매 메커니즘을 추가하고, 매개 변수를 동적으로 조정합니다.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
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/
// © Traderxprox

//@version=5
strategy("Alarm Trader_ALL", overlay=true)

// Yatay çizgi oluşum
yatayc = low[1] > close[0]

if yatayc
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(low[1], "#.##") + "\n" + timeframe.period +"\n Yatay Direnç Oluştu")


//YATAY ÇİZGİ
int cizgilen = input.int(20, "Çizgi uzunluğu?", group = "Yatay Çizgi Ayarları")
var array<line> lines = array.new<line>()
int numberOfLines = input.int(10, "Son Kaç Çizgi?", 0, group = "Yatay Çizgi Ayarları")
kural22 = low[1] > close[0]
// if kural22
//     newLine = line.new(bar_index-2, low[1], bar_index+cizgilen, low[1] ,color=color.red, width=1, style=line.style_solid)
//     // Push the `newLine` into the `lines` array.
//     lines.push(newLine)
//     // Delete the oldest line when the size of the array exceeds the specified `numberOfLines`.
//     if array.size(lines) > numberOfLines
//         line.delete(lines.shift())
    
// Alarm kırılım için koşul

var float lastLinePrice = na
if not na(close) and array.size(lines) > 0 
    lastLinePrice := line.get_price(array.get(lines, array.size(lines) - 1), bar_index)
if open < lastLinePrice and close > lastLinePrice
    if strategy.opentrades > 0
        strategy.close("AL", comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")
    else
        strategy.entry("AL", strategy.long, comment = "Fiyat:" + str.tostring(lastLinePrice, "#.##") + "\n" + timeframe.period +" \n Yatay çizgi yukarı kırılımı")



더 많은