커뮤니티
시스템 수식 문의드립니다.
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
제이크 님에 의해 삭제된 답변입니다.