커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
1505
글번호 230811
지표
답변완료

챠트의 자동추세선 자동 업데이트

챠트에서 자동추세선 기능을 적용시켰을 때 시간이 흘러서 다시 스윙포인트들 찾고 선들이 그어질 때가 됐는데 너무 조용해서 다시 해보니 실시간 반응을 안하더라구요.이걸 실시간에 업데이트 되도록 해서 신호에 응용하려고 하는데 참고할 만한 소스코드나 또는 스윙포인트 잡는 기준 및 그리고 간혹 보면 점이 안에가 빈 스윙포인트도 잡고 어떤 곳은 분명 잡힐만 한데 안잡히는 곳도 있어서 그런 것에 대한 정의 같은 것이라도 알려주시면 직접 짜보도록 하겠습니다.그림은 단기(10)으로 잡아본건데 저 고점에서의 스윙포인트를 안잡아서 이건 무슨 예외처린가 궁금하기도 하고요.
프로필 이미지
온고지신
2025-12-30
286
글번호 229486
지표

미래테크 님에 의해서 삭제되었습니다.

프로필 이미지
미래테크
2025-12-30
2
글번호 229485
종목검색
답변완료

수식요청

아래 내용의 수식 부탁드립니다.<매수진입>오후 3시기준으로 현재가가 20000원 이상이면 매수<청산>오후 3시10분이면 무조건 청산<손절>매수진입 대비 -3%면 손절-끝감사합니다.
프로필 이미지
은색
2025-12-30
148
글번호 229477
시스템
답변완료

예스트레이더 차트분할이 안됩니다.

차트분할선택을 클릭하면 위처럼만 보여집니다. 어떻게 해야 차트분할로 보여지게 할 수 있나요?
프로필 이미지
둘중하나
2025-12-30
150
글번호 229473
시스템
답변완료

수식 문의

직전 청산일이 오늘이고 그 거래에서 손실이 발생하였다면 그 당일에는 더 이상 매수하지 말고, 그렇지 않다면 매수하도록 조건 설정을 하려면 어떻게 수식을 작성하여야 하나요?
프로필 이미지
여의도
2025-12-30
133
글번호 229472
시스템
답변완료

10시 시작 고저라인

늘 감사합니다.1. data2의 10시00분을 시가로 장 끝까지 시가선 고가선 저가선을 그려 주세요. 예를 들면 08시45분에 그려지는 시고저 라인과 같습니다.2. 이 data2의 고저 값이 갱신될 때 data1의 차트에 수평선이 표시되는 수식.3. 시간은 변경 가능하게 해 주세요.감사합니다.새해 복 많이 받으세요.
프로필 이미지
상암동
2025-12-30
172
글번호 229464
지표
답변완료

다음의 수식을 기반으로 수정부탁드립니다

안녕하세요 다음수식을 신호로 소리가 나도록 해주세요Vars: TotalMin(0), Remain(0), SignalFired(false), PlotVal(0);/* 1. 현재 시각(HHMMSS)을 분 단위로 환산 */TotalMin = Floor(Time / 10000) * 60 + Floor(FracPortion(Time / 10000) * 100);/* 2. 현재 차트 주기(BarInterval)를 기준으로 나머지 계산 *//* 3분봉이면 3으로 나누고, 15분봉이면 15로 나눕니다. */Remain = TotalMin % BarInterval;/* 3. 실시간 마지막 봉 + 마감 1분 전(주기 - 1)일 때 신호 발생 */If LastBarOnChart == true Then Begin /* (BarInterval - 1)분 00초 ~ 59초 구간 */ /* 예: 15분봉이면 14분대일 때 작동 */ If Remain == BarInterval - 1 Then Begin If SignalFired == false Then Begin PlotVal = High; Alert("%d분봉 마감 약 1분 전입니다.", BarInterval); SignalFired = true; End; End Else Begin /* 마감 1분 전 구간을 벗어나면 리셋 */ SignalFired = false; PlotVal = 0; End;End;/* 4. 출력 */Plot1(PlotVal, "SignalPoint");
프로필 이미지
알리섬
2025-12-30
225
글번호 229459
시스템
답변완료

