커뮤니티

함수변경요청(SK증권)

프로필 이미지
통큰베팅
2015-10-22 01:37:53
138
글번호 91571
답변완료
안녕하세요? 아래는 SK증권에서 사용했던 함수입니다. YT에서 사용할 수 있도록 함수 변경 요청드립니다. Params : TimeEnd( 144000 ), FastLeng( 5 ), MidLeng( 13 ), SlowLeng( 34 ), Brick( 0.06 ), BarSize( 0.8 ), BarLow( 0.4 ), BarHigh( 0.4 ), ProfitVal( 1.25 ), Plok( 0.6 ), Danger( 12 ); Var : cnt( 0 ), RangeValue( 0 ); // 총손익과 현재포지션의 손익을 저장함. V8 = 1; V9 = Danger; V10 = NetProfit + OpenPositionProfit; while V10 >= V9 Begin V8 = V8 + 1; V9 = V9 + (V8 * C * Danger * 0.01); If V8 > 50 then V9 = V10 + 1; End; V11 = V8; V1 = WMA(L, MidLeng); // 저가 이용한 중기 가중이동평균 V2 = WMA(H, MidLeng); // 고가 이용한 중기 가중이동평균 V3 = WMA(C, SlowLeng); // 종가 이용한 장기 가중이동평균 V4 = WMA(C, FastLeng); // 종가 이용한 단기 가중이동평균 If CB = 1 Then Begin v0 = 0; For Cnt = 0 to 20 - 1 step 1 Begin v0 = v0 + H[Cnt] - L[Cnt] ; End; End Else v0 = v0[1] - (H[20] - L[20]) + (H - L); RangeValue = v0/20; Value1 = Rangevalue * Brick; Value2 = Rangevalue * BarSize; Value3 = Value2 * BarLow; Value4 = Value2 * BarHigh; // 전봉 고가 - 저가한 값이 BarSize 보다 작으면 V5 = 1 If H[1] - L[1] <= Value2 Then V5 = 1 Else V5 = 999999; If AbsValue(L[1] - V3[1]) <= Value3 Then V12 = 1 Else V12 = 999999; If AbsValue(H[1] - V3[1]) <= Value4 Then V13 = 1 Else V13 = 999999; /*---------------- BRICK GAP FILTER -------------------------*/ // 5봉 최저가가 장기이평 위에 있으면 Byflag = 1(매수조건 완성) If (V3 - Lowest(L, 5)) <= Value1 Then V14 = 1 Else V14 = 999999; // 5봉 최고가가 장기이평 아래에 있으면 slflag = 1(매도조건 완성) If (Highest(H, 5) - V3) <= Value1 Then V15 = 1 Else V15 = 999999; If C > V3 // 종가가 장기이평 위에 있고 And V4[1] < V4[2] // 전봉의 단기 이평이 하락중 있었고 And V4[1] < V2[1] // 전봉의 단기 이평이 고가를 이용한 중기 이평보다 아래에 있었고 And V4 > V4[1] // 최근봉의 단기 이평이 상승중이고 And V14 = 1 // 단기 이평의 매수조건 완성 And V5 = 1 // 전봉의 봉사이즈가 작아야 함. And V12 = 1 // 전봉의 저가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 > V3 // 현재봉 기준의 단기이평이 장기이평 위에 있어야 함. And TimeEnd > time Then Buy("Le1", AtMarket, def, V11); // 다음봉 시가로 매수 If Close < V3 // 종가가 장기이평 아래에 있 And V4[1] > V4[2] // 전봉의 단기 이평이 상승중 있었고 And V4[1] > V1[1] // 전봉의 단기 이평이 저가를 이용한 중기 이평보다 위에 있었고 And V4 < V4[1] // 최근봉의 단기 이평이 하락중이고 And V13 = 1 // 전봉의 고가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 < V3 // 현재봉 기준의 단기이평이 장기이평 아래에 있어야 함. Then Sell("Se1", AtMarket, def, V11); // 다음봉 시가로 매도 Cond1 = SignalPosition = 1 And ((V4[1] > V3[1] And CrossUp(V4, V3))); If Cond1 Then ExitLong("LX1", AtMarket); // 매수 청산 Cond2 = SignalPosition = -1 And ((V4[1] < V3[1] And CrossDown(V4, V3))); if Cond2 Then ExitShort("SX1", AtMarket); // 매도 청산 /* * 수익보존 청산 * - 포지션이 일정 포인트 이상 수익이 발생하는 상태에서 * - 손익이 줄어서 Plok 만큼 줄어들면 청산 하는 로직 */ Cond3 = SignalPosition = 1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond3 Then ExitLong("LX2", AtStop, EntryPrice + (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매수청산 Cond4 = SignalPosition = -1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond4 Then ExitShort("SX2", AtStop, EntryPrice - (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매도청산
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-10-23 11:03:17

