커뮤니티

문의드립니다.

프로필 이미지
산골소년
2024-04-26 13:23:59
842
글번호 178930
답변완료
늘 고맙습니다. #1 아래 값들 중 가장 높은 값과 낮은 값을 찾고 싶습니다. 리스트에 여러값들을 넣어놓고 그 리스트내에 있는 값들중 가장 높은값과 낮은 값을 찾고자 합니다. 예)이평5, 이평10, 이평20, 이평60 캔들이 위 값들중 가장 높은 값을 돌파했다. 낮은 값을 이탈했다. 이런 것을 만들려고 합니다. #2 어제 알려주신 것(86902) 중 1번을 제대로 소화시키지 못해 추가 질문 드립니다. condition1을 선언하고, 중괄호 안에 있는 {조건4, 조건5, 조건6}이 순서대로 만족하는 것까지 condition1에 넣고 싶습니다. condition1 = 조건1 and 조건2 and 조건3 then {조건4, 조건5, 조건6}; 이런 식으로 만들어서 저장해놓고 싶은데 잘 안되네요. 조건이 많다보니 알려주신대로 아래 식에 "동일조건으로 10캔들내 재매수 금지"를 넣으려는데 잘 안됩니다. 그래서 순서대로 만족하는 조건들까지 condition1에 저장해놓고 싶습니다. #3 아래식대로 돌려보면 최종조건만 만족하면 진입이 되고 있습니다. 또다른 문제가 있어보입니다. var:condition1(false),T(0); var:HH50(0),LL50(0),HH위치(0),LL위치(0); HH50 = H==highest(H,50); LL50 = L==lowest(L,50); HH위치 = NthHighestBar(1,H,50); LL위치 = NthLowestBar(1,L,50); # 10캔들내 50캔들의 최고점이 한번이상 있고, HH위치가 LL위치보다 현재봉에 가깝다면 # 10캔들내 50캔들의 최고점이 없는데도 실행이 됩니다. if CountIF(HH50==H,10)>0 && HH위치<LL위치 && crossup(5이평,20이평) Then # 중괄호안에 있는 조건식들이 과거에 일어난 일인데요. 현재봉 기준으로 쓰여 있습니다. 이대로 써도 되나요? countif를 써서 과거 10캔들내에 있었다로 바꿔줘야 되나요? { if crossup(5이평[1],20이평[1]) != false Then T=1; if crossdown(5이평,20이평) Then T=2; } if crossup(C, 이평20) Then Buy(); #4 수식이나 문장을 주석처리할 때 아래 모두를 처리하는 방법은 알겠는데요. /* 중간에 끼어있는 부분의 주석처리는 어떻게 하나요? 줄마다 # 붙이는 방법 말고 드래그 해놓고 한번에 여러줄을 주석처리하는 방법을 알고 싶습니다. #5 var : 이탈20(-1),돌파60(-1); 이평20 = Ema(C,20); if Crossdown(c,이평20) Then 이탈20 = 0; if 이탈20 >= 0 Then 이탈20 = 이탈20 +1; 이평60 = Ema(C,60); if CrossUp(c,이평60) Then 돌파60 = 0; if 돌파60 >= 0 Then 돌파60 = 돌파60 +1; if 이탈20 > 돌파60 then # 이탈20 있고나서 돌파60이 있었다. 이게 맞는건가요? # 여러종류의 위치를 찾아서 저장해놓고 쓰려고 하는데요. 모두 위와같은 방법으로 하면 되나요? 혹시 더 간단한 방법은 없나요? # 위의 질문들과 비슷한 내용입니다. 예를 들어서 해보면 이해하기가 쉬울 거 같아서요. #1 20이평 > 60이평이다. #2 20캔들내 50캔들중 최고점이 있었다. #3 그리고 종가가 20이평 아래로 내려왔다. #4 3이후 종가가 20이평 위로 올라가지 않았다. #5 60이평을 이탈했다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-04-26 14:57:46