부탁드립니다

3개의 캔들기준(변수로 캔들수 조정가능하게)3개중 가장 긴 양봉 아래에 빨강 점표시3개중 가장 긴 음봉 위에 파랑 점표시좀 부탁드립니다.
프로필 이미지
와우리
2025-12-30
139
글번호 229455
지표
답변완료

문의드립니다

input : length(20),BB_mult(2.0);var : BB_basis(0),dev(0),BB_upper(0),BB_lower(0);BB_basis = ma(close, length);dev = BB_mult * std(close, length);BB_upper = BB_basis + dev;BB_lower = BB_basis - dev;input : KC_mult_high(1.0);input : KC_mult_mid(1.5);input : KC_mult_low(2.0);var : KC_basis(0),devKC(0);var : KC_upper_high(0),KC_lower_high(0);var : KC_upper_mid(0),KC_lower_mid(0);var : KC_upper_low(0),KC_lower_low(0);var : NoSqz(False),LowSqz(False),MidSqz(False),HighSqz(False);var : mom(0),iff_1(0),iff_2(0),mom_color(0),sq_color(0);KC_basis = ma(close, length);devKC = ma(TrueRange, length);KC_upper_high = KC_basis + devKC * KC_mult_high;KC_lower_high = KC_basis - devKC * KC_mult_high;KC_upper_mid = KC_basis + devKC * KC_mult_mid;KC_lower_mid = KC_basis - devKC * KC_mult_mid;KC_upper_low = KC_basis + devKC * KC_mult_low;KC_lower_low = KC_basis - devKC * KC_mult_low;//SQUEEZE CONDITIONSNoSqz = BB_lower < KC_lower_low or BB_upper > KC_upper_low; //NO SQUEEZE: GREENLowSqz = BB_lower >= KC_lower_low or BB_upper <= KC_upper_low; //LOW COMPRESSION: BLACKMidSqz = BB_lower >= KC_lower_mid or BB_upper <= KC_upper_mid ;//MID COMPRESSION: REDHighSqz = BB_lower >= KC_lower_high or BB_upper <= KC_upper_high; //HIGH COMPRESSION: ORANGE//MOMENTUM OSCILLATORmom = LRL(close - avg(avg(highest(high, length), lowest(low, length)),ma(close, length)), length);//MOMENTUM HISTOGRAM COLORiff_1 = iff(mom > iff(isnan(mom[1])==true,0,mom[1]) , lime , green);iff_2 = iff(mom < iff(isnan(mom[1])==true,0,mom[1]) , red , maroon);mom_color = iff(mom > 0 , iff_1 , iff_2);//SQUEEZE DOTS COLORsq_color = iff(HighSqz , red ,IFf(MidSqz , Cyan ,IFf(LowSqz , black , Yellow)));var : S1(0);if mom_color == lime and (sq_color == Cyan or sq_color == Red) Then S1 = 1;if mom_color == Red and (sq_color == Cyan or sq_color == Red) Then S1 = -1;input : atrMult(45);input : atrlen(12);input : rsmlen(3);input : tplen(14);var : i(0),sum(0),source(0);var : alpha(0),atrValue1(0),upperLevel(0),lowerLevel(0);var : previousLowerLevel(0),previousUpperLevel(0);var : trendDirection(Nan),superTrendValue(Nan);var : previousTrend(0);if CurrentBar > 1 Then { sum = 0; for i = 0 to rsmlen-1 { sum = sum + c[i]*c[i]; } source = sqrt(sum/rsmlen); alpha = 1 / atrlen ; atrValue1 = IFf(IsNan(atrValue1[1]) == true, ma(TrueRange,atrlen) , alpha * TrueRange + (1 - alpha) * IFf(isnan(atrValue1[1])==true,0,atrValue1[1])); upperLevel = source + atrMult * atrValue1; lowerLevel = source - atrMult * atrValue1; previousLowerLevel = iff(isnan(lowerLevel[1])==true,0,lowerLevel[1]); previousUpperLevel = iff(isnan(upperLevel[1])==true,0,upperLevel[1]); // Ensure continuity of lower and upper bands lowerLevel = iff(lowerLevel > previousLowerLevel or source[1] < previousLowerLevel , lowerLevel , previousLowerLevel); upperLevel = iff(upperLevel < previousUpperLevel or source[1] > previousUpperLevel , upperLevel , previousUpperLevel); // Determine direction and SuperTrend previousTrend = superTrendValue[1]; // Initialize direction if IsNan(atrValue1[1]) == true Then trendDirection = 1; else if previousTrend == previousUpperLevel Then trendDirection = iff(source > upperLevel , -1 , 1); else trendDirection = iff(source < lowerLevel , 1 , -1); // Set SuperTrend value based on direction superTrendValue = iff(trendDirection == -1 , lowerLevel , upperLevel);}var : dist(0),chg(0),lvlCol(0);var : tp1(0),tp2(0),tp3(0),tp4(0),tp5(0),tp6(0),tp7(0);var : printedtp1(0),printedtp2(0),printedtp3(0),printedtp4(0),printedtp5(0),printedtp6(0),printedtp7(0);dist = abs(close-superTrendValue);lvlCol = iff(trendDirection > 0 , red , green);var : key1(0);var : key2(0);var : key3(0);var : key4(0);var : key5(0);var : key6(0);var : key7(0);if CrossUp(trendDirection, 0) or CrossDown(trendDirection, 0) Then{ //TL_Delete(keys); printedtp1 = 0; printedtp2 = 0; printedtp3 = 0; printedtp4 = 0; printedtp5 = 0; printedtp6 = 0; printedtp7 = 0; chg = abs(superTrendValue-superTrendValue[1]); tp1 = superTrendValue[1] + IFF(trendDirection > 0 , -chg , chg); tp2 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 2 , chg * 2); tp3 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 3 , chg * 3); tp4 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 4 , chg * 4); tp5 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 5 , chg * 5); tp6 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 6 , chg * 6); tp7 = superTrendValue[1] + IFF(trendDirection > 0 , -chg * 7 , chg * 7); key1 = TL_new(sdate[1],stime[1],tp1, sDate,sTime, tp1); TL_SetColor(Key1,lvlCol); TL_SetSize(Key1,2); printedtp1 = 1;}Else TL_SetEnd(key1,sDate,sTime,TP1); var : u(0),d(0),alp(0),ur(0),dr(0),rs(0),R(0),tp(False);u = max(dist - dist[1], 0);d = max(dist[1] - dist, 0);alp = 1/tplen;ur = IFf(IsNan(ur[1]) == true, ma(u,tplen) , alp * u + (1 - alp) * IFf(isnan(ur[1])==true,0,ur[1]));dr = IFf(IsNan(dr[1]) == true, ma(d,tplen) , alp * d + (1 - alp) * IFf(isnan(dr[1])==true,0,dr[1]));rs = ur / dr;R = 100 - 100 / (1 + rs);tp = CrossDown(R, 60);var : extreme(0);var : extreme_tp1_dist(0);var : extreme_tp2_dist(0);var : extreme_tp3_dist(0);var : extreme_tp4_dist(0);var : extreme_tp5_dist(0);var : extreme_tp6_dist(0);var : extreme_tp7_dist(0);extreme = iff(trendDirection > 0 , low , high);extreme_tp1_dist = abs(extreme - tp1);extreme_tp2_dist = abs(extreme - tp2);extreme_tp3_dist = abs(extreme - tp3);extreme_tp4_dist = abs(extreme - tp4);extreme_tp5_dist = abs(extreme - tp5);extreme_tp6_dist = abs(extreme - tp6);extreme_tp7_dist = abs(extreme - tp7);var : tx(0),S2(0);if tp and trendDirection > 0 Then{ tx = Text_New(sDate,sTime,L,"X"); Text_SetStyle(tx,2,0); Text_SetColor(tx,Red); Text_SetSize(tx,20); Text_SetBold(tx,1); S2 = 1;}if tp and trendDirection < 0 Then{ tx = Text_New(sDate,sTime,H,"X"); Text_SetStyle(tx,2,1); Text_SetColor(tx,Green); Text_SetSize(tx,20); Text_SetBold(tx,1); S2 = -1;}if printedtp2 == 0 and extreme_tp2_dist < extreme_tp1_dist Then{ key2 = TL_new(sdate[1],stime[1],tp2, sDate,sTime, tp2); TL_SetColor(Key2,lvlCol); TL_SetSize(Key2,2); printedtp2 = 1;}Else{ if printedtp2 == 1 Then TL_SetEnd(key2,sDate,sTime,TP2);}if printedtp3 == 0 and extreme_tp3_dist < extreme_tp2_dist Then{ key3 = TL_new(sdate[1],stime[1],tp3, sDate,sTime, tp3); TL_SetColor(Key3,lvlCol); TL_SetSize(Key3,2); printedtp3 = 1;}Else{ if printedtp3 == 1 Then TL_SetEnd(key3,sDate,sTime,TP3);}if printedtp4 == 0 and extreme_tp4_dist < extreme_tp3_dist Then{ key4 = TL_new(sdate[1],stime[1],tp4, sDate,sTime, tp4); TL_SetColor(Key4,lvlCol); TL_SetSize(Key4,2); printedtp4 = 1;}Else{ if printedtp4 == 1 Then TL_SetEnd(key4,sDate,sTime,TP4);}if printedtp5 == 0 and extreme_tp5_dist < extreme_tp4_dist Then{ key5 = TL_new(sdate[1],stime[1],tp5, sDate,sTime, tp5); TL_SetColor(Key5,lvlCol); TL_SetSize(Key5,2); printedtp5 = 1;}Else{ if printedtp5 == 1 Then TL_SetEnd(key5,sDate,sTime,TP5);}if printedtp6 == 0 and extreme_tp6_dist < extreme_tp5_dist Then{ key6 = TL_new(sdate[1],stime[1],tp6, sDate,sTime, tp6); TL_SetColor(Key6,lvlCol); TL_SetSize(Key6,2); printedtp6 = 1;}Else{ if printedtp6 == 1 Then TL_SetEnd(key6,sDate,sTime,TP6);}if printedtp7 == 0 and extreme_tp7_dist < extreme_tp6_dist Then{ key7 = TL_new(sdate[1],stime[1],tp7, sDate,sTime, tp7); TL_SetColor(Key7,lvlCol); TL_SetSize(Key7,2); printedtp7 = 1;}Else{ if printedtp7 == 1 Then TL_SetEnd(key7,sDate,sTime,TP7);}if MarketPosition <= 0 and S1+S2 == 2 Then Buy();if MarketPosition == 1 and S1+S2 < 2 Then ExitLong();if MarketPosition >= 0 and S1+S2 == -2 Then Sell();if MarketPosition == -1 and S1+S2 > -2 Then ExitShort();수고 많으십니다 저번에 만들어 주신 수식인데익절과 손절을 추가로 부탁드립니다 익철 50틱 손절 50틱진입하여 익절이던 손절이 나면 곧바로 재진입 않고 다음 신호 나오면 진입하게 부탁드립니다 항상 감사드립니다
프로필 이미지
cjfdk
2025-12-30
919
글번호 229454
시스템