커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

분봉에서 1봉전 검색

파워종목검색에서 검색조건에 부합하는 분봉의 다음 봉에 즉, 1봉전에 조건부합되는 것을 다음봉에 검색되게 하려면 사용자검색조건에서 예스랭기지 수식으로 작성한 조건식에 기준봉을 1로 놔야 하나요?
프로필 이미지
ksks
2023-11-06
791
글번호 173787
종목검색
답변완료

수식검색

일목균형표 9 26 52 0봉전 0봉전 캔들이 25봉전 선행2 를 고가 or 시가 가 선행2 (지금캔들자리)를 돌파 하는 종목을 찾고 싶습니다 또 한번 부탁 드립니다 항 상 감사드립니다~~
프로필 이미지
쌍둥이
2023-11-06
1206
글번호 173786
종목검색
답변완료

제차 문의드립니다

보내주신 검색식을 적용하여 검색해보니 체결강도가 100이하인 종목도 같이 검색되는데 원인를 모르겠읍니다 확인부탁 드립니다. var1 = Upvol/DownVol*100; if var1 > 100 Then Find(1);
프로필 이미지
멍석
2023-11-06
987
글번호 173785
검색
답변완료

문의

input:intervals(15); var:arr(0),k(0),tick(0),chk_cnt(0),ttm(0),t_val(0),max_tpo(0),tot_tpo(0), sum(0),acc(0),mdl_prc(0),mdl_arr(0),range_u(0),range_d(0),base(0), cal_tpo(0),up_tpo(0),dn_tpo(0),up_tail_u(0),up_tail_d(0),dn_tail_u(0),dn_tail_d(0); array:price_u[100](0),price_m[100](0),price_d[100](0), status_u[100](0),status_m[100](0),status_d[100](0), tpo_u[100](0),tpo_m[100](0),tpo_d[100](0); if CodeCategoryEX() == 11 then //Kospi 주식 { if C >= 500000 then tick = 1000; else if C >= 100000 then tick = 500; else if C >= 50000 then tick = 100; else if C >= 10000 then tick = 50; else if C >= 5000 then tick = 10; else tick = 5; } if CodeCategoryEX() == 12 then //Kosdaq 주식 { if C >= 50000 then tick = 100; else if C >= 10000 then tick = 50; else if C >= 5000 then tick = 10; else tick = 5; } if CodeCategoryEX() == 21 then //Kospi200 선물 tick = 0.05; if CodeCategoryEX() == 31 or CodeCategoryEX() == 32 then //Kospi200 콜옵션,풋옵션 { if C >= 3.0 then tick = 0.05; else tick = 0.01; } if dayindex()==0 then //매일 첫번째 봉에서 해당 변수들의 값을 0으로 초기화 { for arr = 0 to 99 { price_u[arr] = 0; price_m[arr] = 0; price_d[arr] = 0; status_u[arr] = 0; status_m[arr] = 0; status_d[arr] = 0; tpo_u[arr] = 0; tpo_m[arr] = 0; tpo_d[arr] = 0; } max_tpo = 0; tot_tpo = 0; sum = 0; acc = 0; mdl_prc = 0; mdl_arr = 0; range_u = 0; range_d = 0; base = dayopen() + tick * 149; //300개 가격대중 최상단에 해당하는 가격 price_u[0] = base; //지수 배열 상단 for arr = 1 to 99 { price_u[arr] = price_u[arr-1] - tick; } price_m[0] = price_u[99] - tick; //지수 배열 중단 for arr = 1 to 99 { price_m[arr] = price_m[arr-1] - tick; } price_d[0] = price_m[99] - tick; //지수 배열 하단 for arr = 1 to 99 { price_d[arr] = price_d[arr-1] - tick; } } ttm = TimeToMinutes(stime); //시간을 30분,15분,10분등으로 나누기 쉽도록 환산 t_val = int((ttm-540)/interval) + 1; //540은 09:00. 9시를 빼고 나서 원하는 시간단위로 나눈다 for arr = 0 to 99 { if l <= price_u[arr] and price_u[arr] <= h then { if status_u[arr] < t_val then //A가 찍혔는데 또 A를 찍을 필요가 없음. 그걸 확인 { status_u[arr] = t_val; //중복을 막기 위해 마지막 time value 저장 tpo_u[arr] = tpo_u[arr] + 1; //현재 가격대의 TPO 누적 tot_tpo = tot_tpo + 1; //전체 TPO 누적 if max_tpo < tpo_u[arr] then //TPO 최빈값 { max_tpo = tpo_u[arr]; sum = 0; //TPO가 동일한 가격대가 여러가격일 경우 acc = 0; //평균값을 구하기 위해 가격 누적변수와 가격대 수 초기화 } if max_tpo == tpo_u[arr] then //최빈값과 동일하면 { sum = sum + price_u[arr]; //해당 가격을 누적 acc = acc + 1; //가격대 개수 누적 } } } //3개의 동일 성격을 지닌 배열에 대해 한꺼번에 처리 못하므로 동일 루틴으로 3회 처리 if l <= price_m[arr] and price_m[arr] <= h then { if status_m[arr] < t_val then { status_m[arr] = t_val; tpo_m[arr] = tpo_m[arr] + 1; tot_tpo = tot_tpo + 1; if max_tpo < tpo_m[arr] then { max_tpo = tpo_m[arr]; sum = 0; acc = 0; } if max_tpo == tpo_m[arr] then { sum = sum + price_m[arr]; acc = acc + 1; } } } if l <= price_d[arr] and price_d[arr] <= h then { if status_d[arr] < t_val then { status_d[arr] = t_val; tpo_d[arr] = tpo_d[arr] + 1; tot_tpo = tot_tpo + 1; if max_tpo < tpo_d[arr] then { max_tpo = tpo_d[arr]; sum = 0; acc = 0; } if max_tpo == tpo_d[arr] then { sum = sum + price_d[arr]; acc = acc + 1; } } } } mdl_prc = round(sum/acc/tick,0)*tick; //평균하여 중심가격으로 삼음 mdl_arr = int((base-mdl_prc)/tick); //배열변수의 첨자는 정수이어야 함 range_u = mdl_arr; range_d = mdl_arr; // 전체 TPO의 70%가 될 때까지 상하값을 비교하면서 누적 cal_tpo = iff(mdl_arr<100,tpo_u[mdl_arr],iff(mdl_arr<200,tpo_m[mdl_arr-100],tpo_d[mdl_arr-200])); for k = 0 to 150 { // range_u는 한단위씩 위로(-1), range_d는 한단위씩 아래로(+1) // TPO가 많은 쪽의 TPO를 먼저 누적한다 var2 = iff(range_u-1<100,tpo_u[range_u-1],iff(range_u-1<200,tpo_m[range_u-1-100],tpo_d[range_u-1-200])); var3 = iff(range_d+1<100,tpo_u[range_d+1],iff(range_d+1<200,tpo_m[range_d+1-100],tpo_d[range_d+1-200])); if var2 > var3 then { cal_tpo = cal_tpo + var2; range_u = range_u - 1; } else if var2 < var3 then { cal_tpo = cal_tpo + var3; range_d = range_d + 1; } else if var2 == var3 and var2 > 0 and var3 > 0 then { cal_tpo = cal_tpo + var2; range_u = range_u - 1; } if cal_tpo >= tot_tpo * 0.7 or var2 + var3 == 0 then k = 150; } up_tpo = 0; //중심가격의 상위 TPO if tpo_u[0] == 1 then up_tail_u = 0; //윗꼬리 상단 경계선, 0행부터 1이면 윗꼬리 상단은 0행이 됨 else up_tail_u = 299; //윗꼬리를 못 찾을 경우를 대비해서 상단과 하단의 관계를 역으로 만듬 //꼬리 경계값을 찾는 루틴을 성공적으로 마치면 상단값 < 하단값 성립 up_tail_d = 0; //윗꼬리 하단 경계선 //0행부터 중심가격 이전행까지 아래로 내려가면서 for arr = 0 to mdl_arr-1 { //현재 행의 tpo 값이 0이고 다음 행의 tpo값이 1이면 1의 시작으로 보고 다음 행의 행번호를 윗꼬리 상단으로 봄 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])) == 0 and iff(arr+1<100,tpo_u[arr+1],iff(arr+1<200,tpo_m[arr-100+1],tpo_d[arr-200+1])) == 1 then up_tail_u = arr + 1; //윗꼬리 상단 경계선 array //현재 행의 tpo 값이 1이고 다음 행의 tpo값이 1보다 크면 현재 행의 행번호를 윗꼬리 하단으로 봄 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])) == 1 and iff(arr+1<100,tpo_u[arr+1],iff(arr+1<200,tpo_m[arr-100+1],tpo_d[arr-200+1])) > 1 and up_tail_d == 0 then //조건을 만족하는 경우가 여러번 발생하는데 up_tail_d가 0일때만 //즉, 처음에 찾아진 값만 유효한 것로 봄 up_tail_d = arr; //윗꼬리 하단 경계선 array //TPO가 1보다 큰 상위 TPO 누적 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])) > 1 then up_tpo = up_tpo + iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])); } dn_tpo = 0; //중심가격의 하위 TPO dn_tail_u = 299; //아래꼬리 상단 경계선 if tpo_d[99] == 1 then dn_tail_d = 299; else dn_tail_d = 0; //아래꼬리 하단 경계선 //299행부터 중심가격 이전행까지 위로 올라가면서 for arr = 299 downto mdl_arr+1 { //TPO가 1보다 큰 하위 TPO 누적 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_u[arr-100],tpo_d[arr-200])) > 1 then dn_tpo = dn_tpo + iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])); //현재 행의 tpo 값이 1이고 윗행의 tpo값이 1보다 크면 현재 행의 행번호를 아랫꼬리 상단으로 봄 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])) == 1 and iff(arr-1<100,tpo_u[arr-1],iff(arr-1<200,tpo_m[arr-100-1],tpo_d[arr-200-1])) > 1 and dn_tail_u == 299 then dn_tail_u = arr; //아래꼬리 상단 경계선 array //현재 행의 tpo 값이 0이고 윗행의 tpo값이 1이면 1의 시작으로 보고 윗행의 행번호를 아랫꼬리 하단으로 봄 if iff(arr<100,tpo_u[arr],iff(arr<200,tpo_m[arr-100],tpo_d[arr-200])) == 0 and iff(arr-1<100,tpo_u[arr-1],iff(arr-1<200,tpo_m[arr-100-1],tpo_d[arr-200-1])) == 1 then dn_tail_d = arr - 1; //아래꼬리 하단 경계선 array } plot1(mdl_prc,"중심가격"); plot2(base-(range_u*tick),"가치영역(상)"); //0행의 값 base가 가장 큰 값이므로 해당 행(row)에 //단위(tick)을 곱해서 차감 plot3(base-(range_d*tick),"가치영역(하)"); if up_tail_u <= up_tail_d then //꼬리의 경계값이 정상적으로 찾아졌다면 { plot4(base-(up_tail_u*tick),"윗꼬리상단"); //점그래프로 표현 plot5(base-(up_tail_d*tick),"윗꼬리하단"); } if dn_tail_u <= dn_tail_d then { plot6(base-(dn_tail_u*tick),"아랫꼬리상단"); plot7(base-(dn_tail_d*tick),"아랫꼬리하단"); } //plot8(up_tpo,"상위TPO"); //plot9(dn_tpo,"하위TPO"); 당일 오전 8시 45분기준으로 부탁드립니다
프로필 이미지
레전드
2023-11-06
892
글번호 173784
지표
답변완료

