커뮤니티
54784 재질문
2017-09-13 08:01:43
116
글번호 112712
54784 시스템 손절 관련한 재질문입니다.
다른 코딩들은 직관적으로 이해할 수 있거나 바로 쓸 일이 없어서 그냥 넘어 갔는데요. 이건 바로 쓸 지도 몰라서 하나하나 이해를 해야 할 듯 합니다. 그래서 여쭈어 봅니다.
1. 당일수익틱수라는 게 뭔가요? 선물거래를 안해봐서 수익틱이라는 말을 잘 모르겠는데요. n% 상승과 비슷한 개념이라고 이해하면 될까요?
2. 코딩 계속 읽고 있는데 초보라 이해가 잘 안됩니다. 주석 같은 것 좀 달아주심 안되나요?
답변 1
예스스탁 예스스탁 답변
2017-09-13 15:35:46
안녕하세요
예스스탁입니다.
1
틱은 호가가격단위(Tick Size)를 말합니다.
선물은 1틱이 0.05포인트.
일반 주식이면
1000원미만은 1원,
1000~5000원 미만은 5원,
5000~10000미만은 10원과 같이 종목별 호가단위입니다.
당일수익틱수가 100이면
거래하는 종목이 선물이면 당일 5포인트 수익이란 의미이고
거래하는 종목이 주식이고
1000~5000원 사이의 종목이면 당일 500원 수익을 의미합니다.
5000~10000원 사이의 종목이면 당일 1000원 수익을 의미합니다.
2
기존 답변드린 식은 5 포인트, 혹은 1000원과 같이
수익을 지정하는 방법입니다. %가 아닙니다.
답변드린 수식에서 2시 청산은 의미없어 삭제했습니다.
Input : 당일수익틱수(100),당일손실틱수(100);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false);
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
#날짜 변경
if Bdate != Bdate[1] Then{
#특정청산이 발생하면 true로 변경할 변수는 초기값으로 false지정
Xcond = false;
#전일까지의 총손익을 저장
N1 = NetProfit;
}
#현재까지의 당일손익 = 현재전체손익-전일기준총손익
#NetProfit은 청산완료된 거래의 손익만 포함됩니다.
#현재 진입중인 포지션의 손익은 포함되지 않습니다.
daypl = NetProfit-N1;
# dbp,dbl,dsp,dsl(당일수익달성,당일손실달성 청산들의 이름)이라는 이름의 청산이 발생하면
# Xcond는 true로 변경
if TotalTrades > TotalTrades[1] and
(IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
#Xcond가 false일떄만 매수나 매도 진입
if Xcond == false then{
if 매수진입조건 Then{
buy("b");
}
if 매도진입조건 Then{
sell("s");
}
}
#매수진입 중
if MarketPosition == 1 then{
#당일최대수익에 도달하면 청산
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
#당일최대손실에 도달하면 청산
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
#예를 들어 선물거래이고 당일수익틱수가 100틱(5포인트)이고 당일손실틱수가 100틱(5포이트)이면
#현재까지 당일은 3포인트 수익이 발생중이면
#현재포지션은 2포인트 수익 발생하면 청산
#현재포지션은 8포인트 손실 발생하면 청산
#예를 들어 주식거래이고 당일수익틱수가 100틱(1000)이고 당일손실틱수가 100틱(1000)이면
#현재까지 당일은 600원 수익이 발생중이면
#현재포지션은 400원 수익 발생하면 청산
#현재포지션은 1600원 손실 발생하면 청산
}
#매도진입 중
if MarketPosition == -1 then{
#당일최대수익에 도달하면 청산
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
#당일최대손실에 도달하면 청산
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
3
%로 지정하면 수식이 달라지게 됩니다.
아래 내용 참고하시기 바랍니다.
Input : 당일수익율(30),당일손실율(-30);
Var : DayPLR(0);
#날짜 변경
if Bdate != Bdate[1] Then
{
#당일 손익률 누적할 변수는 0으로 초기화
DayPLR = 0;
}
#청산발생하면 손익율 계산해 합산
if TotalTrades > TotalTrades[1] Then
{
#청산된 거래가 매수포지션이면
if MarketPosition(1) == 1 Then
DayPLR = DayPLR + (ExitPrice(1)-EntryPrice(1))/EntryPrice(1)*100;
#청산된 거래가 매도포지션이면
if MarketPosition(1) == -1 Then
DayPLR = DayPLR + (EntryPrice(1)-ExitPrice(1))/EntryPrice(1)*100;
}
# DayPLR이 당일수익율보다 적고 당일손실율보단 클때만 진입
if DayPLR < 당일수익율 and DayPLR > 당일손실율 then{
if 매수진입조건 Then{
buy("b");
}
if 매도진입조건 Then{
sell("s");
}
}
#매수진입 중
if MarketPosition == 1 then{
var1 = 당일수익율-dayPLR;
var2 = 당일손실율+dayPLR;
#당일수익율에 도달하면 청산
ExitLong("dbp",atlimit,EntryPrice*(1+var1/100));
#당일손실율에 도달하면 청산
ExitLong("dbl",AtStop,EntryPrice*(1+var1/100));
}
#매도진입 중
if MarketPosition == -1 then{
var1 = 당일수익율-dayPLR;
var2 = 당일손실율+dayPLR;
#당일수익율에 도달하면 청산
ExitShort("dsp",atlimit,EntryPrice*(1-var1/100));
#당일손실율에 도달하면 청산
ExitShort("dsl",AtStop,EntryPrice*(1-var1/100));
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 54784 재질문
> 54784 시스템 손절 관련한 재질문입니다.
다른 코딩들은 직관적으로 이해할 수 있거나 바로 쓸 일이 없어서 그냥 넘어 갔는데요. 이건 바로 쓸 지도 몰라서 하나하나 이해를 해야 할 듯 합니다. 그래서 여쭈어 봅니다.
1. 당일수익틱수라는 게 뭔가요? 선물거래를 안해봐서 수익틱이라는 말을 잘 모르겠는데요. n% 상승과 비슷한 개념이라고 이해하면 될까요?
2. 코딩 계속 읽고 있는데 초보라 이해가 잘 안됩니다. 주석 같은 것 좀 달아주심 안되나요?