커뮤니티

수식 부탁드립니다

프로필 이미지
youyou
2017-08-30 01:47:51
130
글번호 112331
답변완료
10분마다 확인하여, A의 주가가 5일 이동평균선을 상향 돌파시 B를 시장가로 전량매수(이미 B매수 포지션인경우 포지션 유지), A의 주가가 5일 이동평균선을 하향 돌파시 B를 시장가로 전량매수청산하고 C를 전량매수(이미 C매수 포지션인경우 포지션 유지), A의 주가가 5일 이동평균선을 상향 돌파시 C를 시장가로 전량매수청산하고 B를 전량매수, ...(반복) B를 주종목으로 한 전략 따로, C를 주종목으로 한 전략 따로 이렇게 하면 구현이 가능한거 맞나요? --- B식 if CrossUp(data2(C),data3(MA(C,5))) and MarketPosition == 0 Then Buy("B매수"); if CrossDown(data2(C),data3(MA(C,5))) and MarketPosition == 1 Then ExitLong("B매수청산"); --- C식 if CrossDown(data2(C),data3(MA(C,5))) and MarketPosition == 0 Then Buy("C매수"); if CrossUp(data2(C),data3(MA(C,5))) and MarketPosition == 1 Then ExitLong("C매수청산"); --- 1)식에 잘못된 부분이 있나요? 2)CrossDown/CrossUp과 그냥 부등호 > <는 어떻게 다른가요? 3)주가가 횡보할때 거래를 여러번 반복하는 걸 막으려고 10분 단위로 조건을 판단해서 거래를 하도록 10분봉종가를 사용하려고 하는데, 그냥 일봉의 종가를 가지고 10분 단위로 조건을 판단해서 거래를 하게끔 하는 방법도 있나요? 4)만약 A의 10분봉종가(10분봉)와 A의 5일이평선(일봉)을 사용한다면 data2(A의 10분봉), data3(A의 일봉)로 타주기를 2개 사용하게 되는 건가요? 5)예를들어서 A의 주가가 5일 이평선을 하향 돌파시 B를 주종목으로 한 전략에서는 B를 매수청산하고 C를 주종목으로 한 전략에서는 C를 매수하게 될건데 순서가 B청산->C매수 실행 이렇게 되어야 맞고 A의 주가가 5일 이평선 상향 돌파시 C청산->B매수 실행 이렇게 되어야 맞는데 그건 어떻게 처리할 수 있나요? 저절로 프로그램 내에서 순서가 고려되는건가요? 6)완성되지않은 봉을 참조할 수 없다면 10분봉을 사용할경우 9시 0분~9시 10분에는 어떻게 되는건가요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-08-30 15:42:17

