커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

지표식 질문

HIGHEST(H , 10 )*0.5 키움 지표 예스수식으로부탁합니다.
프로필 이미지
ujkl
2025-04-08
304
글번호 189935
지표
답변완료

문의드립니다.

해외선물에서 시가 돌파시 매수/매도 시스템 매매에 있어서 장시작하고 바로 상승하면 시가 돌파를 할 수 없게 됩니다. 이경우 장시작하고 몇 봉 내는 시가 돌파가 안되더라도 예외적으로 매수/매도가 되게 만들고 싶습니다. 예를 들어 장 시작하고 5봉 이내에서 시가 기준으로 50틱 이상 상승/하락하는 봉이 나오면(1개 봉이 50틱 이상이 아니라 시가기준 50틱 간격입니다) 즉시 매수/매도, 6봉 부터는 시가 돌파시에만 적용되게 부탁 드립니다.
프로필 이미지
카르마다
2025-04-08
276
글번호 189934
시스템
답변완료

문의 드립니다.

안녕하세요 항상 감사드립니다. 아래의 조건으로 매매 시스템을 부탁드립니다. 일봉기준 가. 매수조건 1. 최근 20일 고점대비 20% 이상 하락한 이후 2. 다시 20일 이평선을 상향 돌파할때 3. 당일 거래량이 20일 평균 거래량의 이상 일때 *세가지 조건에 부합될때 매수 진입 나. 매도조건 1. 수익이 30% 도달 시 매도 2. 손실이 10% 도달 시 손절 또는 20일 이평선 아래로 이탈하면 자동 매도
프로필 이미지
가자아이
2025-04-08
323
글번호 189933
지표

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2025-04-08
9
글번호 189932
지표
답변완료

부탁드립니다

아래수식은 수식지왕님의 수식입니다 이수식의 파동선을 가격봉에 나타내는 수식으로 변경부탁드랍니다 Input:Period(9),변동폭(20),선색(Red),선두께(2); Var:rsiVal(0),TL1(0),신규여부(0),고점(1),저점(-1),신규(1),연장(2); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# rsiVal = RSI(Period); Plot1(rsiVal, "RSI"); PlotBaseLine1(30, "기준선 30"); PlotBaseLine2(70, "기준선 70"); If CurrentBar > 0 Then Value1 = BrokenLine2(rsiVal,rsiVal,변동폭,고,저,신규여부); If Value1 == 고점 Then { If 신규여부 == 신규 Then TL1 = TL_New_Self(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); If 신규여부 == 연장 Then TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); } If Value1 == 저점 Then { If 신규여부 == 신규 Then TL1 = TL_New_Self(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 신규여부 == 연장 Then TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); } TL_SetColor(TL1,선색); TL_SetSize(TL1,선두께);
프로필 이미지
파생돌이
2025-04-08
311
글번호 189931
지표
답변완료

수식수정 부탁드립니다

아래 내용을 보면 날짜가 바뀌면 초기화 시키는데 초기화 없이 그냥 INPUT : 적용시간 으로 받아서 현재 시간으로 부터 적용시간 만큼으로 변환 가능할깡? input: 타임(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),t1(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); tick = _TickValue(); if bdate != bdate[1] then //매일 첫번째 봉에서 해당 변수들의 값을 0으로 초기화 { t1 = TimeToMinutes(sTime); 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-t1 )/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); //배열변수의 첨자는 정수이어야 함 //처음부터 int()를 생각해 냈던 것은 아니고 디버그 과정에서 알게 됨 range_u = mdl_arr; range_d = mdl_arr; //MessageLog(",%.2f",range_u); // 전체 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),"가치영역(상)"); 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");
프로필 이미지
까시서방
2025-04-08
366
글번호 189928
지표
답변완료

re re : 수식 문의드립니다.

var : AA(-1); -1로 하면 검색이 안되던데 변수가 0이 아닌가요? 추가로 3분봉 500봉 기준 검색입니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 문의드립니다. > 안녕하세요 예스스탁입니다. var : AA(-1); if cnt == 1 and cnt[1] == 0 and 당일 Then AA = 0; if count >= 0 and 기준선<L && C<O Then AA = count+1; 즐거운 하루되세요 > 꿀떡 님이 쓴 글입니다. > 제목 : 수식 문의드립니다. > AA = CountSince(cnt==1 && cnt[1]==0 && 당일, 기준선 <L && C<O); 변환 바랍니다.
프로필 이미지
꿀떡
2025-04-08
282
글번호 189927
종목검색
답변완료

질문드리겠습니다

추세선 색상에 대해서 질문 하나 부탁드리겠습니다 아래식에서 최근 5개 추세선은 컬러를 red로 변경하고자 합니다 감사합니다 For cnt = 45 DownTo 1 { # ttl[cnt] =ttl[cnt-1]; tttl[cnt] = tttl[cnt-1]; sd[cnt] =sd[cnt-1]; st[cnt] =st[cnt-1]; } TL_SetExtRight(ttl[10],False); # ttl[0]=tl_new(sDate,sTime,cc[0],NextBarSdate,NextBarStime,CC[0]); TL_SetSize(ttl[0],1); TL_SetExtRight(ttl[0],true); sd[0] = sDate; st[0] = sTime; TL_SetExtRight(tttl[30],False); tttl[0]=tl_new(sd[1],st[1],aa[0],sd[0],st[0],aa[0]); TL_SetSize(tttl[0],0); TL_SetDrawMode(tttl[0],0); TL_Delete(tttl[30]); TL_SetExtRight(tttl[0],true);
프로필 이미지
yamu
2025-04-08
323
글번호 189920
지표
답변완료

수식문의

안녕하세요? 수식 두개 부탁드립니다. 수식 1: 스토캐스틱이 시그널선을 상방으로 교차한 시점들을 기준으로 다이버전스가 발생한 종목들을 검색하고 싶습니다. 이때 1. 첫번째 교차가 일어났을 때는 교차 직전에 스토캐스틱이20선 아래여야 하고, 2. 첫번째 교차와 두번째 교차 사이는 k(10)봉 이상이 경과되어야 합니다. 3. 다이버전스란 말은 첫교차시점보다 두번째 교차시, 스토캐스틱값은 상승하고, C값은 하락했다는 뜻입니다. 수식 2: 위랑 비슷한데 이번에는 교차가 세번 일어납니다. 즉, 각 교차 사이는 k(10)봉 이상, 스토캐스틱은 점점 상승, C 는 점점 하락 첫번째 교차직전, 스톡캐스틱 값은 20 이하. 감사합니다.
프로필 이미지
에구머니
2025-04-08
396
글번호 189919
검색

고성 님에 의해서 삭제되었습니다.

프로필 이미지
고성
2025-04-08
2
글번호 189918
시스템