커뮤니티

수식설명 좀 달아줄수 있으시나요?

프로필 이미지
도시군인
2011-02-24 18:17:52
926
글번호 36070
답변완료
안녕하세요? 바쁘실텐데.. 문의 드립니다. 이 로직은 박상우 팀장님께서 STAD클럽 로직을 예스로 변환시켜서 공개해주신 로직인데요. 하나하나 뜯어보면서 알아볼라구 하는데... 넘 막히는 점이 많아서요. 아래처럼 문장하나마다 설명을 좀 달아주실시 있나요? 공부하는데 많은 도움이 될거 같습니다. 부탁드립니다. /* [STAD_02] Advance Decline Divergence 1. 설정 연결선물 5분봉, 당일청산 수수료 0.006%, 슬리피지 0.025pt 2. 전략내용 //역추세 추종형 진입1 가격은 신저가 형성하고 AD지표는 신고가 형성할때 매수 가격은 신고가 형성하고 AD지표는 신저가 형성할때 매도 진입2 가격이 신저가 형성할때 AD지표가 신저가 형성이 없으면 그 시점의 고가와 인덱스를 저장한 후 두봉 이내에 해당 고가를 상향돌파하면 매수 가격이 신고가 형성할때 AD지표가 신고가 형성이 없으면 그 시점의 저가와 인덱스를 저장한 후 두봉 이내에 해당 저가를 하향이탈하면 매도 청산 진입봉 저가(고가)로부터 추적청산 3. 외부변수 Len : Accumulation Distribution 지표의 지수이평을 구하기 위한 기간 값 P : 최저가와 최고가를 구하기 위한 기간 값 Div : 저(고)가 추적청산을 위한 분할 값 Mult : 추적청산을 위한 진입시점의 저가에서 차감하기 위한 AR(averge range)이평의 승수 */ # 외부입력변수 할당 Inputs: Len(5), P(60), DiV(25), mult(5); #내부입력변수 할당 vars: MP(0), stopprice(0), Move(0); If High - Low <> 0 then Move = ema( (C - O) / (H - L) * V, len); # 고가와 저가와 차이가 0이 아니면 즉 봉 값의 변화가 있으면, move란 수치내부변수에= 이동평균 (고가-시가) / (고가-저가) X 이동평균 X 5에 저장한다. If Low < lowest( low, P )[1] and Move > highest( Move, P)[1] then Buy("B2",onclose, def,1); # 만약 저가가 바로전 봉의 P기간중의 저가중의 최저가보다 크면, AD값이 전 봉의 P기간중의 AD값중 가장 높은 값보다 더 높으면 # 종가에 매수한다. # ? ("B2",onclose, def,1)에서 DEF,1이 의미하는 바는 무엇인가요? If High > Highest( High, P )[1] and Move < Lowest( Move, P)[1] then Sell("S2",onclose, def,1); # 만약 고가가 바로전 봉의 P기간중의 고가중의 최고가보다 크면, AD값이 전 봉의 P기간중의 AD값중 가장 낮은 값보다 더 높으면 # 종가에 매도한다. If Low < Lowest( Low , P )[1] and MRO(Move < lowest( Move , P )[1],20,1) == -1 then { var1= h; var2 = index; } # 만약 저가가 P기간중의 최저가보다 작고, # 내부변수 VAR1에 고가를 할당하고 # 내부변수 VAR2에 인덱스에 봉의 번호를 저장한다? 무슨뜻이죠? If High > Highest( High, P )[1] AND MRO(Move > Highest( Move, P)[1],20,1) == -1 then { var3 = L; var2 = index; } if index - var2 < 2 then { if CrossUp(C, var1) and C > dayOpen then buy(); if CrossDown(C, var3) and C < dayOpen then sell(); } mp = marketposition; if MP == 1 and MP[1] <> 1 then Begin StopPrice = low - ma(range,4)*mult; end; StopPrice = High + ma(range,4)*mult; if MP == -1 and MP[1] <> -1 then begin end; If MP == 1 then begin exitlong ("ExitLong", atstop,stopprice ); stopprice = stopprice +( low-stopprice )/Div; end; If MP == -1 then begin exitshort ("Exitshort", atstop,stopprice); stopprice = stopprice - (stopprice-high)/Div; end; setstopendofday(150400); # 당일 15시04분에 종가청산 한다. 당일청산 원칙
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-02-24 18:54:23

