커뮤니티
문의드립니다.
2017-10-26 08:09:39
155
글번호 113625
A라는 조건이 현재봉부터 N봉전까지 중 1번이상 만족한 상태에서
B라는 조건이 현재봉에 만족하면
실행(buy)에 이르게 하려면,
for 문과 if 문을 이용해서 어떻게 해야 되나요?
구체적으로,
<매수조건>
첫째, CCI(9)가 현재봉에서 N번째봉전까지 -70이하로 간 적이 있을 것 (현재는 -70이하가 아니라도 상관없음, -70이하여도 상관없음)
둘째, 현재봉에서 5이평선과 20이평선이 골든크로스했을 것
위 조건을 모두 만족하면, 다음 봉 시가에서 매수 실행
<매수청산>
매수진입 후 5이평선이 10이평선을 데드크로스하면 매수청산
또는 진입 이후 캔들이 20이평선을 깨고 내려가면 매수청산
또는 제3의 조건(아직 미정)을 만족하면 매수청산(손절)
<매도조건>
첫째, CCI(9)가 현재봉에서 N번째봉전까지 70이상으로로 간 적이 있을 것 (현재는 70이상이 아니라도 상관없음, 70이상이어도 상관없음)
둘째, 현재봉에서 5이평선과 20이평선이 데드크로스했을 것
위 조건을 모두 만족하면, 다음 봉 시가에서 매도 실행
<매도청산>
매수진입 후 5이평선이 10이평선을 골든크로스하면 매도청산
또는 진입 이후 캔들이 20이평선을 뚫고 올라가면 매도청산
또는 제3의 조건(아직 미정)을 만족하면 매도청산(손절)
위와 같은 시스템으로 수식을 짜려면 어떻게 해야되나요?
부탁드립니다.
답변 1
예스스탁 예스스탁 답변
2017-10-26 14:36:14
안녕하세요
예스스탁입니다.
1
간단히 countif함수이용하시면 됩니다.
Input : Period(9),N(10),P1(5),P2(10),P3(20);
var : CCIv(0),mav1(0),mav2(0),mav3(0);
CCIv = CCI(Period);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
if countif(CCIV <= -70,N) >= 1 and crossup(mav1,mav3) Then
buy("b",AtMarket);
if countif(CCIV >= 70,N) >= 1 and CrossDown(mav1,mav3) Then
sell("s",AtMarket);
if MarketPosition == 1 Then{
if CrossDown(mav1,mav2) Then
exitlong();
if CrossDown(c,mav3) Then
ExitLong();
}
if MarketPosition == -1 Then{
if CrossUp(mav1,mav2) Then
ExitShort();
if CrossUp(c,mav3) Then
ExitShort();
}
2
for문 이용해 카운트 하고자 하시면 아래와 같이 작성하시면 됩니다.
Input : Period(9),N(10),P1(5),P2(10),P3(20);
var : CCIv(0),mav1(0),mav2(0),mav3(0);
var : upcnt(0),dncnt(0),cnt(0);
CCIv = CCI(Period);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
mav3 = ma(C,P3);
upcnt = 0;
dncnt = 0;
for cnt = 0 to N-1{
if CCIV[cnt] >= 70 Then
upcnt = upcnt+1;
if CCIV[cnt] <= -70 Then
dncnt = dncnt+1;
}
if dncnt >= 1 and crossup(mav1,mav3) Then
buy("b",AtMarket);
if upcnt >= 1 and CrossDown(mav1,mav3) Then
sell("s",AtMarket);
if MarketPosition == 1 Then{
if CrossDown(mav1,mav2) Then
exitlong();
if CrossDown(c,mav3) Then
ExitLong();
}
if MarketPosition == -1 Then{
if CrossUp(mav1,mav2) Then
ExitShort();
if CrossUp(c,mav3) Then
ExitShort();
}
즐거운 하루되세요
> 디벨로퍼 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> A라는 조건이 현재봉부터 N봉전까지 중 1번이상 만족한 상태에서
B라는 조건이 현재봉에 만족하면
실행(buy)에 이르게 하려면,
for 문과 if 문을 이용해서 어떻게 해야 되나요?
구체적으로,
<매수조건>
첫째, CCI(9)가 현재봉에서 N번째봉전까지 -70이하로 간 적이 있을 것 (현재는 -70이하가 아니라도 상관없음, -70이하여도 상관없음)
둘째, 현재봉에서 5이평선과 20이평선이 골든크로스했을 것
위 조건을 모두 만족하면, 다음 봉 시가에서 매수 실행
<매수청산>
매수진입 후 5이평선이 10이평선을 데드크로스하면 매수청산
또는 진입 이후 캔들이 20이평선을 깨고 내려가면 매수청산
또는 제3의 조건(아직 미정)을 만족하면 매수청산(손절)
<매도조건>
첫째, CCI(9)가 현재봉에서 N번째봉전까지 70이상으로로 간 적이 있을 것 (현재는 70이상이 아니라도 상관없음, 70이상이어도 상관없음)
둘째, 현재봉에서 5이평선과 20이평선이 데드크로스했을 것
위 조건을 모두 만족하면, 다음 봉 시가에서 매도 실행
<매도청산>
매수진입 후 5이평선이 10이평선을 골든크로스하면 매도청산
또는 진입 이후 캔들이 20이평선을 뚫고 올라가면 매도청산
또는 제3의 조건(아직 미정)을 만족하면 매도청산(손절)
위와 같은 시스템으로 수식을 짜려면 어떻게 해야되나요?
부탁드립니다.