커뮤니티

이 종목검색식이 왜 오동작하는지 좀 알려주세요.

프로필 이미지
2011-10-18 14:16:08
532
글번호 43834
답변완료
예스트레이더 3.1버젼 쓰고있는데요. 어제 오늘 황당한 문제때문에 낑낑거리고 있었습니다. 아래는 복잡한 시스템에서 문제가 있었던 부분만 추려낸건데요. 의도는 현재봉기준으로 이전봉이 정배열되어 있는 종목을 출력하는 용도입니다. input : ma_short_leng(2); input : ma_middle_leng(3); input : ma_long_leng(10); var : BullMarket(0), ma_short(0), ma_middle(0), ma_long(0), find_val(0); find_val = 0; ma_short = MA (C, ma_short_leng); ma_middle = MA (C, ma_middle_leng); ma_long = MA (C, ma_long_leng); if( ma_short > ma_middle && ma_middle > ma_long ) Then BullMarket = 1; Else BullMarket = 0; if( BullMarket[1] == 1 ) then find_val = 1; find( find_val ); 현상은 아무 종목도 출력되지 않습니다. 언듯봐서 명확하지 않으면 실제로 꼭 돌려보시고 답변적어주세요. (일봉하고 주봉에서 봤습니다) 하도 이상해서 지표식으로 옮겨서 MessageLog로 찍어놨는데 거기서는 별문제없이 정배열된 종목은 find_val = 1로 잘 찍힙니다. 이것저것 해보다가 아래처럼 고치니 종목이 출력은 되는데 위에거 하고 아래거하고 뭐가 다른건가요? if( ma_short[1] > ma_middle[1] && ma_middle[1] > ma_long[1] ) Then BullMarket = 1; Else BullMarket = 0; if( BullMarket == 1 ) then find_val = 1; find( find_val ); 그리고 더 황당한게 맨위에 오동작 종목검색식에서 if( BullMarket[1] == 1 ) then { find_val = 1; find( find_val ); } 이렇게 고치면 종목이 나오네요. 하지만 여기적은 수식들은 debugging을 위한 간략식이고 실제로의 복잡한 시스템은 매 종목당 find로 결과를 전부 출력해야해서 개인적으로 이렇게는 쓰지 못합니다. 제가 뭔가 큰 착각을 하고 있지않다면 뭔가 일관적이지 못하게 동작하는것 같은데요. 확실하게 정리해서 알려주세요.
검색
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2011-10-18 15:49:37

