커뮤니티

문의드립니다.

프로필 이미지
디벨로퍼
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의 조건(아직 미정)을 만족하면 매도청산(손절) 위와 같은 시스템으로 수식을 짜려면 어떻게 해야되나요? 부탁드립니다.