> 산골소년 님이 쓴 글입니다. > 제목 : 문의드립니다. > 늘 고맙습니다. #1 아래 값들 중 가장 높은 값과 낮은 값을 찾고 싶습니다. 리스트에 여러값들을 넣어놓고 그 리스트내에 있는 값들중 가장 높은값과 낮은 값을 찾고자 합니다. 예)이평5, 이평10, 이평20, 이평60 캔들이 위 값들중 가장 높은 값을 돌파했다. 낮은 값을 이탈했다. 이런 것을 만들려고 합니다. #2 어제 알려주신 것(86902) 중 1번을 제대로 소화시키지 못해 추가 질문 드립니다. condition1을 선언하고, 중괄호 안에 있는 {조건4, 조건5, 조건6}이 순서대로 만족하는 것까지 condition1에 넣고 싶습니다. condition1 = 조건1 and 조건2 and 조건3 then {조건4, 조건5, 조건6}; 이런 식으로 만들어서 저장해놓고 싶은데 잘 안되네요. 조건이 많다보니 알려주신대로 아래 식에 "동일조건으로 10캔들내 재매수 금지"를 넣으려는데 잘 안됩니다. 그래서 순서대로 만족하는 조건들까지 condition1에 저장해놓고 싶습니다. #3 아래식대로 돌려보면 최종조건만 만족하면 진입이 되고 있습니다. 또다른 문제가 있어보입니다. var:condition1(false),T(0); var:HH50(0),LL50(0),HH위치(0),LL위치(0); HH50 = H==highest(H,50); LL50 = L==lowest(L,50); HH위치 = NthHighestBar(1,H,50); LL위치 = NthLowestBar(1,L,50); # 10캔들내 50캔들의 최고점이 한번이상 있고, HH위치가 LL위치보다 현재봉에 가깝다면 # 10캔들내 50캔들의 최고점이 없는데도 실행이 됩니다. if CountIF(HH50==H,10)>0 && HH위치<LL위치 && crossup(5이평,20이평) Then # 중괄호안에 있는 조건식들이 과거에 일어난 일인데요. 현재봉 기준으로 쓰여 있습니다. 이대로 써도 되나요? countif를 써서 과거 10캔들내에 있었다로 바꿔줘야 되나요? { if crossup(5이평[1],20이평[1]) != false Then T=1; if crossdown(5이평,20이평) Then T=2; } if crossup(C, 이평20) Then Buy(); #4 수식이나 문장을 주석처리할 때 아래 모두를 처리하는 방법은 알겠는데요. /* 중간에 끼어있는 부분의 주석처리는 어떻게 하나요? 줄마다 # 붙이는 방법 말고 드래그 해놓고 한번에 여러줄을 주석처리하는 방법을 알고 싶습니다. #5 var : 이탈20(-1),돌파60(-1); 이평20 = Ema(C,20); if Crossdown(c,이평20) Then 이탈20 = 0; if 이탈20 >= 0 Then 이탈20 = 이탈20 +1; 이평60 = Ema(C,60); if CrossUp(c,이평60) Then 돌파60 = 0; if 돌파60 >= 0 Then 돌파60 = 돌파60 +1; if 이탈20 > 돌파60 then # 이탈20 있고나서 돌파60이 있었다. 이게 맞는건가요? # 여러종류의 위치를 찾아서 저장해놓고 쓰려고 하는데요. 모두 위와같은 방법으로 하면 되나요? 혹시 더 간단한 방법은 없나요? # 위의 질문들과 비슷한 내용입니다. 예를 들어서 해보면 이해하기가 쉬울 거 같아서요. #1 20이평 > 60이평이다. #2 20캔들내 50캔들중 최고점이 있었다. #3 그리고 종가가 20이평 아래로 내려왔다. #4 3이후 종가가 20이평 위로 올라가지 않았다. #5 60이평을 이탈했다.