커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5399
글번호 230811
답변완료
문의 드립니다
input : starttime(90000),Endtime(154500);var : Tcond(False);if (sdate != sDate[1] and sTime >= starttime) or (sdate == sDate[1] and sTime >= starttime and sTime[1] < starttime) Then{ Tcond = true; var1 = 0; var2 = 0; var3 = 0;}if (sdate != sDate[1] and sTime >= Endtime) or (sdate == sDate[1] and sTime >= Endtime and sTime[1] < Endtime) Then Tcond = False;if Tcond == true Then{ var1 = var1+1; var2 = var2+1; var3 = var3+1; Var4 = Var2 - Var3;------------------------------위식에서 var4가 최고일때 & 최저일때의 가격을 차트에 표시하고 싶습니다a= var4 가 최고일때 가격b= var4 가 최저일때 가격감사합니다
2026-03-31
496
글번호 231349
답변완료
수식 요청드립니다.
안녕하세요.나스닥 선물 거래하고자 합니다.피라미딩으로 누적 10계약까지 매수 또는 매도 진입한다고 하였을때, 아래 조건을 만족할 경우 청산되도록 하는 수식을 부탁드립니다.* 첫번째 계약의 진입시간으로부터 100분이 경과하면 그때까지 진입된 계약들을 모두 청산항상 감사합니다.
2026-03-31
354
글번호 231348
답변완료
시스템 매매 관련 수정문의 합니다...
아래수식은 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
2987
글번호 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
2026-03-30
858
글번호 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
2026-03-30
1090
글번호 231344
답변완료
전략실행 차트 관련 문의
안녕하세요,전략 실행 차트 관련하여 문의드립니다.현재 하나의 전략실행 차트에서 시스템 트레이딩 지표를 테스트하는 과정에서, 기존 시스템 트레이딩 지표 적용 후 다른 시스템 트레이딩 지표를 추가하면 이전 지표가 유지되지 않고 서로 교체되는 형태로만 동작하고 있습니다.혹시 아래 사항들이 가능한지 확인 부탁드립니다.1) 하나의 차트에서 여러 시스템 트레이딩 지표를 동시에 적용 및 테스트 가능 여부2) 여러 전략(지표)을 하나의 계좌에서 동시에 운용하는 방법 (멀티 전략 운용)3) 전략 간 시그널 충돌 발생 시 처리 방법 (예: 매수/매도 동시 발생)4) 전략별로 독립적인 백테스트 및 성과 분리 확인 가능 여부추가로 실전 운용 관점에서, 전략 신호를 외부 프로그램(API 등)으로 전달하여 주문 처리 연동이 가능한지도 문의 드립니다관련하여 권장되는 운용 방식이나 구조가 있다면 함께 조언 부탁드립니다.감사합니다.
2026-03-30
1207
글번호 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
543
글번호 231338
회원 님에 의해서 삭제되었습니다.
2026-03-30
4
글번호 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
443
글번호 231331