안녕하세요 예스스탁입니다. 종목검색은 종목검색 서버의 부하를 줄이기 위해 수식 속성화면에서 최소기간(최소한 필요한 봉갯수)을 지정하지 않으시면 자체적으로 수식을 읽어 최소봉수를 설정하고 검색을 하게 되는데 이때 자체 계산한 최소봉수가 원래 수식에서 필요한 최소 봉수보다 작으면 검색이 되지 않습니다. 첨부된 그림과 같이 종목검색 속성화면의 검색기간 탭에서 사용자 설정 검색기간사용에 최소기간값을 넉넉히 지정하시면 모두 동일하게 검색됩니다. (최대 500봉까지 지원됩니다.) 종목검색식은 가능한 수식 작성후에 속성화면에서 최소기간을 직접 지정하여 사용해주시기 바랍니다. 즐거운 하루되세요 > 얀 님이 쓴 글입니다. > 제목 : 이 종목검색식이 왜 오동작하는지 좀 알려주세요. > 예스트레이더 3.1버젼 쓰고있는데요. 어제 오늘 황당한 문제때문에 낑낑거리고 있었습니다. 아래는 복잡한 시스템에서 문제가 있었던 부분만 추려낸건데요. 의도는 현재봉기준으로 이전봉이 정배열되어 있는 종목을 출력하는 용도입니다. input : ma_short_leng(2); input : ma_middle_leng(3); input : ma_long_leng(10); var : BullMarket(0), ma_short(0), ma_middle(0), ma_long(0), find_val(0); find_val = 0; ma_short = MA (C, ma_short_leng); ma_middle = MA (C, ma_middle_leng); ma_long = MA (C, ma_long_leng); if( ma_short > ma_middle && ma_middle > ma_long ) Then BullMarket = 1; Else BullMarket = 0; if( BullMarket[1] == 1 ) then find_val = 1; find( find_val ); 현상은 아무 종목도 출력되지 않습니다. 언듯봐서 명확하지 않으면 실제로 꼭 돌려보시고 답변적어주세요. (일봉하고 주봉에서 봤습니다) 하도 이상해서 지표식으로 옮겨서 MessageLog로 찍어놨는데 거기서는 별문제없이 정배열된 종목은 find_val = 1로 잘 찍힙니다. 이것저것 해보다가 아래처럼 고치니 종목이 출력은 되는데 위에거 하고 아래거하고 뭐가 다른건가요? if( ma_short[1] > ma_middle[1] && ma_middle[1] > ma_long[1] ) Then BullMarket = 1; Else BullMarket = 0; if( BullMarket == 1 ) then find_val = 1; find( find_val ); 그리고 더 황당한게 맨위에 오동작 종목검색식에서 if( BullMarket[1] == 1 ) then { find_val = 1; find( find_val ); } 이렇게 고치면 종목이 나오네요. 하지만 여기적은 수식들은 debugging을 위한 간략식이고 실제로의 복잡한 시스템은 매 종목당 find로 결과를 전부 출력해야해서 개인적으로 이렇게는 쓰지 못합니다. 제가 뭔가 큰 착각을 하고 있지않다면 뭔가 일관적이지 못하게 동작하는것 같은데요. 확실하게 정리해서 알려주세요.
프로필 이미지

2011-10-18 17:21:05

네. 세팅바꿔서 동작하는건 확인했습니다. 하지만 자동으로 검색기간을 설정하는게 문제가 있는 부분이 확인되서 기분이 개운하진 않습니다. 언뜻 생각해봐도 수식을 자동분석해서 검색기간을 자동설정하는게 100% 만족하게 설계하긴 좀 어려울듯 해 보이긴 하는데요 그러면 차라리 종목검색에서 자동설정을 아예 없애고, 종목검색 수식을 새로 작성하면 일단 default 500봉으로 설정되게 해놓고, 사용자가 속도를 위해서 검색기간을 수동으로 줄이도록 고치는게 어떨까하네요. 사용자 입장에서는 당연히 편의성 보다는 동작의 안정성이 우선이 되야 하지 않을까 하는 생각입니다. 동작이 불안하면 사용자는 모든게 혼란스럽습니다 ㅜㅜ
프로필 이미지

예스스탁 예스스탁 답변

2011-10-18 18:15:13

안녕하세요 예스스탁입니다. 사용에 불편을 드려 죄송합니다. 개선할 방안에 대해 논의해 보도록 하겠습니다. 즐거운 하루되세요 > 얀 님이 쓴 글입니다. > 제목 : [제안] default 세팅이 사용자설정 검색기간을 비워놓는게 좀 문제가 있지 않나요? > 네. 세팅바꿔서 동작하는건 확인했습니다. 하지만 자동으로 검색기간을 설정하는게 문제가 있는 부분이 확인되서 기분이 개운하진 않습니다. 언뜻 생각해봐도 수식을 자동분석해서 검색기간을 자동설정하는게 100% 만족하게 설계하긴 좀 어려울듯 해 보이긴 하는데요 그러면 차라리 종목검색에서 자동설정을 아예 없애고, 종목검색 수식을 새로 작성하면 일단 default 500봉으로 설정되게 해놓고, 사용자가 속도를 위해서 검색기간을 수동으로 줄이도록 고치는게 어떨까하네요. 사용자 입장에서는 당연히 편의성 보다는 동작의 안정성이 우선이 되야 하지 않을까 하는 생각입니다. 동작이 불안하면 사용자는 모든게 혼란스럽습니다 ㅜㅜ