この戦略は,複数のタイムフレームの移動平均指標を組み合わせて,トレンドの一貫性を決定し,トレンドをフォローし利益を得るために日中にスカルピング行動をします.
この戦略は,取引シグナルを生成するために,5分,15分,30分,60分タイムフレームで8期および20期移動平均を使用する. 8期MAが20期MAを超えると購入シグナルが生成される. 8期MAが20期MAを下回ると販売シグナルが生成される.
この戦略は,取引命令を発行する前に4つのタイムフレームに一貫したシグナルを必要とする. 移動平均が4つのタイムフレームに一致するときにのみ購入または販売オーダーが表示されます.
ポジションに入ると 戦略は定額利益目標を設定し 日中利益を得ます
具体的には,この戦略は,異なるタイムフレームからMA値を取得するために,セキュリティ (Security) 関数を使用します. 5分,15分,30分,60分チャート上の8期と20期MAの違いを計算します.
買い・売るシグナルは,差線がゼロ線以上/下を横切るかによって決定される.各タイムフレームでシグナルを記録するために複数の islongと isshortフラグが使用される. islongと isshort条件が満たされたときに注文が表示されます.
戦略は,取引を完了した後,strategy.exit() スカルピングの固定利益目標を設定する
この戦略の利点は以下の通りです.
複数のタイムフレームの設計は 騒音をフィルターし 取引頻度を減らす
利益の最適化による 日中のスカルピングは 安定した小利益を蓄積します
簡単なコード構造で 分かりやすく最適化できます
合理的な条件はリスクを制御するのに役立ちます
この戦略による潜在的なリスク:
複数のタイムフレームは微妙なトレンド変化を見逃す可能性があります
スカルピングの頻度はコストを増加させる.
固定利益目標には柔軟性がない.
指示値次第で 騙される危険性があります
可能な最適化:
より強力な信号のために より多くの時間枠を追加します.
動的利益目標 ATRをベースに
音量増加や歴史の極端など
最適なパラメータのために MA 期間を最適化する.
信号の信頼性を判断する機械学習を追加します
整体的には,これはイントラデイ・スカルピングを使用した典型的なマルチタイムフレームトレンド追跡戦略です.論理は明確で,コードはよく構造化されています.適切な最適化により,非常に実践的なスカルピング戦略テンプレートになることができます.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="PeBAS $JPY Scalper 15m ",overlay=true) zeigeallebars= input(false, title="Zeige alle (Show all) Candles/Bars?") profitwert=input(52, title="Profit") myatr= input(title="ATR", type=float, defval=0.00002, minval=0.00001,step=0.00001) //Plot EMA-Differenz Aktueller Timeframe dif=(ema(close,8)+ema(close,20))/2 mcolor=ema(close,8) > ema(close,20) ? green : red bs = ema(close,8) > ema(close,20) ? true : false ThisATR=atr(16) //trans = zeigeallebars == true ? 00 : 100 //plot(dif,"dif",color=mcolor,linewidth=6,transp=trans) //1M EMA htf_ma1Mema8 = ema(close, 5) htf_ma1Mema20 = ema(close, 20) ema81m=request.security(syminfo.tickerid, "1", htf_ma1Mema8) ema201m=request.security(syminfo.tickerid, "1", htf_ma1Mema20) dif1M = (ema81m + ema201m) / 2 Close1M = request.security(syminfo.tickerid, "1", close) color1=ema81m > ema201m ? green : red //plot(dif1M,"dif",color1,linewidth=6) //plotshape(1, style=shape.cross, color=color1,location=location.top) ls1 = ema81m > ema201m ? 1 : 0 //5M EMA htf_ma5Mema8 = ema(close, 8) htf_ma5Mema20 = ema(close, 20) ema85m=request.security(syminfo.tickerid, "5", htf_ma5Mema8) ema205m=request.security(syminfo.tickerid, "5", htf_ma5Mema20) dif5M = (ema85m + ema205m) / 2 color5=ema85m > ema205m ? green : red plot(dif5M,"dif",color5,linewidth=5) ls5 = ema85m > ema205m ? 1 : 0 alert1= ema85m > ema205m and ema85m[1] < ema205m[1] ? 1 : 0 islong5 = ema85m > ema205m ? 1 : 0 isshort5 = ema85m < ema205m ? 1 : 0 //15M EMA htf_ma15Mema8 = ema(close, 8) htf_ma15Mema20 = ema(close, 20) ema815m=request.security(syminfo.tickerid, "15", htf_ma15Mema8) ema2015m=request.security(syminfo.tickerid, "15", htf_ma15Mema20) dif15M = (ema815m + ema2015m) / 2 color15=ema815m > ema2015m ? green : red plot(dif15M,"dif",color15,linewidth=3) ls15= ema815m > ema2015m ? 1 : 0 alert2= ema815m > ema2015m and ema815m[1] < ema2015m[1] ? 1 : 0 islong15 = ema815m > ema2015m ? 1 : 0 isshort15 = ema815m < ema2015m ? 1 : 0 //30M EMA htf_ma30Mema8 = ema(close, 8) htf_ma30Mema20 = ema(close, 20) ema830m=request.security(syminfo.tickerid, "30", htf_ma30Mema8) ema2030m=request.security(syminfo.tickerid, "30", htf_ma30Mema20) dif30M = (ema830m + ema2030m) / 2 color30=ema830m > ema2030m ? green : red ls30= ema830m > ema2030m ?1 : 0 islong30 = ema830m > ema2030m ? 1 : 0 isshort30 = ema830m < ema2030m ? 1 : 0 //60M EMA htf_ma60Mema8 = ema(close, 8) htf_ma60Mema20 = ema(close, 20) ema860m=request.security(syminfo.tickerid, "60", htf_ma60Mema8) ema2060m=request.security(syminfo.tickerid, "60", htf_ma60Mema20) dif60M = (ema860m + ema2060m) / 2 color60=ema860m > ema2060m ? green : red ls60= ema860m > ema2060m ?1 : 0 islong60 = ema860m > ema2060m ? 1 : 0 isshort60 = ema860m < ema2060m ? 1 : 0 plot(dif60M,"dif",color60,linewidth=3,transp=70) islong = islong5 ==1 and islong15 ==1 and islong60 ==1 and year > 2017 ? 1 : 0 isshort = isshort5 ==1 and isshort15 ==1 and isshort60 ==1 and year > 2017 ? 1 : 0 condition2l= 0 condition2s = 0 c= alert1 == alert2 and alert1[1] != alert2[1] ? 1 : 0 alertcondition(c, title='Da tat sich was ', message='Da tat sich was!') strategy.entry("enter long", strategy.long,1,when = islong ==1 and islong[1] == 0 ) strategy.entry("enter short", strategy.short,1,when = isshort == 1 and isshort [1] == 0) strategy.exit("close",profit=profitwert) strategy.exit("close",profit=profitwert)