안녕하세요 예스스탁입니다. input : TimeEnd( 144000 ), FastLeng( 5 ), MidLeng( 13 ), SlowLeng( 34 ), Brick( 0.06 ), BarSize( 0.8 ), BarLow( 0.4 ), BarHigh( 0.4 ), ProfitVal( 1.25 ), Plok( 0.6 ), Danger( 12 ); Var : cnt(0),RangeValue(0); var : V0(0),V1(0),V2(0),V3(0),V4(0),v5(0); var : V8(0),V9(0),V10(0),V11(0),V12(0),v13(0),v14(0),V15(0),CB(0); var : Cond1(false),cond2(false),cond3(false),cond4(false); // 총손익과 현재포지션의 손익을 저장함. V8 = 1; V9 = Danger; V10 = NetProfit + OpenPositionProfit; while V10 >= V9 Begin V8 = V8 + 1; V9 = V9 + (V8 * C * Danger * 0.01); If V8 > 50 then V9 = V10 + 1; End; V11 = V8; V1 = WMA(L, MidLeng); // 저가 이용한 중기 가중이동평균 V2 = WMA(H, MidLeng); // 고가 이용한 중기 가중이동평균 V3 = WMA(C, SlowLeng); // 종가 이용한 장기 가중이동평균 V4 = WMA(C, FastLeng); // 종가 이용한 단기 가중이동평균 If CB = 1 Then Begin v0 = 0; For Cnt = 0 to 20 - 1 step 1 Begin v0 = v0 + H[Cnt] - L[Cnt] ; End; End Else v0 = v0[1] - (H[20] - L[20]) + (H - L); RangeValue = v0/20; Value1 = Rangevalue * Brick; Value2 = Rangevalue * BarSize; Value3 = Value2 * BarLow; Value4 = Value2 * BarHigh; // 전봉 고가 - 저가한 값이 BarSize 보다 작으면 V5 = 1 If H[1] - L[1] <= Value2 Then V5 = 1; Else V5 = 999999; If AbsValue(L[1] - V3[1]) <= Value3 Then V12 = 1; Else V12 = 999999; If AbsValue(H[1] - V3[1]) <= Value4 Then V13 = 1; Else V13 = 999999; /*---------------- BRICK GAP FILTER -------------------------*/ // 5봉 최저가가 장기이평 위에 있으면 Byflag = 1(매수조건 완성) If (V3 - Lowest(L, 5)) <= Value1 Then V14 = 1; Else V14 = 999999; // 5봉 최고가가 장기이평 아래에 있으면 slflag = 1(매도조건 완성) If (Highest(H, 5) - V3) <= Value1 Then V15 = 1; Else V15 = 999999; If C > V3 // 종가가 장기이평 위에 있고 And V4[1] < V4[2] // 전봉의 단기 이평이 하락중 있었고 And V4[1] < V2[1] // 전봉의 단기 이평이 고가를 이용한 중기 이평보다 아래에 있었고 And V4 > V4[1] // 최근봉의 단기 이평이 상승중이고 And V14 == 1 // 단기 이평의 매수조건 완성 And V5 == 1 // 전봉의 봉사이즈가 작아야 함. And V12 == 1 // 전봉의 저가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 > V3 // 현재봉 기준의 단기이평이 장기이평 위에 있어야 함. And TimeEnd > time Then Buy("Le1", AtMarket, def, V11); // 다음봉 시가로 매수 If Close < V3 // 종가가 장기이평 아래에 있 And V4[1] > V4[2] // 전봉의 단기 이평이 상승중 있었고 And V4[1] > V1[1] // 전봉의 단기 이평이 저가를 이용한 중기 이평보다 위에 있었고 And V4 < V4[1] // 최근봉의 단기 이평이 하락중이고 And V13 == 1 // 전봉의 고가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 < V3 // 현재봉 기준의 단기이평이 장기이평 아래에 있어야 함. Then Sell("Se1", AtMarket, def, V11); // 다음봉 시가로 매도 Cond1 = MarketPosition == 1 And ((V4[1] > V3[1] And CrossUp(V4, V3))); If Cond1 Then ExitLong("LX1", AtMarket); // 매수 청산 Cond2 = MarketPosition == -1 And ((V4[1] < V3[1] And CrossDown(V4, V3))); if Cond2 Then ExitShort("SX1", AtMarket); // 매도 청산 /* * 수익보존 청산 * - 포지션이 일정 포인트 이상 수익이 발생하는 상태에서 * - 손익이 줄어서 Plok 만큼 줄어들면 청산 하는 로직 */ Cond3 = MarketPosition == 1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond3 Then ExitLong("LX2", AtStop, EntryPrice + (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매수청산 Cond4 = MarketPosition == -1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond4 Then ExitShort("SX2", AtStop, EntryPrice - (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매도청산 즐거운 하루되세요 > 통큰베팅 님이 쓴 글입니다. > 제목 : 함수변경요청(SK증권) > 안녕하세요? 아래는 SK증권에서 사용했던 함수입니다. YT에서 사용할 수 있도록 함수 변경 요청드립니다. Params : TimeEnd( 144000 ), FastLeng( 5 ), MidLeng( 13 ), SlowLeng( 34 ), Brick( 0.06 ), BarSize( 0.8 ), BarLow( 0.4 ), BarHigh( 0.4 ), ProfitVal( 1.25 ), Plok( 0.6 ), Danger( 12 ); Var : cnt( 0 ), RangeValue( 0 ); // 총손익과 현재포지션의 손익을 저장함. V8 = 1; V9 = Danger; V10 = NetProfit + OpenPositionProfit; while V10 >= V9 Begin V8 = V8 + 1; V9 = V9 + (V8 * C * Danger * 0.01); If V8 > 50 then V9 = V10 + 1; End; V11 = V8; V1 = WMA(L, MidLeng); // 저가 이용한 중기 가중이동평균 V2 = WMA(H, MidLeng); // 고가 이용한 중기 가중이동평균 V3 = WMA(C, SlowLeng); // 종가 이용한 장기 가중이동평균 V4 = WMA(C, FastLeng); // 종가 이용한 단기 가중이동평균 If CB = 1 Then Begin v0 = 0; For Cnt = 0 to 20 - 1 step 1 Begin v0 = v0 + H[Cnt] - L[Cnt] ; End; End Else v0 = v0[1] - (H[20] - L[20]) + (H - L); RangeValue = v0/20; Value1 = Rangevalue * Brick; Value2 = Rangevalue * BarSize; Value3 = Value2 * BarLow; Value4 = Value2 * BarHigh; // 전봉 고가 - 저가한 값이 BarSize 보다 작으면 V5 = 1 If H[1] - L[1] <= Value2 Then V5 = 1 Else V5 = 999999; If AbsValue(L[1] - V3[1]) <= Value3 Then V12 = 1 Else V12 = 999999; If AbsValue(H[1] - V3[1]) <= Value4 Then V13 = 1 Else V13 = 999999; /*---------------- BRICK GAP FILTER -------------------------*/ // 5봉 최저가가 장기이평 위에 있으면 Byflag = 1(매수조건 완성) If (V3 - Lowest(L, 5)) <= Value1 Then V14 = 1 Else V14 = 999999; // 5봉 최고가가 장기이평 아래에 있으면 slflag = 1(매도조건 완성) If (Highest(H, 5) - V3) <= Value1 Then V15 = 1 Else V15 = 999999; If C > V3 // 종가가 장기이평 위에 있고 And V4[1] < V4[2] // 전봉의 단기 이평이 하락중 있었고 And V4[1] < V2[1] // 전봉의 단기 이평이 고가를 이용한 중기 이평보다 아래에 있었고 And V4 > V4[1] // 최근봉의 단기 이평이 상승중이고 And V14 = 1 // 단기 이평의 매수조건 완성 And V5 = 1 // 전봉의 봉사이즈가 작아야 함. And V12 = 1 // 전봉의 저가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 > V3 // 현재봉 기준의 단기이평이 장기이평 위에 있어야 함. And TimeEnd > time Then Buy("Le1", AtMarket, def, V11); // 다음봉 시가로 매수 If Close < V3 // 종가가 장기이평 아래에 있 And V4[1] > V4[2] // 전봉의 단기 이평이 상승중 있었고 And V4[1] > V1[1] // 전봉의 단기 이평이 저가를 이용한 중기 이평보다 위에 있었고 And V4 < V4[1] // 최근봉의 단기 이평이 하락중이고 And V13 = 1 // 전봉의 고가와 단기 이평의 거리가 일정 범위 내에 있어야 함. And V4 < V3 // 현재봉 기준의 단기이평이 장기이평 아래에 있어야 함. Then Sell("Se1", AtMarket, def, V11); // 다음봉 시가로 매도 Cond1 = SignalPosition = 1 And ((V4[1] > V3[1] And CrossUp(V4, V3))); If Cond1 Then ExitLong("LX1", AtMarket); // 매수 청산 Cond2 = SignalPosition = -1 And ((V4[1] < V3[1] And CrossDown(V4, V3))); if Cond2 Then ExitShort("SX1", AtMarket); // 매도 청산 /* * 수익보존 청산 * - 포지션이 일정 포인트 이상 수익이 발생하는 상태에서 * - 손익이 줄어서 Plok 만큼 줄어들면 청산 하는 로직 */ Cond3 = SignalPosition = 1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond3 Then ExitLong("LX2", AtStop, EntryPrice + (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매수청산 Cond4 = SignalPosition = -1 And MaxPositionProfit(0) >= (ProfitVal/100) * EntryPrice * V11; If Cond4 Then ExitShort("SX2", AtStop, EntryPrice - (ProfitVal/100)*Plok * EntryPrice * v11); // 손익이 Plok 까지 줄어들면 매도청산