커뮤니티
왜 이렇게 동작하나요 ?
2010-11-23 14:42:03
861
글번호 33827
개인적으로 작성한 시스템이 수정하면서 언제서 부터인가 오동작을 해서 한참동안 debugging했는데요.
엑기스만 추출하면 아래와 같은 모양새입니다.
일봉으로 2000년 1월 4일 봉부터 시뮬레이션이나 실시간차트를 걸면은 의도와 다르게 매도 신호가 안나옵니다.
input : USE_MA_MODE(0);
if( USE_MA_MODE ) then
Value7 = MA ( C, 64 );
Else
{
if( sdate == 20000218 ) then
Sell("S6매도",atmarket);
if( MarketPosition() == -1 ) Then // 매도시는 -1임
ExitShort("S6익절", atstop, 112.72);
}
여기서 64를 0으로 바꾸면 원하는데로 매도 신호가 나옵니다.
물론 차트의 64봉까지는 MA의 출력값이 unknown이 나온다는건 압니다.
하지만 그게 아래의 else쪽의 매도 시그널하고 무슨 상관인가요 ?
실제로 지금세팅에서는 USE_MA_MODE가 0이기 때문에 MA는 구동도 안됩니다.
tool 자체의 문제인가요 ?
USE_MA_MODE로 쓸때는 MA를 사용하고 USE_MA_MODE가 아닐때는
매도 신호부분이 동작해야 하고 개인적인 이유상 2000년 1월 4일 봉부터
동작시켜야 하는데 해결책이 없나요 ?
답변 2
예스스탁 예스스탁 답변
2010-11-23 17:35:47
안녕하세요
예스스탁입니다.
수식은 차트에 적용시에 수식을 한번 스캔하여 수식에서
필요한 봉갯수를 산정하게 됩니다. 수식에서 판단한 필요한 봉갯수 이후에 신호가 발생하게 설계되어 있습니다.
봉갯수가 필요한 계산식을 아래에 아닌부분을 위쪽에 배치하여 작성하시면
해결되실 것 같습니다.(더 적은 봉수를 계산하는 것은 위에 배치)
아래 방법이 아니면 체계와 관련된 내용이므로 수식으로는 가능하지 않습니다.
차트 앞쪽으로 더 데이터를 확충하셔야 합니다.
input : USE_MA_MODE(0);
if( USE_MA_MODE ) != 0 then
{
if( sdate == 20000218 ) then
Sell("S6매도",atmarket);
if( MarketPosition() == -1 ) Then // 매도시는 -1임
ExitShort("S6익절", atstop, 112.72);
}
else{
Value7 = MA ( C, 64 );
}
if( USE_MA_MODE ) then
같은 구문은 조건문이 아니므로 임의로 조건문을 설정했습니다.
USE_MA_MODE가 0이 아니면 ~~~ 아니면 ~~~입니다.
즐거운 하루되세요
> 얀 님이 쓴 글입니다.
> 제목 : 왜 이렇게 동작하나요 ?
> 개인적으로 작성한 시스템이 수정하면서 언제서 부터인가 오동작을 해서 한참동안 debugging했는데요.
엑기스만 추출하면 아래와 같은 모양새입니다.
일봉으로 2000년 1월 4일 봉부터 시뮬레이션이나 실시간차트를 걸면은 의도와 다르게 매도 신호가 안나옵니다.
input : USE_MA_MODE(0);
if( USE_MA_MODE ) then
Value7 = MA ( C, 64 );
Else
{
if( sdate == 20000218 ) then
Sell("S6매도",atmarket);
if( MarketPosition() == -1 ) Then // 매도시는 -1임
ExitShort("S6익절", atstop, 112.72);
}
여기서 64를 0으로 바꾸면 원하는데로 매도 신호가 나옵니다.
물론 차트의 64봉까지는 MA의 출력값이 unknown이 나온다는건 압니다.
하지만 그게 아래의 else쪽의 매도 시그널하고 무슨 상관인가요 ?
실제로 지금세팅에서는 USE_MA_MODE가 0이기 때문에 MA는 구동도 안됩니다.
tool 자체의 문제인가요 ?
USE_MA_MODE로 쓸때는 MA를 사용하고 USE_MA_MODE가 아닐때는
매도 신호부분이 동작해야 하고 개인적인 이유상 2000년 1월 4일 봉부터
동작시켜야 하는데 해결책이 없나요 ?
얀
2010-11-24 17:33:05
말씀해주신대로 코드위치를 바꿨더니 일단 제대로 동작은 하네요.
하지만 똑같은 조건문의 코드가 위치에 따라서 다르게 동작한다는건
복잡한 코드의 프로그램을 작성해야 하는 프로그래머 한테는
상당히 위험한 제약일수가 있습니다.
장기적으로는 시스템을 고쳐주시길 바랍니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 왜 이렇게 동작하나요 ?
> 안녕하세요
예스스탁입니다.
수식은 차트에 적용시에 수식을 한번 스캔하여 수식에서
필요한 봉갯수를 산정하게 됩니다. 수식에서 판단한 필요한 봉갯수 이후에 신호가 발생하게 설계되어 있습니다.
봉갯수가 필요한 계산식을 아래에 아닌부분을 위쪽에 배치하여 작성하시면
해결되실 것 같습니다.(더 적은 봉수를 계산하는 것은 위에 배치)
아래 방법이 아니면 체계와 관련된 내용이므로 수식으로는 가능하지 않습니다.
차트 앞쪽으로 더 데이터를 확충하셔야 합니다.
input : USE_MA_MODE(0);
if( USE_MA_MODE ) != 0 then
{
if( sdate == 20000218 ) then
Sell("S6매도",atmarket);
if( MarketPosition() == -1 ) Then // 매도시는 -1임
ExitShort("S6익절", atstop, 112.72);
}
else{
Value7 = MA ( C, 64 );
}
if( USE_MA_MODE ) then
같은 구문은 조건문이 아니므로 임의로 조건문을 설정했습니다.
USE_MA_MODE가 0이 아니면 ~~~ 아니면 ~~~입니다.
즐거운 하루되세요
> 얀 님이 쓴 글입니다.
> 제목 : 왜 이렇게 동작하나요 ?
> 개인적으로 작성한 시스템이 수정하면서 언제서 부터인가 오동작을 해서 한참동안 debugging했는데요.
엑기스만 추출하면 아래와 같은 모양새입니다.
일봉으로 2000년 1월 4일 봉부터 시뮬레이션이나 실시간차트를 걸면은 의도와 다르게 매도 신호가 안나옵니다.
input : USE_MA_MODE(0);
if( USE_MA_MODE ) then
Value7 = MA ( C, 64 );
Else
{
if( sdate == 20000218 ) then
Sell("S6매도",atmarket);
if( MarketPosition() == -1 ) Then // 매도시는 -1임
ExitShort("S6익절", atstop, 112.72);
}
여기서 64를 0으로 바꾸면 원하는데로 매도 신호가 나옵니다.
물론 차트의 64봉까지는 MA의 출력값이 unknown이 나온다는건 압니다.
하지만 그게 아래의 else쪽의 매도 시그널하고 무슨 상관인가요 ?
실제로 지금세팅에서는 USE_MA_MODE가 0이기 때문에 MA는 구동도 안됩니다.
tool 자체의 문제인가요 ?
USE_MA_MODE로 쓸때는 MA를 사용하고 USE_MA_MODE가 아닐때는
매도 신호부분이 동작해야 하고 개인적인 이유상 2000년 1월 4일 봉부터
동작시켜야 하는데 해결책이 없나요 ?
다음글
이전글