커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2021-09-01 16:34:45
910
글번호 151946
답변완료
안녕하세요? 아래 글번호 73783번 재질문입니다. 전략 A를 1번 차트에 돌린다고 가정을 하여 가상의 누적수익이 나오면 이를 참조하여 수익율 그래프의 5ma를 그려서 골드크로스에 매, 데드크로스에 매도 하는 전략 B를 만들고 전략 B를 2번[1번과 동일한 종목, 주기] 차트에 적용하여 매매신호를 생성하는 것은 시스템상 불가능한 것일까요?
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-09-02 13:31:56

안녕하세요 예스스탁입니다. 차트간에는 서로 정보를 주고받지 않아 다른 차트의 내용을 이용할 수는 없습니다. 하나의 수식내에서 기존의 시스템 내용을 가상으로 진입과 청산을 내용을 만들어 가상손익을 계산해서 신호가 발생하게 구현하셔야 합니다. 실제 진입이나 청산의 내용에 따라 수식이 많이 달리 작성될 수 있습니다. 가상으로 체크하는 부분은 시간이 많이 소모되는 내용으로 저희가 작성해 드리지 않으므로 아래 내용을 참고하셔서 직접 코딩하셔서 완성하시기 바랍니다. Input : shortPeriod(5), longPeriod(20); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } 위식으로 발생하는 손익을 가상으로 계산하는 내용입니다. 누적손익이 누적손익5이평을 상향돌파하면 매수, 누적손익이 누적손익5이평을 하향이탈하면 매도입니다. Input : shortPeriod(5), longPeriod(20),N(5); var : T(0),B(0),S(0),cnt(0); var : Trade(0),sum(0),sum1(0),sumPLma(0),sumPLma1(0); Array : sumPL[100](0); value1 = ma(C,shortPeriod); Value2 = ma(C,longPeriod); if T <= 0 and CrossUp(value1,Value2) Then { T = 1; B = C; if T[1] == -1 Then { Trade = Trade +1; sumPL[0] = sumPL[0] + (S-B); For cnt = 1 to 99 { sumPL[cnt] = sumPL[cnt-1][1]; } if Trade > N Then { sum = 0; sum1 = 0; For cnt = 0 to N-1 { sum = sum + sumPL[cnt]; sum1 = sum1 + sumPL[cnt+1]; } sumPLma = sum/N; sumPLma1 = sum1/N; } } } if T >= 0 and CrossDown(value1,Value2) Then { T = -1; S = C; if T[1] == 1 Then { Trade = Trade +1; sumPL[0] = sumPL[0]+(S-B); For cnt = 1 to 99 { sumPL[cnt] = sumPL[cnt-1][1]; } if Trade > N Then { sum = 0; sum1 = 0; For cnt = 0 to N-1 { sum = sum + sumPL[cnt]; sum1 = sum1 + sumPL[cnt+1]; } sumPLma = sum/N; sumPLma1 = sum1/N; } } } 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래 글번호 73783번 재질문입니다. 전략 A를 1번 차트에 돌린다고 가정을 하여 가상의 누적수익이 나오면 이를 참조하여 수익율 그래프의 5ma를 그려서 골드크로스에 매, 데드크로스에 매도 하는 전략 B를 만들고 전략 B를 2번[1번과 동일한 종목, 주기] 차트에 적용하여 매매신호를 생성하는 것은 시스템상 불가능한 것일까요?