커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8023
글번호 230811
답변완료
부탁드립니다
1) 강세 : 상승중인 60 < 상승중인 20 < 상승중인 10 약세 : 하락중인 60 > 하락중인 20 > 하락중인 10 2) 강세 : 상승중인 60 < 상승중인 20 이때, 상승중인 10일선이 상승중인 20일선을 골든크로스 약세 : 하락중인 60 > 하락중인 20 이때, 하락중인 10일선이 하락중인 20일선을 데드크로스 두가지 수식좀 부탁드립니다
2025-06-26
324
글번호 192116
답변완료
문의 드립니다.
안녕하세요
항상 감사드립니다.
아래의 서식에서
손절 -10%를 넣어주시면 감사하겠습니다. (input)
input : 총매수금(100000000);
var1 = rsi(14);
if C < C[1] and var1 <= 55 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and MaxEntries < 40 and C < AvgEntryPrice) Then
Buy("b",OnClose,Def,Floor((총매수금/40)/c));
}
if MarketPosition == 1 Then
ExitLong("bx",AtLimit,AvgEntryPrice*1.10);
2025-06-26
338
글번호 192115
2wnwn 님에 의해서 삭제되었습니다.
2025-06-26
38
글번호 192114
회원 님에 의해서 삭제되었습니다.
2025-06-26
16
글번호 192103
답변완료
문의드립니다.
If c > c[100] and c < c[200] then Buy("",atmarket,DEf,1);
If c < c[100] and c > c[200] then Sell("",atmarket,DEf,1);
var: BBB(0),CCC(0);
BBB= highest(low,10);
CCC= Lowest(low,10);
if barssinceentry >3 and Maxpositionprofit >= (3000/BigPointValue) and Crossdown (C,CCC[1]) Then ExitLong("11",AtMarket);
if barssinceentry >3 and Maxpositionprofit >= (3000/BigPointValue) and Crossup(C,BBB[1]) Then ExitShort("22",AtMarket);
SetStopLoss(4,PercentStop);
///////////////////////////////////////////////////////////////////////////////////
실버 120분봉 적용
위 수식을 적용했을때 첨부파일에 체크한것처럼 매도 청산후 바로 매도 진입후 연속 청산이 나가는 현상이 있는데 이 부분을 고치기 위해서 "barssinceentry >3" 적용했지만 효과가 없는 것 같습니다. 이부분 보완 가능할까요??
1. 매도 청산후 재매도 들어가는데 해당봉에 바로 청산되는것 방지
2025-06-26
485
글번호 192102
답변완료
부탁드립니다.
supertrend2 통과시 세로선이 생깁니다. 동시에 봉 위아래 화살표가 생기도록 부탁드립니다.
input : period1(10),multiplier1(3);
input : period2(20),multiplier2(2);
input : period3(30),multiplier3(3);
var : src(0);
var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0);
var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0);
var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0);
var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0);
var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0);
var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0);
var : TL1(0),TL2(0),TL3(0),TL(0),box1(0),box2(0);
src = (H+L)/2;
if CurrentBar > 1 Then
{
alpha1 = 1 / period1;
source1 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand1 = src + multiplier1 * AtrV1;
lowerBand1 = src - multiplier1 * AtrV1;
prevLowerBand1 = lowerBand1[1];
prevUpperBand1 = upperBand1[1];
if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then
lowerBand1 = lowerBand1;
Else
lowerBand1 = prevLowerBand1;
if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then
upperBand1 = upperBand1;
Else
upperBand1 = prevUpperBand1;
if C > UpperBand1 Then
direction1 = 1;
if C < LowerBand1 Then
direction1 = -1;
if direction1 == 1 Then
supertrend1 = lowerband1;
Else
supertrend1 = upperband1;
alpha2 = 1 / period2;
source2 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand2 = src + multiplier2 * AtrV2;
lowerBand2 = src - multiplier2 * AtrV2;
prevLowerBand2 = lowerBand2[1];
prevUpperBand2 = upperBand2[1];
if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then
lowerBand2 = lowerBand2;
Else
lowerBand2 = prevLowerBand2;
if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then
upperBand2 = upperBand2;
Else
upperBand2 = prevUpperBand2;
if C > UpperBand2 Then
direction2 = 1;
if C < LowerBand2 Then
direction2 = -1;
if direction2 == 1 Then
supertrend2 = lowerband2;
Else
supertrend2 = upperband2;
alpha3 = 1 / period3;
source3 = max(high - low, abs(high - close[1]), abs(low - close[1]));
ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식
//ATrV = ma(source,AtrPeriod); //단순이평방식
upperBand3 = src + multiplier3 * AtrV3;
lowerBand3 = src - multiplier3 * AtrV3;
prevLowerBand3 = lowerBand3[1];
prevUpperBand3 = upperBand3[1];
if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then
lowerBand3 = lowerBand3;
Else
lowerBand3 = prevLowerBand3;
if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then
upperBand3 = upperBand3;
Else
upperBand3 = prevUpperBand3;
if C > UpperBand3 Then
direction3 = 1;
if C < LowerBand3 Then
direction3 = -1;
if direction3 == 1 Then
supertrend3 = lowerband3;
Else
supertrend3 = upperband3;
if C > superTrend1 Then
{
Plot1(superTrend1,"매수1", rgb(247, 75, 201), 0, 1);
NoPlot(2);
}
Else
{
Plot2(superTrend1,"매도1", Indigo, 0, 1);
NoPlot(1);
}
if C > superTrend2 Then
{
Plot3(superTrend2,"매수2", rgb(247, 75, 201), 0, 2);
NoPlot(4);
}
Else
{
Plot4(superTrend2,"매도2", Indigo, 0, 2);
NoPlot(3);
}
if C > superTrend3 Then
{
Plot5(superTrend3,"매수3", rgb(247, 75, 201), 0, 7);
NoPlot(6);
}
Else
{
Plot6(superTrend3,"매도3", Indigo, 0, 7);
NoPlot(5);
}
}
var : box(0);
if CrossUp(c,supertrend2) Then
{
TL = TL_New(sDate,sTime,0,sDate,sTime,99999999);
TL_SetColor(TL,rgb(255, 215, 0));
TL_SetSize(TL,1);
TL_SetStyle(TL,2);
}
Else if CrossDown(c,supertrend2) Then
{
TL = TL_New(sDate,sTime,0,sDate,sTime,999999999);
TL_SetColor(TL, rgb(193, 216, 251));
TL_SetSize(TL,2);
TL_SetStyle(TL,2);
}
Else
{
if var4 > 0 and Index < var4+5 Then
{
TL_SetEnd(TL1,NextBarSdate,NextBarStime,var1);
TL_SetEnd(TL2,NextBarSdate,NextBarStime,var2);
TL_SetEnd(TL3,NextBarSdate,NextBarStime,var3);
Box_SetEnd(box1,NextBarSdate,NextBarStime,var2);
Box_SetEnd(box2,NextBarSdate,NextBarStime,var3);
}
}
2025-06-25
532
글번호 192101
답변완료
문의드립니다~^^
안녕하세요~^^ 문의드립니다
종목검색에서~
var1 = dayhigh;
var2 = daylow;
var4 = dayopen;
var5 = var2+(var1-var2)*0.500;
조건1)전일종가대비 오늘 시초가가 3% (갭) 이상인 종목으로~
조건2) 현재가(C) > var4 and c > var5 then
조건1) 조건2) 모두 충족되는 종목이 나타날수 있도록~ 종목검색식 부탁드립니다~^^
2025-06-26
360
글번호 192100
답변완료
수식 부탁드립니다.
Inputs: 기간시작(10), 기간끝(40);
Vars: 신호값(0), 중심(0), p1(0), p2(0), p3(0), p4(0), p5(0), p6(0), p7(0), 평균값(0);
중심 = Average(High, 40) * 1.02;
평균값 = (p1 + p2 + p3 + p4 + p5 + p6 + p7) / 7;
p1 = IFF(중심 < Average(Close, 10), Average(Close, 10), 중심);
p2 = IFF(중심 < Average(Close, 15), Average(Close, 15), 중심);
p3 = IFF(중심 < Average(Close, 20), Average(Close, 20), 중심);
p4 = IFF(중심 < Average(Close, 25), Average(Close, 25), 중심);
p5 = IFF(중심 < Average(Close, 30), Average(Close, 30), 중심);
p6 = IFF(중심 < Average(Close, 35), Average(Close, 35), 중심);
p7 = IFF(중심 < Average(Close, 40), Average(Close, 40), 중심);
// 이전 봉과 비교해서 하나라도 값이 달라지면 신호
If (p1 <> p2) or (p2 <> p3) or (p3 <> p4) or (p4 <> p5) or (p5 <> p6) or (p6 <> p7) or (p7 <> p1) Then
신호값 = 평균값; // 또는 원하는 y값(예: Close, High 등)
Else
신호값 = Nan; // 표시 안함(플랫폼에 따라 Null, NaN 등 사용 가능)
Plot1(신호값, "변화점");
**************// 질문1.
plot1 선그래프가 아닌 점그래프로 변환시
점그래프 발생시점 첫번째 점만 표시하고 싶습니다~! //
----------------------------------------------------------------------
Input: src(numeric), length(numeric), weight(numeric);
Vars: sum(0), output(0), i(0);
sum = 0;
For i = 0 To length - 1 Begin
sum = sum + src[i];
End;
If length > 0 Then
output = sum / length;
Else
output = 0;
WeightedSimpleAverage = (src * weight + output * (length - weight)) / length;
End;
**************// 질문2 사용자 함수작성해서 쓸려고 하는데 문법에러, 잘못된 토큰:'end'라고 뜨네요
어떻게 사용해야하는지요? ㅠ
2025-06-25
684
글번호 192099
요타 님에 의해서 삭제되었습니다.
2025-06-26
34
글번호 192098