안녕하세요 예스스탁입니다. 기본적은 전략의 개념은 첨부하신 수식의 상단에 있습니다. 각 수식아래에 주석을 붙여드립니다. # 외부입력변수 할당 Inputs: Len(5), P(60), DiV(25), mult(5); #내부입력변수 할당 vars: MP(0), stopprice(0), Move(0); If High - Low <> 0 then Move = ema( (C - O) / (H - L) * V, len); # 고가와 저가와 차이가 0이 아니면 즉 봉 값의 변화가 있으면, move란 수치내부변수에= 이동평균 (고가-시가) / (고가-저가) X 이동평균 X 5에 저장한다. If Low < lowest( low, P )[1] and Move > highest( Move, P)[1] then Buy("B2",onclose, def,1); # 만약 저가가 바로전 봉의 P기간중의 저가중의 최저가보다 크면, Move값이 전 봉의 P기간중의 Move값 중 가장 높은 값보다 더 높으면 # 종가에 매수한다. # def는 default의 약어 입니다. 신호가격을 설정하지 않는다는 의미입니다. # 시스템은 onclose,atmarkt,atstop,atlimit 4개의 타입이 있습니다. 그중 onclose와 AtMarket은 신호가격을 입력하는 타입이 아니므로 onclose,def로 작성됩니다. # atstop,atlimit만이 def 대신에 가격조건을 설정하셔야 합니다. buy("b",AtStop,dayopen+1,1); 시초가+1이상의 시세형성시 1계약 매수 # 자세한 내용은 랭귀지 도움말을 참고하시기 바랍니다. If High > Highest( High, P )[1] and Move < Lowest( Move, P)[1] then Sell("S2",onclose, def,1); # 만약 고가가 바로전 봉의 P기간중의 고가중의 최고가보다 크면, Move값이 전 봉의 P기간중의 Move값중 가장 낮은 값보다 더 작으면 # 종가에 매도한다. If Low < Lowest( Low , P )[1] and MRO(Move < lowest( Move , P )[1],20,1) == -1 then { var1= h; var2 = index; } #1 # 만약 저가가 전봉기준 P기간 중의 최저가보다 작고, 20개봉안에 Move값이 최저가를 기록한 적이 없다면 # 내부변수 VAR1에 고가를 할당하고 # 내부변수 VAR2에 인덱스에 봉의 번호를 저장한다 If High > Highest( High, P )[1] AND MRO(Move > Highest( Move, P)[1],20,1) == -1 then { var3 = L; var2 = index; } #2 # 만약 고가가 전봉기준 P기간 중의 최고가보다 크고, 20개봉안에 Move값이 최고가를 기록한 적이 없다면 # 내부변수 VAR1에 고가를 할당하고 # 내부변수 VAR2에 인덱스에 봉의 번호를 저장한다 if index - var2 < 2 then { if CrossUp(C, var1) and C > dayOpen then buy(); if CrossDown(C, var3) and C < dayOpen then sell(); } #현재봉이 #1 혹은 #2 조건만족 시점에서 2개봉이상 경과하지 않고 #종가가 var1값을 상향하고 시초가보다 크면 매수 #종가가 var2값을 하향하고 시초가보다 작으면 매도 mp = marketposition; #mp에 marketposition(포지션의 상태값) 저장 매수 : 1, 매도 : -1, 무포지션 : 0 if MP == 1 and MP[1] <> 1 then Begin StopPrice = low - ma(range,4)*mult; end; #식상 불필요한 내용입니다. # StopPrice에 최근 4개봉의 range의 평균값에 mult값을 곱한값을 저장 stopPrice = High + ma(range,4)*mult; if MP == -1 and MP[1] <> -1 then begin end; # 식상 불필요한 내용입니다. If MP == 1 then begin exitlong ("ExitLong", atstop,stopprice ); stopprice = stopprice +( low-stopprice )/Div; end; #매수포지션이면 #stopprice보다 낮은 시세시 청산 #청산조건에 맞지않으면 stopprice에 (해당봉의 저가와 stopprice의 차이)를 25로 나눈값만큼 추가 #즉 현재봉에 stopprice보나 낮은 시세가 들어오지 않으면 (해당봉의 저가와 stopprice의 차이)를 25로 나눈값만큼을 #추가하여 다음봉의 stopprice로 잡음(즉 진입이후에 봉갯수가 늘어날때마다 청산라인이 조금씩 올라가게 됨) If MP == -1 then begin exitshort ("Exitshort", atstop,stopprice); stopprice = stopprice - (stopprice-high)/Div; end; #매도포지션이면 #stopprice보다 높은 시세시 청산 #청산조건에 맞지않으면 stopprice에 (stopprice와 해당봉의 저가 차이)를 25로 나눈값만큼 차감함. #즉 현재봉에 stopprice보나 높은 시세가 들어오지 않으면 (stopprice와 해당봉의 저가 차이)를 25로 나눈값만큼을 #감하여 다음봉의 stopprice로 잡음(즉 진입이후에 봉갯수가 늘어날때마다 청산라인이 조금씩 내려가게 됨) setstopendofday(150400); # 당일 15시04분에 종가청산 한다. 당일청산 원칙 즐거운 하루되세요 > 도시군인 님이 쓴 글입니다. > 제목 : 수식설명 좀 달아줄수 있으시나요? > 안녕하세요? 바쁘실텐데.. 문의 드립니다. 이 로직은 박상우 팀장님께서 STAD클럽 로직을 예스로 변환시켜서 공개해주신 로직인데요. 하나하나 뜯어보면서 알아볼라구 하는데... 넘 막히는 점이 많아서요. 아래처럼 문장하나마다 설명을 좀 달아주실시 있나요? 공부하는데 많은 도움이 될거 같습니다. 부탁드립니다. /* [STAD_02] Advance Decline Divergence 1. 설정 연결선물 5분봉, 당일청산 수수료 0.006%, 슬리피지 0.025pt 2. 전략내용 //역추세 추종형 진입1 가격은 신저가 형성하고 AD지표는 신고가 형성할때 매수 가격은 신고가 형성하고 AD지표는 신저가 형성할때 매도 진입2 가격이 신저가 형성할때 AD지표가 신저가 형성이 없으면 그 시점의 고가와 인덱스를 저장한 후 두봉 이내에 해당 고가를 상향돌파하면 매수 가격이 신고가 형성할때 AD지표가 신고가 형성이 없으면 그 시점의 저가와 인덱스를 저장한 후 두봉 이내에 해당 저가를 하향이탈하면 매도 청산 진입봉 저가(고가)로부터 추적청산 3. 외부변수 Len : Accumulation Distribution 지표의 지수이평을 구하기 위한 기간 값 P : 최저가와 최고가를 구하기 위한 기간 값 Div : 저(고)가 추적청산을 위한 분할 값 Mult : 추적청산을 위한 진입시점의 저가에서 차감하기 위한 AR(averge range)이평의 승수 */ # 외부입력변수 할당 Inputs: Len(5), P(60), DiV(25), mult(5); #내부입력변수 할당 vars: MP(0), stopprice(0), Move(0); If High - Low <> 0 then Move = ema( (C - O) / (H - L) * V, len); # 고가와 저가와 차이가 0이 아니면 즉 봉 값의 변화가 있으면, move란 수치내부변수에= 이동평균 (고가-시가) / (고가-저가) X 이동평균 X 5에 저장한다. If Low < lowest( low, P )[1] and Move > highest( Move, P)[1] then Buy("B2",onclose, def,1); # 만약 저가가 바로전 봉의 P기간중의 저가중의 최저가보다 크면, AD값이 전 봉의 P기간중의 AD값중 가장 높은 값보다 더 높으면 # 종가에 매수한다. # ? ("B2",onclose, def,1)에서 DEF,1이 의미하는 바는 무엇인가요? If High > Highest( High, P )[1] and Move < Lowest( Move, P)[1] then Sell("S2",onclose, def,1); # 만약 고가가 바로전 봉의 P기간중의 고가중의 최고가보다 크면, AD값이 전 봉의 P기간중의 AD값중 가장 낮은 값보다 더 높으면 # 종가에 매도한다. If Low < Lowest( Low , P )[1] and MRO(Move < lowest( Move , P )[1],20,1) == -1 then { var1= h; var2 = index; } # 만약 저가가 P기간중의 최저가보다 작고, # 내부변수 VAR1에 고가를 할당하고 # 내부변수 VAR2에 인덱스에 봉의 번호를 저장한다? 무슨뜻이죠? If High > Highest( High, P )[1] AND MRO(Move > Highest( Move, P)[1],20,1) == -1 then { var3 = L; var2 = index; } if index - var2 < 2 then { if CrossUp(C, var1) and C > dayOpen then buy(); if CrossDown(C, var3) and C < dayOpen then sell(); } mp = marketposition; if MP == 1 and MP[1] <> 1 then Begin StopPrice = low - ma(range,4)*mult; end; StopPrice = High + ma(range,4)*mult; if MP == -1 and MP[1] <> -1 then begin end; If MP == 1 then begin exitlong ("ExitLong", atstop,stopprice ); stopprice = stopprice +( low-stopprice )/Div; end; If MP == -1 then begin exitshort ("Exitshort", atstop,stopprice); stopprice = stopprice - (stopprice-high)/Div; end; setstopendofday(150400); # 당일 15시04분에 종가청산 한다. 당일청산 원칙