커뮤니티
시스템이 차트에 적용되지 않습니다. 도와주세요.
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);
}
}
다음글