이 전략은 Faytterro Estimator의 거래 신호를 기반으로 거래하는 전략이다. Faytterro Estimator는 가격의 수렴 분산율을 계산하여 추세를 판단하는 지표이다. 이 전략은 Faytterro Estimator의 거래 신호와 몇 가지 부가 조건을 결합하여 이상적인 지점에서 다양한 크기의 구매 및 판매 신호를 발송한다.
이 전략의 핵심은 Faytterro Estimator이다. 그것의 계산 방법은: 먼저 가격의 수렴 분산율 CR을 계산하고, 그 다음 두 번째 함수를 구성한다. 이 두 번째 함수는 다른 계수를 설정하여 CR의 곡선의 특성을 반영할 수 있다. 두 번째 함수 곡선의 곡점을 관찰하여 가격 경향의 변화를 판단한다.
구체적으로, 전략은 우선 가격의 수렴 분산율 CR를 계산한다. 그리고 길이가 2인*len의 배열dizi, 순차적으로 2차 함수값을 채웁니다. 그 중 2차 함수수수는 CR의 값을 반영합니다. 그 다음 len+1+5 및 len+1+4로 표시된 두 개의 값을 관찰하여 2차 함수가 커버 포인트가 발생하는지 여부를 판단하고, 커버 포인트가 발생하면 구매 또는 판매 신호를 냅니다.
이 기반에서, 전략은 또한 몇 가지 추가 조건을 설정합니다. 예를 들어, 가격 돌파의 최소 간격을 설정하고, 자주 거래하는 것을 피합니다. 다양한 크기의 입문 신호를 설정합니다. 이러한 조건은 바람직하지 않은 거래 지점을 필터링하기위한 것입니다.
이 전략에는 다음과 같은 장점이 있습니다.
파이터로 에스티메이터 (Faytterro Estimator) 는 가격 변동에 민감한 지표로, 트렌드 변화를 조기에 포착할 수 있다.
이차 함수를 구성하여 CR 곡선 특성을 반영하고, 턴 포인트 신호를 찾고, 판단하는 방법은 직관적으로 유효하다.
다양한 크기의 입문 신호를 설정하여 피라미드 거래를 최적의 지점에서 수행하여 수익을 올릴 수 있습니다.
최소 간격 설정을 추가하여 신호를 효과적으로 필터링하여 빈번한 무효 거래를 방지한다.
조정 가능한 매개 변수가 많고, 다양한 품종에 대해 최적화할 수 있으며, 적응력이 강하다.
전략이 명확하고 이해하기 쉬우며, 코드가 읽기 쉬우며, 배우기 쉽다.
이 전략에는 몇 가지 위험도 있습니다.
Faytterro Estimator는 곡선 피팅에 대한 위험이 있으며, 일부 품종에서는 효과가 좋지 않을 수 있다.
2차 함수 굽점 판단에 의존하는 신호는 너무 팽창하여 잘못된 판단을 초래할 수 있다.
피라미드 거래가 빈번해지면서 수수료 부담이 커지고 있습니다.
많은 조정 가능한 파라미터가 조정의 난이도를 증가시킨다.
가격 변동에 대한 잘못된 판단을 효과적으로 처리할 수 없습니다.
하지만, 이 모든 것은 손실이 커질 수 있는 막부장치가 없기 때문입니다.
위험을 대응하는 해결책은 다음과 같습니다.
다양한 품종에 대한 최적화 매개 변수, 체력 향상을 .
다른 지표들을 필터링하여, 단지 턴포인트만으로 잘못된 판단을 피하십시오.
단편적 손실을 통제하기 위한 합리적인 스톱로스 설정
빅데이터 방법을 통해 자동으로 변수를 조정한다.
지진을 감지하는 메커니즘을 추가하여 지진 단계를 피할 수 있습니다.
합리적인 스톱 로직을 설정하십시오.
이 전략의 최적화 방향은 다음과 같습니다.
단기 손실을 제어하는 스톱 로직을 추가한다. 이동 스톱 또는 시간 스톱을 설정할 수 있다.
다른 지표의 조합을 추가하여 Faytterro Estimator 단 하나의 지표 판단에 잘못된 판단의 위험을 피하십시오. 예를 들어 MACD, KDJ와 같은 지표와 결합하여 필터링하십시오.
확인 메커니즘을 추가하여, 가격의 단기 회귀로 인해 스톱 로스로 출전을 방지한다.
조정 가능한 매개 변수를 최적화하고, 다른 품종에 대해 합리적인 매개 변수를 설정한다. 유전 알고리즘, 베이스 최적화 등의 방법을 사용할 수 있다.
위기상황에 대한 식별을 높이고 위기상황에서 거래를 피한다. ATR, DMI 등의 지표로 식별할 수 있다.
피라미드 로직을 최적화하여 추종을 막기 위해. 예를 들어, 트렌드 강도에 따라 역동적으로 상승률을 조정합니다.
다른 시간 주기들의 파라미터 설정을 테스트하여 최적의 주기를 찾습니다.
이 전략은 Faytterro Estimator의 거래 신호를 기반으로 의사결정을 하고, 그 기초에 논리 판단을 추가하고, 다양한 크기의 입문 신호를 설정하여, 피라미드 특성을 가진 트렌드 추적 전략을 형성한다. 이 전략은 직관적으로 이해하기 쉽고, 강한 트렌드 캡처 능력을 가지고 있다. 그러나 지표 오판, 무손실, 파라미터 조정 우수성 등의 문제가 있다. 미래 최적화 방향은 필터링 메커니즘, 무손실 논리, 파라미터 최적화 등을 추가하여 전략의 안정성과 적응성을 향상시키는 것이다.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-08-10 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/
// © faytterro
//@version=5
// strategy("Faytterro Estimator Strategy", overlay=true, pyramiding=100)
src=input(hlc3,title="source")
len=input.int(10,title="faytterro estimator lenght", maxval=500)
len2=100
len3=input.float(500,title="minumum enrty-close gap (different direction)")
len4=input.float(500,title="minumum entry-entry gap (same direction)")
cr(x, y) =>
z = 0.0
weight = 0.0
for i = 0 to y-1
z:=z + x[i]*((y-1)/2+1-math.abs(i-(y-1)/2))
z/(((y+1)/2)*(y+1)/2)
cr= cr(src,2*len-1)
width=input.int(10, title="strong entry size", minval=1)
dizi = array.new_float(500)
// var line=array.new_line()
//if barstate.islast
for i=0 to len*2
array.set(dizi,i,(i*(i-1)*(cr-2*cr[1]+cr[2])/2+i*(cr[1]-cr[2])+cr[2]))
buy = array.get(dizi,len+1+5)>array.get(dizi,len+1+4) and array.get(dizi,len+1+5)<cr[len]
sell = array.get(dizi,len+1+5)<array.get(dizi,len+1+4) and array.get(dizi,len+1+5)>cr[len]
bb=buy? hlc3 : na
ss=sell? hlc3 : na
sbuy= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3*3
ssell= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3*3
buy:= buy and close<(close[ta.barssince(buy or sell)])[1]-len4 and close<ta.highest(fixnan(ss),len2)-len3 //and close>ta.highest(fixnan(ss),len2)-len3*3
sell:= sell and close>(close[ta.barssince(buy or sell)])[1]+len4 and close>ta.lowest(fixnan(bb),len2)+len3 //and close<ta.lowest(fixnan(bb),len2)+len3*3
alertcondition(buy or sell)
if (sbuy)
strategy.entry("strong buy", strategy.long,width)
if (ssell)
strategy.entry("strong sell", strategy.short,width)
if (buy)
strategy.entry("buy", strategy.long)
if (sell)
strategy.entry("sell", strategy.short)