Search
Duplicate
📝

신호타입 AtStop, AtLimt 의 이해

#공통, 전략
Atstop, Atlimit의 이해
Atstop과 Atlimit은 가격조건이 만족되면 즉시 신호를 발생하게 하는 신호타입입니다. 가격조건은 감시가격과 현재가와의 비교이고 봉이 완성되면 감시가격을 셋팅하고 다음봉 현재가와 비교하게 됩니다. 즉시신호 발생이라는 설명 때문에 봉미완성시에 if 조건이 만족하면 즉시 신호를 발생시킨다고 오해하는 경우가 많습니다. if문은 봉완성시(다음봉시가수신)가 기준이고 미완성시 if 조건이 만족해도 신호를 발생시킬 수 없습니다 Atstop과 Atlimit은 봉이 완성되면 지정한 감시가격이 셋팅되고 다음봉에서 지정한 감시가격과 현재가를 비교해서 그 이상이거나 이하일 때 즉시 신호를 발생하게 합니다. 감시가격이 셋팅되면 현재가하고만 비교를 하므로 감시가격은 현재가와 비교가 가능한 값으로만 셋팅이 되어야 합니다. 예를 들어 감시가격이 스토케스틱값이거나 ADX값과 같이 종목의 가격대와 다른 지표값이면 비교가 의미가 없게 됩니다.
AtStop (위험 회피형 신호타입)
진입함수
진입방향 쪽으로 가격이 움직이는 것을 확인할 때 사용합니다.
매수진입함수(Buy)에 사용하면 봉완성시 감시가격 셋팅하고 다음봉 현재가가 감시가격 이상이면 즉시 신호가 발생합니다
매도진입함수(Sell)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이하이면 즉시 신호가 발생합니다
예 시가에서 20틱 상승시 매수진입 매수진입 후 진입가에서 20틱 상승시 추가매수진입(불타기) 시가에서 20틱 하락시 매도진입 매도진입 후 진입가에서 20틱 하락시 추가매도진입(불타기)
청산함수
진입과 반대방향 쪽으로 가격이 움직이는 것을 확인
매수청산함수(Exitlong)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이하이면 즉시 신호가 발생합니다
매도청산함수(Exitlong)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이상이면 즉시 신호가 발생합니다
즉 청산함수에서 Atstop은 손절이나 수익감소시 청산할 때 사용됩니다.
예 매수진입 후 진입가에서 20틱 하락하면 청산 매수진입 후 최고가에서 20틱 하락하면 청산 매도진입 후 진입가에서 20틱 상승하면 청산 매도진입 후 최저가에서 20틱 상승하면 청산
AtLimit(수익 추구형 신호타입)
진입함수 진입방향과 반대방향 쪽으로 가격이 움직일 때 진입 발생
매수진입함수(Buy)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이하이면 즉시 신호가 발생합니다
매도진입함수(Sell)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이상이면 즉시 신호가 발생합니다
예 시가에서 20틱 하락시 매수진입 매수진입 후 진입가에서 20틱 하락시 추 가매수진입(물타기) 시가에서 20틱 상승시 매도진입 매도진입 후 진입가에서 20틱 상승시 추가 매도진입(물타기)
청산함수 : 진입방향과 동일방향 쪽으로 가격이 움직일 때 청산발생
매수청산함수(Exitlong)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이상이면 즉시 신호가 발생합니다
매도청산함수(Exitlong)에 사용하면 봉완성시 감시가격을 셋팅하고 다음봉 현재가가 감시가격 이하이면 즉시 신호가 발생합니다
즉 청산함수에서 AtLimit은 익절이나 손실감소시 청산할 때 사용됩니다.
예 매수진입 후 진입가에서 20틱 상승하면 청산 매수진입 후 최저가에서 20틱 상승하면 청산 매도진입 후 진입가에서 20틱 하락하면 청산 매도진입 후 최고가에서 20틱 하락하면 청산
아래는 AtStop과 AtlLmit 사용 예제입니다. 전략 구현 시 신호함수(Buy,Sell, ExitLong, ExitShort) 별로 감시하고자 하는 방향(상승/하락)에 따라 AtStop과 AtlLmit을 구분해서 사용해야 하므로 참고하시기 바랍니다.
매수진입
무포지션에서 가격이 상승해 시가+20틱에 도달하면 즉시 매수진입
매수포지션 청산
가격이 상승해 40틱 수익이 발생하면 즉시 청산(AtLimit)
가격이 상승해 20틱 이상 수익이 발생했지만 이후 가격이 하락해 진입가+10틱까지 하락하면 즉시 청산(AtStop)
가격이 하락해 40틱 손실이 발생하면 즉시 청산(AtStop)
매도진입
무포지션에서 가격이 하락해 시가-20틱에 도달하면 즉시 매도진입
매수포지션 청산
가격이 하락해 40틱 수익이 발생하면 즉시 청산(AtLimit)
가격이 하락해 20틱 이상 수익이 발생했지만 이후 가격이 상승해 진입가-10틱까지 상승하면 즉시 청산(AtStop)
가격이 상승해 40틱 손실이 발생하면 즉시 청산(AtStop)
당일청산 15시 30분
var : BuyEntryPrice(0),SellEntryPrice(0); var : LossCut(0),TargetProfit(0),TargetMinProfit(0),ProfitProtection(0); BuyEntryPrice = DayOpen+PriceScale*20; SellEntryPrice = DayOpen-PriceScale*20; //매수진입 //봉완성시 무포지션이고 //고가가 BuyEntryPrice 아래에 있고(아래에서 상승해 터치할때 진입하기 위함) //오늘 마지막봉이 아니면(마지막봉에 오늘값으로 셋팅해서 다음날 시세와 비교해서 신호를 발생하지 않게 하기 위함) //BuyEntryPrice를 셋팅하고 다음봉에서 BuyEntryPrice 이상의 현재가가 발생하면 즉시 매수 if MarketPosition == 0 and H < BuyEntryPrice and NextBarBdate == Bdate Then Buy("매수",AtStop,BuyEntryPrice); if MarketPosition == 1 then { //익절가 TargetProfit = EntryPrice+PriceScale*40; //손절가 LossCut = EntryPrice-PriceScale*40; //Trailing Stop //달성할 최소한의 수익가격 TargetMinProfit = EntryPrice+PriceScale*20; //이익보호가격 ProfitProtection = EntryPrice+PriceScale*10; //봉완성시 TargetProfit을 셋팅하고 다음봉에서 TargetProfit값 이상의 현재가가 발생하면 즉시 매수포지션 청산 ExitLong("매수익절",AtLimit,TargetProfit); //봉완성시 LossCut을 셋팅하고 다음봉에서 LossCut 이하의 현재가가 발생하면 즉시 매도포지션 청산 ExitLong("매수손절",AtStop,LossCut); //봉완성시 진입이후 최고가가 TargetMinProfit 이상이면(진입후 지정한 최소한 수익이 발생했었음을 의미) //ProfitProtection을 셋팅하고 다음봉에서 ProfitProtection 이하의 현재가가 발생하면 즉시 매수포지션 청산 if highest(H,BarsSinceEntry) >= TargetMinProfit Then ExitLong("매수트레일링스탑",AtStop,ProfitProtection); } //매도진입 //봉완성시 무포지션이고 //저가가 SellEntryPrice 위에 있고(위에서 하락해 터치할때 진입하기 위함) //오늘 마지막봉이 아니면(마지막봉에 오늘값으로 셋팅해서 다음날 시세와 비교해서 신호를 발생하지 않게 하기 위함) //SellEntryPrice를 셋팅하고 다음봉에서 SellEntryPrice이하의 현재가가 발생하면 즉시 매수 if MarketPosition == 0 and L > SellEntryPrice and NextBarBdate == Bdate Then Sell("매도",AtStop,SellEntryPrice); if MarketPosition == -1 then { //익절가 TargetProfit = EntryPrice-PriceScale*40; //손절가 LossCut = EntryPrice+PriceScale*40; //Trailing Stop //달성할 최소한의 수익가격 TargetMinProfit = EntryPrice-PriceScale*20; //이익보호가격 ProfitProtection = EntryPrice-PriceScale*10; //봉완성시 TargetProfit을 셋팅하고 다음봉에서 TargetProfit값 이하의 현재가가 발생하면 즉시 매도포지션 청산 ExitShort("매도익절",AtLimit,TargetProfit); //봉완성시 LossCut을 셋팅하고 다음봉에서 LossCut 이상의 현재가가 발생하면 즉시 매도포지션 청산 ExitShort("매도손절",AtStop,LossCut); //봉완성시 진입이후 최저가가 TargetMinProfit이하이면(진입후 지정한 최소한 수익이 발생했었음을 의미) //ProfitProtection을 셋팅하고 다음봉에서 ProfitProtection 이상의 현재가가 발생하면 즉시 매도포지션 청산 if Lowest(L,BarsSinceEntry) <= TargetMinProfit Then ExitShort("매도트레일링스탑",AtStop,ProfitProtection); } //진입을 반대로 한다면 아래와 같이 변경하면 됩니다. //무포지션에서 가격이 하락해 시가-20틱에 도달하면 즉시 매수진입 //무포지션에서 가격이 상승해 시가+20틱에 도달하면 즉시 매수진입 //if MarketPosition == 0 and L > DayOpen-PriceScale*20 Then // Buy("매수",Atlimit,DayOpen-PriceScale*20); //if MarketPosition == 0 and H < DayOpen+PriceScale*20 Then // Sell("매도",AtLimit,DayOpen+PriceScale*20);
JavaScript
복사
AtStop과 AtlLmit 사용시 주의사항
AtStop과 Atlimit은 봉완성시 셋팅되면 다음봉 한봉만 감시를 합니다. 다음봉에서 가격조건에 해당되지 않으면 셋팅은 취소됩니다.
var : ma1(0),ma2(0); ma1 = ma(C,5); ma2 = ma(c,20); if CrossUp(ma1,ma2) Then Buy("b",AtStop,H+PriceScale*5);
JavaScript
복사
위와 같이 작성하면 봉완성시 이평 골드가 발생하면 골드봉의 고가+5틱을 셋팅하고 그 다음봉에서만 감시가격 이상의 현재가가 발생하는지 감시합니다. 다음봉에서 감시가격 이상의 현재가가 발생하지 않으면 셋팅은 취소됩니다.
그러므로 골드구간 전체에서 골드봉의 고가+5틱에 도달하면 즉시 매수하게 작성하려면 아래와 같이 작성을 해야 합니다.
var : ma1(0),ma2(0),Target(0); ma1 = ma(C,5); ma2 = ma(c,20); //골드시 골드봉고가+5틱값 저장 if CrossUp(ma1,ma2) Then Target = H+PriceScale*5; //매봉 봉왕성시 골드구간이고 고가가 Target값 아래이면 Target을 셋팅하고 //다음봉에서 Target이상의 현재가가 발생하면 매수 if ma1 > ma2 and H < Target Then Buy("b",AtStop,H+PriceScale*5);
JavaScript
복사
AtStop과 Atlimit은 봉완성시 셋팅되면 다음봉의 현재가와 비교합니다. 그러므로 오늘 마지막봉에서 봉완성시 AtStop이나 AtLimie 감시가격이 셋팅이 되면 오늘셋팅된 감시가격과 다음봉인 내일 첫봉의 현재가와 비교가 됩니다.
그러므로 당일마지막봉에 셋팅이 되지 않게 NextBarBdate == Bdate과 같은 조건을 if문에 추가해 주여야 합니다. Bdate은 완성봉의 영업일이고 NextBarBdate는 봉완성시 다음봉시가의 영업일입니다. NextBarBdate와 Bdate가 같다라는 의미는 현재완성봉이 당일 마지막봉이 아님을 의미합니다.