예스스탁
예스스탁 답변
2016-04-18 11:00:39
안녕하세요
예스스탁입니다.
청산과 관련된 함수는 기본값이 1입니다.
아래와 같이 IsExitName의 두번째 매개변수로 1을 지정하셔야 합니다.
if IsExitName("손절",1) == true then BuySetup = false;
if IsExitName("하단이탈",1) == true then BuySetup = true;
if IsExitName("목표수익",1) == true then BuySetup = true;
if IsExitName("상단매도",1) == true then BuySetup = true;
즐거운 하루되세요
> 뽄때 님이 쓴 글입니다.
> 제목 : 수식 확인요청
> 수식확인 부탁드립니다
아래의 식에서 "손절"을 당한 다음에는 다시 진입하고 싶지 않은데
계속 매수 싸인이 들어오네요... 수정부탁드립니다
input : 시작일(20160412), 시간(090000);
input : P(20),dv(2),sto1(25),sto2(6),sto3(6),금액(1100000),shortPeriod(5), longPeriod(60), 손절선(100000), 익절선(1000000);
var : BBup(0),BBdn(0),stok(0),stoD(0),BuySetup(true),ExitSetup1(false);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
BBup = BollBandUp(P,dv);
BBdn = BollBandDown(P,dv);
stok = StochasticsK(sto1,sto2);
Stod = StochasticsD(sto1,sto2,sto3);
if IsExitName("손절") then BuySetup = false;
if IsExitName("하단이탈") then BuySetup = true;
if IsExitName("목표수익") then BuySetup = true;
if IsExitName("상단매도") then BuySetup = true;
# 시가가 밴드하단 보다 높으며, 현재가가 밴드하단+1.5%이하로 내려가면 즉시매수
if BuySetup == true Then{
if NextBarOpen > BBdn and BBdn > value2 and BBup >= BBdn*1.05 and sdate >= 시작일 Then
buy("매수1",Atlimit,Bbdn*1.015,Floor(금액/C));
# 완성봉 기준으로 밴드하단 ~ +1.5% 사이에 있으면 매수
if C >= BBdn and C <= BBdn*1.015 and BBdn > value2 and BBup >= BBdn*1.06 Then
buy("매수2",OnClose,def,Floor(금액/C));
# 시가가 밴드 밑에 있다가 밴드를 뚫고 밴드+1.5%까지 상승하면 바로 매수
if NextBarOpen <= BBdn and BBdn > value2 and BBup >= BBdn*1.06 Then
buy("매수3",atstop,Bbdn*1.015,Floor(금액/C));
}
if MarketPosition == 1 Then{
ExitLong("상단매도",atlimit,BBup);
ExitLong("목표수익",atlimit,EntryPrice*1.20);
# ExitLong("TR-Stop",AtStop,highest(H,BarsSinceEntry)*0.90);
if CrossDown(C,BBdn) Then ExitLong("하단이탈");
}
# 손절선 이탈시 매도
if CrossDown(C,손절선) Then{
ExitLong("손절");
}
# 순간적으로 전고점 도달시 익절
ExitLong("익절",atlimit,익절선);
SetStopLoss(10,PercentStop);