커뮤니티

시스템 수식 문의드립니다.

프로필 이미지
제이크
2016-06-29 22:53:44
130
글번호 99594
답변완료
안녕하세요. 앞선분들의 문의와 답변으로 이래저래 머리를 굴리다가 도저히 해결이 안되어 이렇게 문의드립니다. 전 아래와 같은 로직을 구현하고 싶습니다. 진입기준. 1. 5/10/30분봉, 5 이평 이격도 기준 상품별 과매도(99.5) 구간에 들어가면 매수 /과매수(100.5) 구간을 넘어서면 매도 진입 2. 진입후 -15틱 발생시, 한 계약 추가진입 3. 특정 기준선 (피봇 1,2차 지지 및 저항 혹은 볼밴 (100,2) 상하밴드선과 현재가가 20틱 이내이면 진입금지 4. 3번의 피봇 지지/저항선 혹은 볼린저밴드 상하 밴드선을 넘어 과매도(99.5)/ 과매수(100.5) 구간이면 진입 5. 매시간 25~30분, 55분~60분은 진입금지. 청산기준. 1. 진입가 기준으로 +10틱 청산 2. +4틱이상 수익 발생시, +2틱에 수익확보 주문 (만일, 1번 목표 청산가격을 못가더라도 최소 2틱 수익 확보 목적) 3. 물타기로 2계약 진입시 (진입기준의 2번에 해당되어) * 1계약은 평단가 +4틱에 청산 * 1계약은 평단가 +4틱에 수익확보 주문후, +10틱에 청산주문. 만약, 진입조건의 3,4번이 구현이 불가능하다면 1,2,5번이라도 구현이 가능할까요? 많은 조언 부탁드립니다. 한가지만 더 문의드리면, 진입은 3분봉 기준 봉 완성시가 아닌 3분봉 내에서 이격조건 만족시 즉시 진입을 하는 것을 구현하고 싶습니다. 감사합니다.
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2016-06-30 11:11:50

안녕하세요 예스스탁입니다. 1 봉미완성시 가능하지 않습니다 식을 5분봉에 적용하셔야 합니다. 수식에서 다른주기의 계산은 해당 차트주기의 배수인 주기만 가능합니다. 3분봉에서 5분 10분 계산이 되지 않으므로 5분봉 차트에 적용하셔야 합니다. 2 3.4번은 제외했습니다. 3 주석 참고하셔서 수정보완해 사용하시기 바랍니다. input : P(5); var : cnt(0),TF1(0),TF2(0),D1(0),D2(0),D3(0),mav2(0),mav3(0),sum2(0),sum3(0); var : Bcond(false),Scond(false),MM(0); Array : C2[50](0),C3[50](0); MM = stime%100; TF1 = TimeToMinutes(stime)%10; TF2 = TimeToMinutes(stime)%30; #10분봉 주기 종가저장 if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then{ for cnt = 1 to 49{ C2[cnt] = C2[cnt-1][1]; } } C2[0] = C; #20분봉 주기 종가저장 if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF2 < TF2[1]) Then{ for cnt = 1 to 49{ C3[cnt] = C3[cnt-1][1]; } } C3[0] = C; D1 = C/ma(c,P)*100; #10분봉 이평 및 이격도계산 sum2 = 0; for cnt = 0 to P-1{ sum2 = sum2 + C2[cnt]; } mav2 = sum2/P; D2 = C/mav2*100; #30분봉 이평 및 이격도계산 sum3 = 0; for cnt = 0 to P-1{ sum3 = sum3 + C3[cnt]; } mav3 = sum3/P; D3 = C/mav3*100; Bcond = d1 <= 99.5 and D2 <= 99.5 and D3 <= 99.5; Scond = d1 >= 100.5 and D2 >= 100.5 and D3 >= 100.5; #이격3개가 모두 99.5이하인 시점에 매수진입 if Bcond == true and Bcond[1] == false and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then buy("b",OnClose,def,1); #이격3개가 모두 100.5이상인 시점에 매도진입 if Scond == true and Scond[1] == false and ((MM >= 0 and MM < 25) or (MM >= 30 and MM < 55)) Then sell("s",OnClose,def,1); #매수진입후 if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then var1 = H; if H > var1 Then var1 = H; #진입이 1번일경우 if MaxEntries == 1 Then{ #15틱 하락하면 1계약 추가매수진입 buy("bb",atlimit,EntryPrice-PriceScale*15,1); #진입가+10틱에 청산 ExitLong("bp1",Atlimit,EntryPrice+PriceScale*10); #4틱이상 상승후 진입가+2틱에 도달하면 매수청산 if var1 >= EntryPrice+PriceScale*4 Then exitlong("bx1",AtStop,EntryPrice+PriceScale*2); } #진입이 2번일 경우 if MaxEntries == 2 Then{ #청산이 아직 발생하지 않은 경우 평단가+4틱 수익이면 1계약청 if CurrentContracts == MaxContracts Then ExitLong("bp21",Atlimit,avgEntryPrice+PriceScale*4,"",1,1); #일부청산이 된 경우 if CurrentContracts < MaxContracts Then #평단가 +10틱이상이면 나머지 청산 ExitLong("bp22",Atlimit,AvgEntryPrice+PriceScale*10); #평단가 +4틱이상 상승후 하락해서 평단가+4틱에 도달하면 나머지 청산 if var1 > AvgEntryPrice+PriceScale*4 Then exitlong("bx2",AtStop,EntryPrice+PriceScale*4); } } #매도진입후 if MarketPosition == -1 Then{ if CurrentContracts > CurrentContracts[1] Then var2 = L; if L < var2 Then var2 = L; #진입이 1번일경우 if MaxEntries == 1 Then{ #15틱 상승하면 1계약 추가매도진입 sell("ss",atlimit,EntryPrice+PriceScale*15,1); #진입가-10틱에 청산 ExitShort("sp1",Atlimit,EntryPrice-PriceScale*10); #4틱 하락 후 진입가-2틱에 도달하면 매도청산 if var2 <= EntryPrice-PriceScale*4 Then ExitShort("sx1",AtStop,EntryPrice-PriceScale*2); } #진입이 2번일 경우 if MaxEntries == 2 Then{ if CurrentContracts == MaxContracts Then ExitShort("sp21",Atlimit,avgEntryPrice-PriceScale*4); if CurrentContracts < MaxContracts Then ExitShort("sp22",Atlimit,AvgEntryPrice-PriceScale*10); if var2 < AvgEntryPrice-PriceScale*4 Then ExitShort("sx2",AtStop,EntryPrice-PriceScale*4); } } 즐거운 하루되세요 > 제이크 님이 쓴 글입니다. > 제목 : 시스템 수식 문의드립니다. > 안녕하세요. 앞선분들의 문의와 답변으로 이래저래 머리를 굴리다가 도저히 해결이 안되어 이렇게 문의드립니다. 전 아래와 같은 로직을 구현하고 싶습니다. 진입기준. 1. 5/10/30분봉, 5 이평 이격도 기준 상품별 과매도(99.5) 구간에 들어가면 매수 /과매수(100.5) 구간을 넘어서면 매도 진입 2. 진입후 -15틱 발생시, 한 계약 추가진입 3. 특정 기준선 (피봇 1,2차 지지 및 저항 혹은 볼밴 (100,2) 상하밴드선과 현재가가 20틱 이내이면 진입금지 4. 3번의 피봇 지지/저항선 혹은 볼린저밴드 상하 밴드선을 넘어 과매도(99.5)/ 과매수(100.5) 구간이면 진입 5. 매시간 25~30분, 55분~60분은 진입금지. 청산기준. 1. 진입가 기준으로 +10틱 청산 2. +4틱이상 수익 발생시, +2틱에 수익확보 주문 (만일, 1번 목표 청산가격을 못가더라도 최소 2틱 수익 확보 목적) 3. 물타기로 2계약 진입시 (진입기준의 2번에 해당되어) * 1계약은 평단가 +4틱에 청산 * 1계약은 평단가 +4틱에 수익확보 주문후, +10틱에 청산주문. 만약, 진입조건의 3,4번이 구현이 불가능하다면 1,2,5번이라도 구현이 가능할까요? 많은 조언 부탁드립니다. 한가지만 더 문의드리면, 진입은 3분봉 기준 봉 완성시가 아닌 3분봉 내에서 이격조건 만족시 즉시 진입을 하는 것을 구현하고 싶습니다. 감사합니다.
프로필 이미지

제이크

2016-06-30 14:10:40

제이크 님에 의해 삭제된 답변입니다.