커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템 매매 관련 수정문의 합니다...

아래수식은 ai 기반으로 작성된 수식입니다...시작시간하고 종료시간이 조금 이상해서 수정부탁합니다..시작시간은 91500종료시간은 151500입니다..그리고 손절은 없고 익절만 가능하도록 수정부탁드립니다..// FLI Force Index 기반 역전 스탑앤리버스 전략 (비용 및 수량 변수 지정 포함)Input : FIPeriod(13), FISmooth(13), ATRPeriod(14), StopATR(3.0), ProfitATR(6.0);Input : ScaleParts(20), ScaleIntervalMin(15), TotalQty(20);// 거래 허용 기간 입력 (YYYYMMDD 형식 날짜, 분 단위 시간)Input : StartDate(20260101), StartTimeMin(930), EndDate(20261231), EndTimeMin(1530);// 비용 및 수량 변수Input : CommissionPerUnit(0.0), SlippagePerUnit(0.0);Var : FI(0), FIs(0), tr(0), atr(0), longStop(0), longProfit(0), shortStop(0), shortProfit(0);Var : partsDoneLong(0), partsDoneShort(0), lastScaleTime(0);Var : totalAllocatedLong(0), totalAllocatedShort(0), targetCumulative(0), nextPartQty(0), partIndex(0);Var : curMin(0), curDate(0), allowTrade(false);Var : estCost(0), executedQty(0);FI = (C - C[1]) * V;FIs = EMA(FI, FISmooth);tr = TrueRange;atr = EMA(tr, ATRPeriod);longStop = Close - StopATR * atr;longProfit = Close + ProfitATR * atr;shortStop = Close + StopATR * atr;shortProfit = Close - ProfitATR * atr;// 현재 날짜/시간curMin = TimeToMinutes(sTime);curDate = Bdate; // 봉의 거래일(YYYYMMDD)// 거래 허용 여부 판단allowTrade = (curDate >= StartDate) And (curDate <= EndDate) And (curMin >= StartTimeMin) And (curMin <= EndTimeMin);If CrossUp(FIs, 0) Then{ partsDoneLong = 0; partsDoneShort = 0; lastScaleTime = 0; totalAllocatedLong = 0; totalAllocatedShort = 0;}//If CrossDown(FIs, 0) Then{ // partsDoneShort = 0; // partsDoneLong = 0; // lastScaleTime = 0; // totalAllocatedLong = 0; // totalAllocatedShort = 0;}// 롱 분할 진입 (총수량 대비 비율 방식) - 시간/날짜 필터 적용If allowTrade And FIs > 0 And partsDoneLong < ScaleParts Then{ partIndex = partsDoneLong + 1; // 1-based targetCumulative = Ceiling(TotalQty * partIndex / ScaleParts); nextPartQty = targetCumulative - totalAllocatedLong; If nextPartQty < 0 Then nextPartQty = 0; If nextPartQty > 0 And (lastScaleTime == 0 Or (curMin - lastScaleTime) >= ScaleIntervalMin) Then { // 예상 비용 계산(간단): (수량 * (Commission + Slippage)) estCost = nextPartQty * (CommissionPerUnit + SlippagePerUnit); Buy("FLI_Long_Part", onclose, Def, nextPartQty); partsDoneLong = partsDoneLong + 1; totalAllocatedLong = totalAllocatedLong + nextPartQty; lastScaleTime = curMin; // 추적용: 실행 누적 수량(실제 체결은 플랫폼에서 결정되므로 근사값) executedQty = executedQty + nextPartQty; }}// 숏 분할 진입 (총수량 대비 비율 방식) - 시간/날짜 필터 적용If allowTrade And FIs < 0 And partsDoneShort < ScaleParts Then{ partIndex = partsDoneShort + 1; targetCumulative = Ceiling(TotalQty * partIndex / ScaleParts); nextPartQty = targetCumulative - totalAllocatedShort; If nextPartQty < 0 Then nextPartQty = 0; If nextPartQty > 0 And (lastScaleTime == 0 Or (curMin - lastScaleTime) >= ScaleIntervalMin) Then { estCost = nextPartQty * (CommissionPerUnit + SlippagePerUnit); Sell("FLI_Short_Part", onclose, Def, nextPartQty); partsDoneShort = partsDoneShort + 1; totalAllocatedShort = totalAllocatedShort + nextPartQty; lastScaleTime = curMin; executedQty = executedQty + nextPartQty; }}// 손절/익절 로직 유지 (청산 주문은 거래허용시간 외에도 실행될 수 있도록 허용)If MarketPosition == 1 Then{ If High < longStop And NextBarBdate == Bdate Then ExitLong("FLI_L_Stop", AtStop, longStop); If High < longProfit And NextBarBdate == Bdate Then ExitLong("FLI_L_Profit", AtLimit, longProfit);}If MarketPosition == -1 Then{ If Low > shortStop And NextBarBdate == Bdate Then ExitShort("FLI_S_Stop", AtStop, shortStop); If Low > shortProfit And NextBarBdate == Bdate Then ExitShort("FLI_S_Profit", AtLimit, shortProfit);}// 참고 출력용: 실행 누적 수량 및 예상 비용을 내장 변수에 저장 (플랫폼에서 확인 가능)Var : reportedExecutedQty(0), reportedEstCost(0);reportedExecutedQty = executedQty;reportedEstCost = executedQty * (CommissionPerUnit + SlippagePerUnit);
프로필 이미지
서민순
2026-03-30
253
글번호 231347
시스템
답변완료

