Search
Duplicate
📝

Volatility Expansion 전략

#공통, 전략
[설명]
일상적이지 않은 큰 추세를 가지는 양봉이나 음봉이 발생하면 즉시 진입해서 빠르게 수익을 거두고 빠져나가는 전략입니다. 일상적이지 않은 몸통을 가지는 양봉/음봉은 ATR기준으로 체크합니다.
시가에서 일정폭 상승하면 즉시 매수진입 시가에서 일정폭 하락하면 즉시 매도진입 진입 후 일봉봉수 최저가/최고가 이탈하거나 봉완성시 다음봉 시가가 일정 수익이나 손실이면 청산하게 되고 손절매가 적용됩니다.
Input : ATRPeriod(5),LongFactor(1.2),ShortFactor(1.8),ExitLength(4), Determination(0), MinimumGain(0); // LongFactor : 매수 기준 레벨을 계산할 때 곱해줄 계수 // ShortFactor : 매도 기준 레벨을 계산할 때 곱해줄 계수 // ExitLength : 청산 기준이 되는 최저/최고가를 계산할 기간(바 수) // Determination : 포지션을 얼마나 오래 보유할지 판단하기 위한 최소 보유 바 수 // MinimumGain : Determination 이후에도 이 수익 이상 못 벌면 청산 input : BaseProfitTicks(0), Delay(0), StopLossTicks(0); // BaseProfitTicks : 목표 기본 수익( 틱단위) // Delay : 진입 후 최소 몇 바가 지나야 이익 청산 로직을 사용할지 // StopLossTicks : 손절폭(틱 단위) Variables: BuyLevel(0), SellLevel(0); // 최근 4개 Range의 이동평균에 계수를 곱해 매수/매도 기준 레벨 계산 BuyLevel = ATR(ATRPeriod) * LongFactor; // 매수 기준 레벨 SellLevel = ATR(ATRPeriod) * ShortFactor; // 매도 기준 레벨 // ================== 주문 진입 ================== // 다음 바 시가 + BuyLevel 가격에 스탑 매수 Buy("buy", AtStop, NextBarOpen + BuyLevel); // 다음 바 시가 - SellLevel 가격에 스탑 매도 Sell("sell", AtStop, NextBarOpen - SellLevel); // 롱 포지션 보유 중일 때 if MarketPosition == 1 Then { // 최근 ExitLength 기간 동안의 최저가에 스탑 롱 청산 주문 exitLong("exl", AtStop, Lowest(Low, ExitLength)); // 포지션을 일정 기간 이상 보유했는데, 최소 수익도 못채웠을 경우 강제 청산 If BarsSinceEntry > Determination AND OpenPositionProfit < MinimumGain Then ExitLong("Long Too Long", AtMarket); //딜레이 기간이 지난 뒤, 다음 바 시가가 진입가 + 목표수익틱을 넘으면 청산 If BarsSinceEntry > Delay AND NextBarOpen > EntryPrice + (BaseProfitTicks*PriceScale) Then ExitLong("Long Pofit", atMarket); // 목표 수익 도달 시 롱 청산 } // ================== 시간/수익 조건에 따른 숏 청산 ================== if MarketPosition == -1 Then // 숏 포지션일 때 { // 최근 ExitLength 기간 동안의 최고가에 스탑 숏 청산 주문 ExitShort("exs", AtStop, Highest(High, ExitLength)); // 포지션을 일정 기간 이상 보유했는데, 최소 수익도 못채웠을 경우 강제 청산 If BarsSinceEntry > Determination AND OpenPositionProfit < MinimumGain Then ExitShort("Short Too Long", AtMarket); // 시장가로 숏 청산 // 딜레이 기간이 지난 뒤, 다음 바 시가가 진입가 - 목표수익틱 아래이면 청산 If BarsSinceEntry > Delay AND NextBarOpen < EntryPrice - (BaseProfitTicks*PriceScale) Then ExitShort("Short Pofit", atMarket); // 목표 수익 도달 시 숏 청산 } // ================== 손절 설정 ================== //지정한 틱수의 손실이 발생하면 즉시 청산 SetStopLoss(StopLossTicks * PriceScale, pointstop);
JavaScript
복사