안녕하세요 예스스탁입니다. 1 데이터 지정이 잘못되어 있습니다. 차트에서 주문은 기본차트 한종목에 대해서만 신호와 주문이 가능합니다. 차트도 2개, 시스템도 2개 만드셔야 합니다. 기본차트(data1)이 B이고 참조데이터(data2)가 A인 차트에 적용할 시스템식 기본차트(data1)이 C이고 참조데이터(data2)가 A인 차트에 적용할 시스템식 1-1 #data1 B종목 #data2 A종목 input : P(5); var : cnt(0,data2),mav(0,data2),sum(0,data2); var : sum1(0,data2),mav1(0,data2); Array : C2[100](0,data2); if data2(Bdate != Bdate[1]) Then{ for cnt = 1 to 99{ C2[cnt] = C2[cnt-1][1]; } } C2[0] = data2(c); if C2[P] > 0 then{ #data2 당일기준/전일기준 5일이평 계산 sum = 0; sum1 = 0; for cnt = 0 to P-1{ sum = sum + C2[cnt]; sum1 = sum1 + C2[cnt+1]; } mav = sum/P; mav1 = sum1/P; if C2[0] > mav and C2[1] <= mav1 Then buy("B매수"); if C2[0] < mav and C2[1] >= mav1 Then ExitLong("B매도"); } 1-1 #data1 C종목 #data2 A종목 input : P(5); var : cnt(0,data2),mav(0,data2),sum(0,data2); var : sum1(0,data2),mav1(0,data2); Array : C2[100](0,data2); if data2(Bdate != Bdate[1]) Then{ for cnt = 1 to 99{ C2[cnt] = C2[cnt-1][1]; } } C2[0] = data2(c); if C2[P] > 0 then{ #data2 당일기준/전일기준 5일이평 계산 sum = 0; sum1 = 0; for cnt = 0 to P-1{ sum = sum + C2[cnt]; sum1 = sum1 + C2[cnt+1]; } mav = sum/P; mav1 = sum1/P; if C2[0] < mav and C2[1] >= mav1 Then buy("C매수"); if C2[0] > mav and C2[1] <= mav1 Then ExitLong("C매도"); } 2 CrossDown/CrossUp는 돌파를 나타내는 함수입니다. 현재봉과 전봉의 상태를 비교합니다. 풀어서 작성하면 아래와 같습니다. CrossUp(A,B) --> A > B and A[1] <= B[1] CrossDown(A,B) --> A < B and A[1] >= B[1] 3 하나의 봉에서 시간단위로 분할하여 조건체크는 불가능합니다. 10분봉 사용하셔야 합니다. 4 랭귀지는 완성봉의 값만 사용합니다. 참조데이터가 일봉이면 당일값 사용을 할수 없습니다. data2는 같이 10분봉으로 지정하셔야 합니다. 위 답변수식에 보시면 data2의 값을 이용해 일봉이평 계산하게 되어 있습니다 5 시스템은 다른 차트에서 신호는 알수 없습니다. 위 식을 각각 차트에 적용하면 각각차트에서 조건 체크해서 진입청산 됩니다. 다른 차트의 정보를 받아들이지는 않습니다. 단지 지정하신 조건이 동일종목(data2)에 대한 단순 이평돌파 전략이므로 B청산조건일때 C매수가 발생하고 A매수일때 C청산이 발생하게 됩니다. 6 9시 0분~9시10분 사이에 어떻게 되는 것이 아닙니다. 10분봉 완성시에만 신호가 발생하므로 해당 시간안에는 신호가 나오지 않습니다. 즐거운 하루되세요 > youyou 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다 > 10분마다 확인하여, A의 주가가 5일 이동평균선을 상향 돌파시 B를 시장가로 전량매수(이미 B매수 포지션인경우 포지션 유지), A의 주가가 5일 이동평균선을 하향 돌파시 B를 시장가로 전량매수청산하고 C를 전량매수(이미 C매수 포지션인경우 포지션 유지), A의 주가가 5일 이동평균선을 상향 돌파시 C를 시장가로 전량매수청산하고 B를 전량매수, ...(반복) B를 주종목으로 한 전략 따로, C를 주종목으로 한 전략 따로 이렇게 하면 구현이 가능한거 맞나요? --- B식 if CrossUp(data2(C),data3(MA(C,5))) and MarketPosition == 0 Then Buy("B매수"); if CrossDown(data2(C),data3(MA(C,5))) and MarketPosition == 1 Then ExitLong("B매수청산"); --- C식 if CrossDown(data2(C),data3(MA(C,5))) and MarketPosition == 0 Then Buy("C매수"); if CrossUp(data2(C),data3(MA(C,5))) and MarketPosition == 1 Then ExitLong("C매수청산"); --- 1)식에 잘못된 부분이 있나요? 2)CrossDown/CrossUp과 그냥 부등호 > <는 어떻게 다른가요? 3)주가가 횡보할때 거래를 여러번 반복하는 걸 막으려고 10분 단위로 조건을 판단해서 거래를 하도록 10분봉종가를 사용하려고 하는데, 그냥 일봉의 종가를 가지고 10분 단위로 조건을 판단해서 거래를 하게끔 하는 방법도 있나요? 4)만약 A의 10분봉종가(10분봉)와 A의 5일이평선(일봉)을 사용한다면 data2(A의 10분봉), data3(A의 일봉)로 타주기를 2개 사용하게 되는 건가요? 5)예를들어서 A의 주가가 5일 이평선을 하향 돌파시 B를 주종목으로 한 전략에서는 B를 매수청산하고 C를 주종목으로 한 전략에서는 C를 매수하게 될건데 순서가 B청산->C매수 실행 이렇게 되어야 맞고 A의 주가가 5일 이평선 상향 돌파시 C청산->B매수 실행 이렇게 되어야 맞는데 그건 어떻게 처리할 수 있나요? 저절로 프로그램 내에서 순서가 고려되는건가요? 6)완성되지않은 봉을 참조할 수 없다면 10분봉을 사용할경우 9시 0분~9시 10분에는 어떻게 되는건가요?