この戦略は,Faytterro Estimatorの取引信号に基づいて取引を行う戦略である.Faytterro Estimatorは,価格の収束散離率を計算してトレンドを判断する指標である.この戦略は,Faytterro Estimatorの取引信号といくつかの追加条件を組み合わせて,理想的なポイントで異なるサイズの買取と販売の信号を発信する.
この戦略の核心はFaytterro Estimatorである.その計算方法は,まず価格の収束分散率CRを計算し,次に,異なる係数を設定してCRの曲線特性を反映できる二次関数を構築することである.二次関数曲線の曲がり点を観察し,価格傾向の変化を判断することである.
具体的には,戦略は,まず価格の収束散離率CRを計算し,2の長さで構築する.*lenの数列dizi,次々に二次関数値を記入する。その二次関数の係数はCRの値を反映する。その後,len+1+5とlen+1+4の2つの値を観察することによって,二次関数にカーブポイントが発生するかどうかを判断し,カーブポイントが発生した場合に買取または販売信号を発する。
この基礎に,戦略は,価格突破の最小の間隔を設定し,頻繁に取引を避けるように;異なるサイズの入場シグナルを設定するなど,いくつかの追加の条件を設定しています. これらの条件は,いくつかの望ましくない取引ポイントをフィルターするためにあります.
この戦略の利点は以下の通りです.
価格変動に敏感で,早期にトレンドの変化を捉えるFaytterro Estimatorの指数を使用してトレンドを判断します.
二次関数を構築してCR曲線特性を反映し,ターニングポイント信号を探し,判断方法が直感的に有効である.
異なるサイズの入場シグナルを設定し,理想のポイントポイントでピラミッド取引を行うことができ,利益の余地を増やす.
最小間隔の設定を追加し,信号を効果的にフィルターし,頻繁に無効取引を避ける.
調整可能なパラメータが多く,異なる品種に最適化され,適応性が強い.
戦略は明確で分かりやすい. コードは読みやすい. 学習しやすい.
この戦略にはいくつかのリスクがあります.
Faytterro Estimatorは曲線フィッティングにリスクがあり,一部の品種では効果が悪くなる可能性があります.
二次関数の曲点のみを頼りに判断する信号は,過度に粗放され,誤判につながるかもしれない.
取引のピラミッドが頻繁に発生すると,手数料の負担が増加します.
調整できるパラメータが多すぎると調整が難しくなります。
価格の変動の際に誤った判断を効果的に処理できないこと
損失を拡大する可能性がある.
リスクに対応する解決策は以下の通りです.
品種ごとに最適化パラメータを設定し,健壮性を向上させる.
ターンポイントだけで誤判を避けるために,他の指標のフィルターを追加します.
合理的なストップ・ロスを設定し,単一損失を制御する.
大量のデータでパラメータを自動的に調整する.
震源を認識するメカニズムを導入し,震源を回避する.
合理的なストップダストロジックを設定する.
この戦略の最適化方向は以下の通りです.
ストップロジックを追加し,単一損失を制御する. 移動ストップまたは時間ストップを設定できます.
他の指標の組み合わせを加え,Faytterro Estimatorの単一の指標判断で誤判するリスクを回避する.例えばMACD,KDJなどの指標を組み合わせてフィルタリングする.
確認メカニズムを追加し,短期的な価格回調によりストップロスの出場を避ける。二次入場確認を考慮することができる。
Adjustable parametersを最適化し,異なる品種に対して合理的なパラメータを設定する.遺伝的アルゴリズム,ベイズ最適化などの方法を使用できる.
震動時の取引を避けるため,震動時の取引の認識を高めます.ATR,DMIなどの指標で識別できます.
ピラミッドロジックを最適化して,追いつくのを防ぐ.例えば,トレンドの強さに応じて動的に上昇幅を調整する.
異なる時間周期のパラメータ設定をテストし,最適な周期を探します.
この戦略は,ファイテルロ・エスティメーターの取引信号に基づいて意思決定を行い,その基礎に論理判断を加え,異なるサイズの入場信号を設定し,ピラミッド特性のトレンド追跡戦略を形成する. この戦略は,直感的に理解しやすく,強力なトレンドキャプチャ能力を持っている. しかし,指標誤判,無止損,パラメータ調整の優遇などの問題もあります. 将来の最適化の方向は,戦略の安定性と適応性を高めるために,フィルタリング機構,止損論理,パラメータ最適化などの追加を含みます.
/*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)