커뮤니티

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일&#46468;만 매수나 매도 진입 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. 코딩 계속 읽고 있는데 초보라 이해가 잘 안됩니다. 주석 같은 것 좀 달아주심 안되나요?