수식부탁드립니다

아래수식은 파동수식입니다 Input: Period1(1),Period2(10),Period3(20),length(2),종가사용여부(0),파동선두께(2),파동선두께고저선(1),수치표시(1); Variables: TLen1(0),TRIma1(0),TLen2(0),TRIma2(0),TLen3(0),TRIma3(0),j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""), TL1(0),Text1(0) ,tl2(0),tl3(0),tl4(0),tl5(0),tl6(0),T(0),sumv(0),sumi(0),mav(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# TLen1 = Ceiling((Period1 + 1) * .5); TRIma1 =Ema(Ema(C, TLen1), TLen1); TLen2 = Ceiling((Period2 + 1) * .5); TRIma2 =Ema(Ema(C, TLen2), TLen2); TLen3 = Ceiling((Period3 + 1) * .5); TRIma3 =Ema(Ema(C, TLen3), TLen3); HH = IFF(종가사용여부==1,C,H); LL = IFF(종가사용여부==1,C,L); If Index == 0 Then { 고[1,1] = HH; 저[1,1] = LL; } Condition1 = Highest(HH,length) == HH and 최종고가 <> HH; Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL; 처리구분 = ""; If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생 { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 Then 처리구분 = "고점처리"; Else If Condition2 Then 처리구분 = "저점처리"; #==========================================# If 처리구분 == "고점처리" Then { T = 1; 최종고가 = HH; // 신규고점을 체크하기 위해 저장 If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); Text_SetStyle(Text1, 0, 1); Text_SetColor(Text1, Red); Text_SetSize(Text1, 16); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,White); TL_SetSize(TL2,파동선두께고저선); TL_SetColor(TL2,Rgb(129,129,129)); } Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현 { 고[1,1] = HH; 고[1,2] = Index; 고[1,3] = sDate; 고[1,4] = sTime; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); TL_SetEnd(TL2,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); Text_SetString(Text1,NumToStr(고[1,1],2)); } } 최종꼭지점 = "고점"; } #==========================================# If 처리구분 == "저점처리" Then { T = -1; 최종저가 = LL; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 1, 0); Text_SetColor(Text1, Blue); Text_SetSize(Text1, 16); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,White); TL_SetSize(TL2,파동선두께고저선); TL_SetColor(TL2,Rgb(129,129,129)); } Else If 저[1,1] > LL then { 저[1,1] = LL; 저[1,2] = Index; 저[1,3] = sDate; 저[1,4] = sTime; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } 이 수식을 이용해서 상승파동이 생성된 상태에서 지수가 전저점을 crossdown할때 하삼각표시가 발생되는 수식을 부탁드립니다 여기서 상승파동이 생성된상태는 첨부그림에서 처럼 전저점332.95 가 전전저점 332.65보다 상승한상태이며 이상태에서 전저점을 crossdown한다는 것은 지수가 전저점332.95를 crossdown하는것을 말합니다 부탁드리겠습니다 감사합니다
프로필 이미지
bestkim
2023-11-06
1317
글번호 173783
지표
답변완료

지표 수식 부탁드립니다.

키움 분봉에서의 4등분선 수식인데 예스랭귀지 지표로 부탁드립니다. 거래금액=(O+C+H+L)/4*V ; 누적금액=Sum(거래금액) ; 당일누적=valuewhen(1,date!=date(1),누적금액(1)) ; 당일금액=누적금액-당일누적 ; 누적수량=Sum(V) ; 당일누적수량=valuewhen(1,date!=date(1),누적수량(1)) ; 당일수량=누적수량-당일누적수량 ; D평단=당일금액/당일수량 ; 상=DayHigh() ; 하=DayLow() ; 중=D평단 ; 중상=(상+중)/2 ; 중하=(하+중)/2 ; 감사합니다.
프로필 이미지
사랑민
2023-11-06
980
글번호 173782
지표
답변완료

부탁드립니다

1. 종가가 당일 시가 및 전일 최고가를 넘어서면 빨강색으로, 당일 시가 및 전일 최저가 아래로 떨어지면 파란색으로 구현해 주세요 2. 전일 최고가, 전일 최저가, 전일 종가, 전일 최고가와 전일 최저가의 중간값, 당일 시가, 그리고 전일 종가에 전일 진동폭(전일 최고가-전일 최저가)을 합한 값, 전일 종가에서 전일 진동폭(전일 최고가-전일 최저가)을 뺀 값을 수평선 지표로 각 구현해 주세요 고맙습니다.
프로필 이미지
서태공
2023-11-06
755
글번호 173781
강조
답변완료

재문의 드립니다.

안녕하세요. 항상 감사 드립니다. 작성해주신 1번, 2번을 아래 종목 검색 if문 안에 넣코자 하는데 문법 에러가나서 도움을 요청 합니다. 수고 하세요 1번 .#고가가 저가대비 20%이상이고 종가는 고가대비 -15%이상인 봉이 2봉 중 1개 이상이면 true Condition1 = CountIf(H>=L*1.20 and C <= H*0.85,2) >= 1; 2. #3연속 음봉이고 첫음봉시가대비 마지막음봉 종가는 -15%이상 Condition2 = CountIf(C<O,3) == 3 and C <= O[2]*0.85; #전봉기준 Condition1이 true이거나 Condition2가 true if Condition1[1] == true or Condition2[1] == true Then find(1); ------------------------------------------------------------------------ 종목검색 if (highest(H,20)[1] >= lowest(L,20)[1]*1.80) and 1번 or 2번 (C >= C[1]) and (V >= V[1]*1.0) and (O <= C[1]*1.0) and (C >= O*1.0) and (CountIf(H >=C[1]*1.25,200) >= 1) and (CountIf(V >=V[1]*10,200) >= 1) Then Find(1);
프로필 이미지
하루삼프로
2023-11-06
849
글번호 173780
종목검색

2685up 님에 의해서 삭제되었습니다.

프로필 이미지
2685up
2023-11-06
13
글번호 173779
시스템
답변완료

문의 드립니다.

주식에서 당일 시가 위에 당일 중심선이 있을 때 아래 식을 적용하고자 합니다. 그리고 금액에 맞게 원하는 주식 수를 입력하기를 원하는데 가능하시면 부탁드립니다. (일반적으로 주식 매매할 때 1계약으로만 진행되어 100만원이라 금액 정도의 수량을 거래하기를 원하는 것입니다) var1 = (DayHigh+DayLow)/2; if CrossUp(C,Var1) Then Buy(); if CrossDown(c,Var1) Then ExitLong();
프로필 이미지
선물대장
2023-11-06
604
글번호 173778
시스템