답변완료
아래의 트레이디이뷰 수식을 변환부탁드립니다.
//@version=4study("ATR Breakouts", overlay=true)per = input(50, title="Length")aper = input(20, title="Atr Length")LongEntry = ema(close, per) + 2 * atr(aper)LongStopLoss = ema(close, per) + atr(aper)ShortEntry = ema(close, per) - 2 * atr(aper)ShortStopLoss = ema(close, per) - atr(aper)plot(LongEntry, "Long Entry Threshold", color=color.green, style=plot.style_line)plot(LongStopLoss, "Long Stop Loss", color=color.blue, style=plot.style_line)plot(ShortEntry, "Short Entry Threshold", color=color.red, style=plot.style_line)plot(ShortStopLoss, "Short Stop Loss", color=color.black, style=plot.style_line)
2025-11-05
159
글번호 227658
지표
답변완료
종목검색 오류 문의 드립니다.
/* 조건식 변환본 (예스트레이더 종목검색용) 원식: A and B and C and ((D and E and F and G and H) or (M and J and K)) and N and O and P and Q*/var : A(false), B(false), Cc(false), Dd(false), Ee(false), Ff(false);var : Gg(false), Hh(false), Mm(false), Jj(false), Kk(false);var : Nn(false), Oo(false), Pp(false), Qq(false);var : d(false);/* A: 1봉전 종가대비 0봉전 고가등락률 15% 이상 */A = (H - C[1]) / C[1] * 100 >= 15;/* B: 0봉전 시가 < 0봉전 종가 */B = O < C;/* C: [일]거래대금(일:백만) 20000이상 999999999이하 → 원단위로 변환: 20000000000 ~ 999999999000000*/Cc = m >= 20000000000 and m <= 999999999000000;/* D: [일]3봉전 5봉 평균거래량 100000이상 999999999이하 */Dd = ma(V,5)[3] >= 100000 and ma(V,5)[3] <= 999999999;/* E: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Ee = (C - C[1]) / C[1] * 100 <= 29.65;/* F: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Ff = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* G: 2봉전 시가 < 2봉전 종가 */Gg = O[2] < C[2];/* H: 3봉전 종가대비 2봉전 고가등락률 15% 이상 */Hh = (H[2] - C[3]) / C[3] * 100 >= 15;/* M: [일]4봉전 5봉 평균거래량 100000이상 999999999이하 */Mm = ma(V,5)[4] >= 100000 and ma(V,5)[4] <= 999999999;/* J: 3봉전 시가 < 3봉전 종가 */Jj = O[3] < C[3];/* K: 4봉전 종가대비 3봉전 고가등락률 15% 이상 */Kk = (H[3] - C[4]) / C[4] * 100 >= 15;/* N: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Nn = (C - C[1]) / C[1] * 100 <= 29.65;/* O: 2봉전 종가대비 1봉전 종가등락률 29.65% 이하 */Oo = (C[1] - C[2]) / C[2] * 100 <= 29.65;/* P: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Pp = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* Q: 4봉전 종가대비 3봉전 종가등락률 29.65% 이하 */Qq = (C[3] - C[4]) / C[4] * 100 <= 29.65;/* 최종식 */d = A and B and Cc and ( (Dd and Ee and Ff and Gg and Hh) or (Mm and Jj and Kk) ) and Nn and Oo and Pp and Qq;/* 신호 발생 시 종목 출력 */if d then Find(1);위 조건식으로 검색을 하면 9월 24일에 '아이윈플러스, 뉴로핏, 모니터랩' 이렇게 3 종목이 검색이 됩니다.그런데 위 조건식을 30일치를 한번에 검색할 수 있게 아래와 같이 변형을 하면 9월 24일에 '뉴로핏' 한종목만 검색이 됩니다.이와 같은 현상이 9월 24일 뿐만이 아니라 랜덤으로 다른 날짜에도 발생을 합니다.왜 이런 현상이 발생할까요?아래는 위 조건식을 30일치 한번에 검색하도록 변형한 것입니다./* 조건식 변환본 (최근 30일치 자동검색 버전) 원식: A and B and C and ((D and E and F and G and H) or (M and J and K)) and N and O and P and Q*/var : A(false), B(false), Cc(false), Dd(false), Ee(false), Ff(false);var : Gg(false), Hh(false), Mm(false), Jj(false), Kk(false);var : Nn(false), Oo(false), Pp(false), Qq(false);var : d(false);var : VALUE1(0);/* A: 1봉전 종가대비 0봉전 고가등락률 15% 이상 */A = (H - C[1]) / C[1] * 100 >= 15;/* B: 0봉전 시가 < 0봉전 종가 */B = O < C;/* C: [일]거래대금(일:백만) 20000이상 999999999이하 → 원단위로 변환: 20000000000 ~ 999999999000000*/Cc = m >= 20000000000 and m <= 999999999000000;/* D: [일]3봉전 5봉 평균거래량 100000이상 999999999이하 */Dd = ma(V,5)[3] >= 100000 and ma(V,5)[3] <= 999999999;/* E: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Ee = (C - C[1]) / C[1] * 100 <= 29.65;/* F: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Ff = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* G: 2봉전 시가 < 2봉전 종가 */Gg = O[2] < C[2];/* H: 3봉전 종가대비 2봉전 고가등락률 15% 이상 */Hh = (H[2] - C[3]) / C[3] * 100 >= 15;/* M: [일]4봉전 5봉 평균거래량 100000이상 999999999이하 */Mm = ma(V,5)[4] >= 100000 and ma(V,5)[4] <= 999999999;/* J: 3봉전 시가 < 3봉전 종가 */Jj = O[3] < C[3];/* K: 4봉전 종가대비 3봉전 고가등락률 15% 이상 */Kk = (H[3] - C[4]) / C[4] * 100 >= 15;/* N: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Nn = (C - C[1]) / C[1] * 100 <= 29.65;/* O: 2봉전 종가대비 1봉전 종가등락률 29.65% 이하 */Oo = (C[1] - C[2]) / C[2] * 100 <= 29.65;/* P: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Pp = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* Q: 4봉전 종가대비 3봉전 종가등락률 29.65% 이하 */Qq = (C[3] - C[4]) / C[4] * 100 <= 29.65;/* 최종식 */d = A and B and Cc and ( (Dd and Ee and Ff and Gg and Hh) or (Mm and Jj and Kk) ) and Nn and Oo and Pp and Qq;/* 조건 충족일 기록 */if d then VALUE1 = sDate;/* 최근 30일 내 조건이 한 번이라도 발생한 종목만 출력 */if CountIf(d == true, 30) >= 1 then Find(VALUE1);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~참고로, AI 를 통해서 문제를 찾아보려고 아래와 같이 변형도 해 보았습니다만, 같은 증상이 발생하였습니다./* 조건식 변환본 (최근 30일치 한 번에 검색 – AccumN 사용) 원식: A and B and C and ((D and E and F and G and H) or (M and J and K)) and N and O and P and Q*/var : A(false), B(false), Cc(false), Dd(false), Ee(false), Ff(false);var : Gg(false), Hh(false), Mm(false), Jj(false), Kk(false);var : Nn(false), Oo(false), Pp(false), Qq(false);var : d(false);var : cnt30(0);/* A: 1봉전 종가대비 0봉전 고가등락률 15% 이상 */A = (H - C[1]) / C[1] * 100 >= 15;/* B: 0봉전 시가 < 0봉전 종가 */B = O < C;/* C: [일]거래대금(일:백만) 20000이상 999999999이하 → 원단위로 변환: 20000000000 ~ 999999999000000*/Cc = m >= 20000000000 and m <= 999999999000000;/* D: [일]3봉전 5봉 평균거래량 100000이상 999999999이하 */Dd = ma(V,5)[3] >= 100000 and ma(V,5)[3] <= 999999999;/* E: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Ee = (C - C[1]) / C[1] * 100 <= 29.65;/* F: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Ff = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* G: 2봉전 시가 < 2봉전 종가 */Gg = O[2] < C[2];/* H: 3봉전 종가대비 2봉전 고가등락률 15% 이상 */Hh = (H[2] - C[3]) / C[3] * 100 >= 15;/* M: [일]4봉전 5봉 평균거래량 100000이상 999999999이하 */Mm = ma(V,5)[4] >= 100000 and ma(V,5)[4] <= 999999999;/* J: 3봉전 시가 < 3봉전 종가 */Jj = O[3] < C[3];/* K: 4봉전 종가대비 3봉전 고가등락률 15% 이상 */Kk = (H[3] - C[4]) / C[4] * 100 >= 15;/* N: 1봉전 종가대비 0봉전 종가등락률 29.65% 이하 */Nn = (C - C[1]) / C[1] * 100 <= 29.65;/* O: 2봉전 종가대비 1봉전 종가등락률 29.65% 이하 */Oo = (C[1] - C[2]) / C[2] * 100 <= 29.65;/* P: 3봉전 종가대비 2봉전 종가등락률 29.65% 이하 */Pp = (C[2] - C[3]) / C[3] * 100 <= 29.65;/* Q: 4봉전 종가대비 3봉전 종가등락률 29.65% 이하 */Qq = (C[3] - C[4]) / C[4] * 100 <= 29.65;/* 오늘(0봉) 기준 조건식 d */d = A and B and Cc and ( (Dd and Ee and Ff and Gg and Hh) or (Mm and Jj and Kk) ) and Nn and Oo and Pp and Qq;/* d가 true인 날이면 오늘 날짜를 VALUE1에 저장 (종목검색에선 어차피 '검색 기준일'로 보이므로, 날짜는 참고용)*/if d then VALUE1 = sDate;/* 최근 30봉(오늘 포함이라고 가정) 동안 d가 true인 횟수 */cnt30 = AccumN( Iff(d, 1, 0), 30 );/* 중요: 오늘이 첫 신호인 종목도 포함시키기 위해 d를 함께 OR 해준다 */if d or cnt30 >= 1 then Find(VALUE1);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~결론적으로 문의드리고 싶은 것은, 하루하루 검색하는 것에는 검색되는 종목 ( 예를 들면 9월 24일 아이윈플러스, 뉴로핏, 모니터랩 3종목) 인데, 이것들은 30일치를 한번에 검색할 수 있게 변형한 것에는 다르게 종목이 검색되는 현상( 뉴로핏 만 검색됨) 을 수정하고 싶습니다.가장 상단의 조건식을 누락된 종목없이 검색된 날짜가 나오게 30일치 한번에 검색할 수 있게 하려면 어떻게 해야 할까요?
2025-11-04
357
글번호 227653
종목검색
답변완료
종목검색식 부탁드립니다
1. 224일 동안에 (거래일 기준) , 최대거래량이 터진 종목검색식 부탁드립니다. (단, 0봉전 ~100봉전의 모든종목) ### "거래일 " 과 "0봉전~100봉전"은 변수처리 부탁드려요 ###2. 예스트레이더 수식입니다. 아래의 수식에 "0봉전~10봉전까지의 모든 종목"을 추가하여 수정 부탁드려요 -----아래--- Input : length(224); Vars : alpha(0), ATRV(0), emaValue(0), correction(0), zlma(0), signalUp(False), signalDn(False), check_signals(False), var1(0), box_begin_val(0), box_end_val(0), box_upper(0); alpha = 30 / 200; ATRV = Iff(IsNan(ATRV[1]) == true, Ma(TrueRange, 200), alpha * TrueRange + (1 - alpha) * Iff(IsNan(ATRV[1]) == true, 0, ATRV[1])); emaValue = Ema(Close, length); correction = Close + (Close - emaValue); zlma = Ema(correction, length); signalUp = CrossUp(zlma, emaValue); signalDn = CrossDown(zlma, emaValue); if signalUp == true then { var1 = zlma - ATRV; box_begin_val = zlma; box_end_val = var1; } else if signalDn == true then { var1 = zlma + ATRV; box_begin_val = zlma; box_end_val = var1; } else { var1 = var1[1]; box_begin_val = box_begin_val[1]; box_end_val = box_end_val[1]; } box_upper = Max(box_begin_val, box_end_val); check_signals = signalUp; if signalUp == true then { Find(1); } if CrossUp(Low, box_upper) and check_signals[1] == false and check_signals == false and emaValue < zlma then { Find(1); }
2025-11-04
186
글번호 227648
종목검색
답변완료
문의
장 중 움직임을 반영하여 거래횟수를 조정하는 수식을 요청드립니다.아래 수식은 거래횟수 총3회 누적패수2회인 수식입니다. 선물 지수 500 돌파 후 하방 거래는 자제하기 위해 거래횟수를 적게 잡아 운용하였습니다. 선물 지수 600 돌파 후 금일 하방쪽으로 20포인트를 넘는 움직임이 비로소 생겼습니다.그렇다고 거래횟수를 고정하여 늘리고 싶진 않습니다.장 중에 bigdown 발생할 때만 거래횟수가 조정되는 수식을 요청드립니다.금일 아래 수식은 3회 거래 후 거래가 정지되었습니다. 요청드린 내용이 반영된다면 아래처럼 5회까지 운영하고 싶습니다. 변경 전input : 진입시간(084700),진입제한시간(125000); input : 거래횟수(3),누적패수(2); 변경 후input : 진입시간(084700),진입제한시간(125000),조정진입제한시간(144500); input : 거래횟수(3),누적패수(2),bigdown(15.00),조정거래횟수(5); 항상 고맙습니다.*******************************************************************************************************************************************input : 진입시간(084700),진입제한시간(125000);input : 거래횟수(3),누적패수(2);input : b1(54),진입눌림1(6),진입돌파1(4);input : b2(142),진입눌림2(6),진입돌파2(4);input : als(42),atr1(0),atr2(112);input : bls(70),btr1(0),btr2(132);var : T1(0),entry(0),HH(0),LL(0),EH(0),EL(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);var : Tcond(false);Var : loss(0); if bdate != bdate[1] Then loss = 0; if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; HH = H; } if stime >= 진입시간 then{ if H > HH Then HH = H; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and C <= HH-PriceScale*B1 Then{ E1 = 1; L1 = L; i1 = index; V1 = HH; //시작점 종가 } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; #고가가 시작봉종가보다 작을 때만 눌림체크 if H <= V1 and H >= L1+PriceScale*진입눌림1 Then{ E1 = 2; i1 = index; S1 = L1; } } //시작점 종가보다 높은 가격이 발생하면 초기화 if E1 >= 1 and H > V1 Then{ E1 = 0; HH = H; } if loss < 누적패수 and E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파1 and Tcond == true Then{ sell("s1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; HH = H; } if H > HH Then HH = H; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C <= HH-PriceScale*B2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*진입눌림2 Then{ E1 = 2; i1 = index; S1 = L1; } } if loss < 누적패수 and E1 == 2 and index > i1 and C <= S1-PriceScale*진입돌파2 and Tcond == true Then{ sell("s2"); E1 = 0; } }} if MarketPosition== -1 Then{ if IsEntryName("s1") == true Then { SetStopLoss(PriceScale*als,PointStop); SetStopTrailing(PriceScale*atr2,PriceScale*atr1,PointStop,1); } Else if IsEntryName("s2") == true Then { SetStopLoss(PriceScale*bls,PointStop); SetStopTrailing(PriceScale*btr2,PriceScale*btr1,PointStop,1); } Else { SetStopLoss(0); SetStopTrailing(0,0); }}
진입제한시간조정
2025-11-04
228
글번호 227647
시스템