#공통, 전략
[설명]
일상적이지 않은 큰 추세를 가지는 양봉이나 음봉이 발생하면 즉시 진입해서
빠르게 수익을 거두고 빠져나가는 전략입니다.
일상적이지 않은 몸통을 가지는 양봉/음봉은 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
복사