수식 문의드립니다.

안녕하세요.아래 키움 수식인데 예스랭귀지 종목 검색식으로 변경 부탁드립니다.감사합니다.A1 = MA(C,20);A2 = MA(C,60);A3 = CrossUp(A1,A2);A4 = HighestSince(1,A3,H);A5 = ValueWhen(1,A4==A4(1) && A4>H,A4);A6 = IF(A2>L,1,0);A7 = SUM(A6);B1 = A7-ValueWhen(1,A3,A7(1));B2 = CrossUp(C,A5) && B1>0;B3 = CountSince(A3,B2)==1;C0 = MA(C,48,지수);C1 = MA(C,112,지수);C2 = MA(C,224,지수);C3 = (C / C2) * 100;C4 = C3 <= 이격1;C5 = C1<= C2;C6 = (C / C0) * 100;C7 = C6 <= 이격2;C8 = C1>=C2;C9 = C1/C2*100<=간격1;C10 = C8 && C9;C11 = C1/C2*100 >=간격2;C12 = C5 && C11 ;D0 = MA(C,200,지수);D1 = MA(V,48);D2 = V >= D1*1.5;D3 = D0 >= D0(1);D4 = MAX(C1,C2);D5 = C>D4;B3 && !B3(1) && C4 && C7 && ((C10 && D5) or (C12 && D5)) 이격1 : 120 / 이격2 : 120 / 간격1 : 105 / 간격2 : 95
프로필 이미지
vhouse
2026-03-30
115
글번호 231345
종목검색
답변완료

수식 문의드립니다.

안녕하세요.아래 키움 수식인데 예스랭귀지 종목 검색식으로 변경 부탁드립니다.감사합니다.A1 = RSI(14) > 50;A2 = CCI(9) > 0;A3 = MACD(12,26) > Avg(MACD(12,26),9);S=Stochasticsslow(12,5);S_sig=eavg(Stochasticsslow(12,5),5);A4 = S > S_sig;MA112 = MA(C,112,지수);MA224 = MA(C,224,지수);Disparity = (C / MA224) * 100;Dis_Check = Disparity >=이격1 && Disparity <=이격2;MV_Check = MA224 >= MA112;MA_Check = C > MA(C,224);Vol_Check = V > V(1) * 2.0 or V > Avg(V,20) * 2.0;S1 = (highest(high,9) + lowest(low,9) + highest(high,26) + lowest(low,26)) / 4;S2 = (highest(high,52) + lowest(low,52)) / 2;Cloud_Top = Max(S1(25),S2(25));Ichimoku_Check = C > Cloud_Top;BB_Up = BBandsUp(20,2);BB_Break = CrossUp(C,BB_Up);BB_Top = C > BB_Up;B1 = MA(C,120);B2 = MA(C,240);B3 = MA(V,20);B4 = B2 < C;B5 = REF(B2,1) >= REF(C,1);B6 = V > B3*5;B7 = B2 >= B1;B8 = B4 && B5 && B6 && B7;A1 && A2 && A3 && A4 && B8&& MA_Check && Vol_Check&& Dis_Check && MV_Check&& Ichimoku_Check && BB_Break이격1 : 100 / 이격2 : 115
프로필 이미지
vhouse
2026-03-30
156
글번호 231344
종목검색
답변완료

전략실행 차트 관련 문의

안녕하세요,전략 실행 차트 관련하여 문의드립니다.현재 하나의 전략실행 차트에서 시스템 트레이딩 지표를 테스트하는 과정에서, 기존 시스템 트레이딩 지표 적용 후 다른 시스템 트레이딩 지표를 추가하면 이전 지표가 유지되지 않고 서로 교체되는 형태로만 동작하고 있습니다.혹시 아래 사항들이 가능한지 확인 부탁드립니다.1) 하나의 차트에서 여러 시스템 트레이딩 지표를 동시에 적용 및 테스트 가능 여부2) 여러 전략(지표)을 하나의 계좌에서 동시에 운용하는 방법 (멀티 전략 운용)3) 전략 간 시그널 충돌 발생 시 처리 방법 (예: 매수/매도 동시 발생)4) 전략별로 독립적인 백테스트 및 성과 분리 확인 가능 여부추가로 실전 운용 관점에서, 전략 신호를 외부 프로그램(API 등)으로 전달하여 주문 처리 연동이 가능한지도 문의 드립니다관련하여 권장되는 운용 방식이나 구조가 있다면 함께 조언 부탁드립니다.감사합니다.
프로필 이미지
풍성매매
2026-03-30
114
글번호 231343
시스템
답변완료

종목검색식 부탁드려요

