커뮤니티

시스템이 차트에 적용되지 않습니다. 도와주세요.

프로필 이미지
울리카
2018-11-12 16:14:13
166
글번호 123582
답변완료
안녕하세요. 다음과 같이 수식을 작성했는데요. 시스템을 시뮬레이션에 적용하니 적용되지 않고 프로그램이 다운되어서요. 뭔가 while 문이 무한루프에 빠져서 그런게 아닌가 싶은데요. 아무리 머리속으로 시뮬해봐도 문제가 발견이 잘 안되어서 도움을 구합니다. messagelog를 이곳저곳에 넣어서 찍어보려고도 했는데, 프로그램이 디버깅에 로그 찍히기도 전에 다운되어서 찍히지도 않네요. 좀 봐주실 수 있을까요? Var: BarStop(0), BarNum(0), BarVol(0), Count(0); BarStop = 0; BarNum = 0; BarVol = 0; Count = 1; If MarketPosition == 0 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] < O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; } If BarNum > 0 Then { If C > O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { Buy("매수", AtMarket); } } } If MarketPosition == 1 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] > O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; } If BarNum > 0 Then { If C < O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { ExitLong("매수청산", AtMarket); } } If NextBarSdate != sDate Then { ExitLong("종가청산", OnClose); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-11-13 15:15:19

안녕하세요 예스스탁입니다. 수식이 차트에 있는 봉보다 더 과거의 이전값을 참조합니다. 수식자체가 그때 invalid되어 if~else자체를 파악하지 못합니다. 과거봉 차트시 차트에 존재하는 봉까지만 루프를 돌도록 수정했습니다. Var: BarStop(0), BarNum(0), BarVol(0), Count(0),idx(0); BarStop = 0; BarNum = 0; BarVol = 0; Count = 1; idx = index+1; If MarketPosition == 0 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] < O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; if count >= idx Then BarStop = 1; } If BarNum > 0 Then { If C > O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { Buy("매수", AtMarket); } } } If MarketPosition == 1 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] > O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; if count >= idx Then BarStop = 1; } If BarNum > 0 Then { If C < O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { ExitLong("매수청산", AtMarket); } } If NextBarSdate != sDate Then { ExitLong("종가청산", OnClose); } } 즐거운 하루되세요 > 울리카 님이 쓴 글입니다. > 제목 : 시스템이 차트에 적용되지 않습니다. 도와주세요. > 안녕하세요. 다음과 같이 수식을 작성했는데요. 시스템을 시뮬레이션에 적용하니 적용되지 않고 프로그램이 다운되어서요. 뭔가 while 문이 무한루프에 빠져서 그런게 아닌가 싶은데요. 아무리 머리속으로 시뮬해봐도 문제가 발견이 잘 안되어서 도움을 구합니다. messagelog를 이곳저곳에 넣어서 찍어보려고도 했는데, 프로그램이 디버깅에 로그 찍히기도 전에 다운되어서 찍히지도 않네요. 좀 봐주실 수 있을까요? Var: BarStop(0), BarNum(0), BarVol(0), Count(0); BarStop = 0; BarNum = 0; BarVol = 0; Count = 1; If MarketPosition == 0 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] < O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; } If BarNum > 0 Then { If C > O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { Buy("매수", AtMarket); } } } If MarketPosition == 1 Then { While BarStop == 0 { If IsNaN(C[Count]) == False And C[Count] > O[Count] And sDate[Count] == sDate Then { BarNum = BarNum + 1; BarVol = BarVol + V[Count]; } Else { BarStop = 1; } Count = Count + 1; } If BarNum > 0 Then { If C < O And BarNum >= 3 And V > (BarVol / BarNum) * 1.5 Then { ExitLong("매수청산", AtMarket); } } If NextBarSdate != sDate Then { ExitLong("종가청산", OnClose); } }