MID=MA(C,20);RNG=ATR(10);A=MID-2*RNG;A1=Stochasticsslow(12,5);A2=eavg(Stochasticsslow(12,5),5);CROSSUP(C,A) AND((A1<20 AND CROSSUP(A1,A2))ORCROSSUP(A1,20))
프로필 이미지
권석아범
2026-03-30
123
글번호 231338
종목검색

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2026-03-30
3
글번호 231334
지표
답변완료

지표수식 부탁드립니댜

Inputs: P5(5), P20(20), P60(60);Vars: M5(0), M20(0), M60(0), BB(0);Vars: HH(0), H_High(0);M5 = ma(C, 5);M20 = ma(C, 20);M60 = ma(C, 60);BB = BollBandUp(40,3);CP = CrossUp(M5, M20);-------------------------------------------------------------------------지표수식아래수식에 CrossUp 한 HH = H 를 (고가+종가)/2 즉, 중간값으로 우측으로 선을 그으려 합니다.라인이 엉뚱하게 나옵니다.수정 부탁^^드립니다.if CP Then { HH = H;}Else { if HH > 0 and H > HH Then HH = H;}//(고가+종가)/2 최종라인***********if HH > 0 and HH == HH[1] and HH > H and C >= BB Then{ H_High = HH;}Else{ // 조건을 만족하지 않을 때는 선을 그리지 않는다. if H_High > 0 and H > H_High Then H_High = H;}// 4. 지표 출력if H_High > 0 Then Plot1(H_High, "H_High 저항선");----------------------------------------------if Cp Then { MH = H; MC = C;}Else { if MH > 0 and H > MH Then { MH = H; MC = C; }}if MH > 0 Then HH = (MH + MC) / 2;Else이런식으로도 했봤지만 엉뚱한선이 나오네요.랭귀지가 서툴러서 부탁드립니다.
프로필 이미지
깨구리
2026-03-30
112
글번호 231331
지표
답변완료

다시 도움 부탁드립니다.

제미나이를 통해 어려번 수정했는데 완벽하게 구현을 못하는 듯 싶어 도움 부탁드립니다.볼린저 시가기준(4:4)와 종가기준(20:2) 하나 또는 둘다 돌파하는 종목에 신호를 표시하려고 하는데요.상한선 돌파신호는 괜찮은 듯 싶은데.. 하단선 돌파하거나 터치 한 종목을 정확히 식별을 못하는거 같아요.특히 시가기준(4:4)를 정확히 구현을 못하는지 어느것은 되고 어느것은 표시를 못 합니다.차트상 분명히 두개 밴드 하단선(특히 시가기준 4:4)에 닿았는데 하나만 닿은 것처럼 표시됩니다.제미나이 통해 만든 수식은 아래와 같습니다. input : P1(4), D1(4), P2(20), D2(2); input : 위치간격(1.5); var : BB1_UP(0), BB1_DN(0), BB2_UP(0), BB2_DN(0);// 1. 볼린저 밴드 계산BB1_UP = ma(O, P1) + D1 * std(O, P1); // 시가 기준 상단BB1_DN = ma(O, P1) - D1 * std(O, P1); // 시가 기준 하단BB2_UP = ma(C, P2) + D2 * std(C, P2); // 종가 기준 상단BB2_DN = ma(C, P2) - D2 * std(C, P2); // 종가 기준 하단// 2. 신호 출력 // --- [상방 영역: 캔들 위] ---if C >= BB1_UP and C >= BB2_UP Then Plot1(H + (H * (위치간격/100)), "상방_TwoB", Red);Else if C >= BB1_UP or C >= BB2_UP Then Plot2(H + (H * (위치간격/100)), "상방_OneB", Blue);// --- [하방 영역: 캔들 아래] ---// 핵심 수정: 1번 캔들처럼 어느 하나라도 "터치(L <= DN)"하고 // 동시에 다른 하나도 만족하면 무조건 TwoB(빨강)가 뜨도록 조건을 대폭 완화했습니다.if (L <= BB1_DN and L <= BB2_DN) Then { // [1번 지점 해결] 저가(L)가 두 하단선에 모두 닿거나 뚫으면 무조건 빨간색 // 2번처럼 위로 말아올린 캔들을 빼고 싶다면 아래 종가 조건을 추가합니다. if C < BB1_DN or C < BB2_DN Then Plot3(L - (L * (위치간격/100)), "하방_TwoB", Red);}Else if (L <= BB1_DN or L <= BB2_DN) Then { // [OneB] 하나만 터치하거나 이탈했을 때 // 역시 2번처럼 완전히 회복한 캔들은 제외하기 위해 종가 필터를 넣었습니다. if C < BB1_DN or C < BB2_DN Then Plot4(L - (L * (위치간격/100)), "하방_OneB", Blue);}
프로필 이미지
도전74
2026-03-30
82
글번호 231330
검색
답변완료

지표문의드립니다.

이게 가능한가요?120틱차트를 열어놓고,그 차트안에서 30분봉의 시가저가고가종가의 캔들차트를 중복으로 나타내는 것이 가능한가요?
프로필 이미지
만복이
2026-03-30
55
글번호 231329
지표