커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1703
글번호 230811
답변완료
수식작성
Inputs: PercentRLen(10), OverSold(10), OverBought(90), Trigger(62);
Variables: PcntR(0), AvgValue(0), Setup1(False), Setup2(False);
PcntR = PercentR(PercentRLen);
AvgValue = MA(Close, PercentRLen);
If PcntR < OverSold Then
Setup1 = True;
If PcntR > OverBought Then
Setup1 = False;
If PcntR > OverBought Then
Setup2 = True;
If PcntR < OverSold Then
Setup2 = False;
If Setup1 AND AvgValue > AvgValue[1] AND Crossup(PcntR,Trigger) Then Begin
Setup1 = False;
Buy ("%R_LE");
End;
If Setup2 AND AvgValue < AvgValue[1] AND CrossDown(PcntR, Trigger) Then Begin
Setup2 = False;
Sell ("%R_SE");
End;
----------------------
위는 PercentR 기본수식어 입니다
이동평균선 460선위에서 sell신호는 바로 buy신호로
이동평균선 460선아래에서는 buy신호는 바로 sell신호로 전환하는 수식어와
460선 아래에서 sell신호중 5선 460선 골든크로스에서 buy로 전환하는 신호와
460선 위에서 buy신호중 5선 460선 데드크로스에서 buy로 전환하는 신호를 부탁드립니다.
2021-04-23
1228
글번호 148325
답변완료
문의 드립니다
안녕하세요
전날 시초가랑 전날 종가를
dayopen(1), dayclose(1) 함수 말고 다른 방법으로 가르쳐주시면 감사하겠습니다
2021-04-23
1319
글번호 148324
답변완료
수정의뢰 드립니다
안녕하세요!
만들어 주신 지표를 적용해 보앗는데 첨부그림처럼 정체불명의 많은 선들이 생성이 됩니다!
왜 이런 현상이 나타나는지 반복해서 적용해 보아도 지워지지가 않습니다!
그냥 외부변수를 적용해서 선의 색상이나 굵기, 텍스트 크기등을 적용할 수 있게 바꾸어 주세요!
v1, v2, v3 이렇게 3가지 가격선만 나타나게 해주세요!
(data1 현재가+ data2 현재가 / 2)
(data1 현재가+ data3 현재가 / 2)
(data1 현재가+ data4 현재가 / 2)
자꾸 번거롭게 해드리는것 같아서 죄송합니다!
var : cnt(0,Data1);
var : v1(0,Data1),v2(0,Data1),v3(0,Data1),v4(0,Data1);
var : v5(0,Data1),v6(0,Data1),v7(0,Data1),v8(0,Data1);
var : tl1(0,Data1),tl2(0,Data1),tl3(0,Data1),tl4(0,Data1);
var : tl5(0,Data1),tl6(0,Data1),tl7(0,Data1),tl8(0,Data1);
var : tx1(0,Data1),tx2(0,Data1),tx3(0,Data1),tx4(0,Data1);
var : tx5(0,Data1),tx6(0,Data1),tx7(0,Data1),tx8(0,Data1);
#(Data1+Data2)/2;
v1 = (Data1(c)+Data2(c))/2;
#(Data1+Data3)/2;
v2 = (Data1(c)+Data3(c))/2;
#(Data1+Data4)/2;
v3 = (Data1(c)+Data4(c))/2;
#Data1 시가
v4 = Data1(DayOpen);
#Data1 전일고가
v5 = Data1(DayHigh(1));
#Data1 전일저가
v6 = Data1(DayLow(1));
#Data3 당일고가
v7 = Data3(highD(0));
#Data3 당일저가
v8 = Data3(LowD(0));
For cnt = 0 to 20
{
Text_Delete(tx1[cnt]);
Text_Delete(tx2[cnt]);
Text_Delete(tx3[cnt]);
Text_Delete(tx4[cnt]);
Text_Delete(tx5[cnt]);
Text_Delete(tx6[cnt]);
Text_Delete(tx7[cnt]);
Text_Delete(tx8[cnt]);
TL_Delete(tl1[cnt]);
TL_Delete(tl2[cnt]);
TL_Delete(tl3[cnt]);
TL_Delete(tl4[cnt]);
TL_Delete(tl5[cnt]);
TL_Delete(tl6[cnt]);
TL_Delete(tl7[cnt]);
TL_Delete(tl8[cnt]);
}
tx1 = Text_New(NextBarSdate,NextBarStime,v1,NumToStr(v1,2));
tx2 = Text_New(NextBarSdate,NextBarStime,v2,NumToStr(v2,2));
tx3 = Text_New(NextBarSdate,NextBarStime,v3,NumToStr(v3,2));
tx4 = Text_New(NextBarSdate,NextBarStime,v4,NumToStr(v4,2));
tl1 = TL_New(sDate,sTime,v1,NextBarSdate,NextBarStime,v1);
tl2 = TL_New(sDate,sTime,v2,NextBarSdate,NextBarStime,v2);
tl3 = TL_New(sDate,sTime,v3,NextBarSdate,NextBarStime,v3);
tl4 = TL_New(sDate,sTime,v4,NextBarSdate,NextBarStime,v4);
TL_SetColor(tl1,RED);
TL_SetColor(tl2,BLUE);
TL_SetColor(tl3,RED);
TL_SetColor(tl4,MAGENTA);
TL_SetColor(tl5,WHITE);
TL_SetColor(tl6,WHITE);
TL_SetColor(tl7,LGREEN);
TL_SetColor(tl8,LGREEN);
TL_SetExtLeft(TL1,true);
TL_SetExtLeft(TL2,true);
TL_SetExtLeft(TL3,true);
TL_SetExtLeft(TL4,true);
TL_SetExtRight(TL1,true);
TL_SetExtRight(TL2,true);
TL_SetExtRight(TL3,true);
TL_SetExtRight(TL4,true);
2021-04-23
1272
글번호 148323
답변완료
추가 부탁드려요
답변 감사드립니다
작성해 주신 수식에 아래와 같이 최초에 있던 '청산과 익절 시 매매정지' 조건이 삭제되어버렸어요
if TotalTrades > TotalTrades[1] Then
{
Condition4 = False;
if IsExitName("xl",1) == true or IsExitName("xs",1) == true or IsExitName("stopprofittarget",1) == true then
Condition4 = true;
매매가 정지되는 조건은 1. 3번 연속 손실 2. 청산 시 3. 익절 시 4. 로스컷 일 때 입니다
부탁드립니다.
------------------------
안녕하세요
예스스탁입니다.
1
if sTime > starttime or sTime < Endtime and marketposition == 0 Then
if문에 or와 and가 같이 사용되면 ()로 우선순위를 지정해 주셔야 합니다.
작성하신 식은 marketposition == 0이 stime < Endtime에만 속하게 되어
매매정지가 제대로 동작하지 않습니다.
아래와 같이 시간제한 조건을 ()로 묶어주셔야 신호가 항상 무포지션에만 동작하게 됩니다.
if (sTime > starttime or sTime < Endtime) and marketposition == 0 Then
기존식을 청산후 매매정지 이후에 다시 신호가 발생하게 간단히 수정하면 아래와 같습니다.
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0),Lss(0),XTM(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
Lss = 0;
XTM = 0;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
if PositionProfit(1) < 0 Then
Lss = Lss+1;
Else
Lss= 0;
XTM = TM[BarsSinceExit(1)];
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if (sTime > starttime or sTime < Endtime) and marketposition == 0 and TM >= XTM+매매정지 Then
{
if (b_vv == lb and sum == lp) Then
{
Buy("b");
}
if (b_vv == sb and sum == sp) Then
{
Sell("s");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
2
3연속 손실시에만 매매정지후 진입은 아래와 같습니다.
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0),Lss(0),XTM(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
Lss = 0;
XTM = 0;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
if PositionProfit(1) < 0 Then
Lss = Lss+1;
Else
Lss= 0;
if Lss == 3 Then
{
XTM = TM[BarsSinceExit(1)];
}
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if (sTime > starttime or sTime < Endtime) and marketposition == 0 and TM >= XTM+매매정지 Then
{
if (b_vv == lb and sum == lp) Then
{
Buy("b");
}
if (b_vv == sb and sum == sp) Then
{
Sell("s");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
즐거운 하루되세요
> 산이보리 님이 쓴 글입니다.
> 제목 : 수식 의뢰 부탁드립니다.
> 안녕하세요
1. 아래 수식에서 3연속 손실이 발생할 경우 N분 매매정지를 할 수 있도록 수정 부탁드립니다
2. 그리고 매매가 끝나면 지정한 시간만큼 매매중지되어야 하는데 위 그림처럼 포지션 청산되자마자 다시 진입과 청산이 이루어집니다
항상 감사합니다
input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2);
var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0);
Array : VV[20](0);
var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0);
Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2];
Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2];
if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then
{
var1 = var1+1;
LL = L[2];
CL = C;
VV[0] = 1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
else
{
if L < LL Then
{
var1 = 0;
}
}
if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then
{
var2 = var2+1;
HH = H[2];
CS = C;
VV[0] = -1;
For cnt = 1 to 19
{
VV[cnt] = VV[cnt-1][1];
}
if VV[N-1] != 0 Then
{
sum = 0;
For cnt = 0 to N-1
{
sum = sum + VV[cnt];
}
}
}
Else
{
if H > HH Then
{
var2 = 0;
}
}
#전봉과 현재봉의 영업일이 다르면 당일청산조건
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
Condition4 = False;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
}
if TotalTrades > TotalTrades[1] Then
{
Condition4 = False;
if IsExitName("xl",1) == true or IsExitName("xs",1) == true or IsExitName("stopprofittarget",1) == true then
Condition4 = true;
}
b_vv = vv[4]+vv[3]+vv[2]+vv[1];
최고점 = highest(h,진입);
최저점 = lowest(l,진입);
if sTime > starttime or sTime < Endtime and marketposition == 0 Then
{
if (b_vv == lb and sum == lp) Then
{
if condition4 == False Then
Buy("b");
if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then
Buy("b1");
}
if (b_vv == sb and sum == sp) Then
{
if condition4 == False Then
Sell("s");
if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then
Sell("s1");
}
}
if MarketPosition(0) > 0 and C < LL Then
ExitLong("xl");
if MarketPosition(0) < 0 and C > HH Then
ExitShort("xs");
#타겟청산
SetStopProfittarget(익절,pointstop);
SetStopLoss( 손절 ,PointStop);
2021-04-23
1243
글번호 148322
답변완료
안녕하세요?
안녕 하세요?
수식 작성중 어려움이 있어 질문드립니다.
사진에 노란색부분에 진입을 한 상황으로 가정하고 설명 드리겠습니다.
진입시 HHH,LLL 파동의 고,저를 변수에 저장 했습니다.
if MarketPosition >= 0 then
{
HHH = 고[1,1];
LLL = 저[1,1];
P7 = tx7+((tx9-tx10)*AAA);
}
그이후 녹색상황으로 진행시 고,저가 변경됨니다.
녹색상황으로 진행되더라도 진입시점의 HHH,LLL의 변수가
변경되지 않도록 수식이 가능 할까요?
가능하다면 수식 작성 부탁드립니다.
감사합니다.
------------------------------------------------------------------
input : AAA(0.618);
var : HHH(0),LLL(0),P8(0),P7(0),P6(0),P3(0),P2(0),P1(0);
If Value2 == 1 and tx7 < L and 고[2,1] <고[1,1] Then
{
Buy("tx7",AtLimit,tx7);
ExitLong("p7",AtLimit,P7,"tx7");
if MarketPosition >= 0 then
{
HHH = 고[1,1];
LLL = 저[1,1];
P7 = tx7+((tx9-tx10)*AAA);
}
}
if 저[2,1] >=L Then
{
ExitLong("x");
}
2021-04-23
1171
글번호 148321
답변완료
수식 부탁드리겠습니다
안녕하세요
주식 종목검색을 할때
예를들어 if CrossUp( ma(C,5), ma(C,20) ) Then
find(1);
이럴경우 5이평선이 20이평선을 돌파한 모든 종목이 검색되는데
이것을 하루나 이틀전에 돌파한 것만 검색하거나
또는 5이평선이 20 이평선에 근접한 종목만을 검색하는 수식을 만들수 있을까요?
감사합니다.
2021-04-23
1162
글번호 148318
답변완료
수식 부탁드립니다
수고해 주셔서 감사드립니다.
아래의 조건에 따른 매매식 부탁을 드립니다.
매도조건
60분봉 상태
1. 5일 지수이동평균과 20일 지수이동평균 역배열 상태
2. 5일 지수이동평균 > 60분봉 현재가
3분봉 상태
1. 5일 지수이동평균과 10일 이동평균과 20일 이동평균 역배열 상태
2. 10일 이동평균 > 고가 > 5일 이동평균 AND 5일 이동평균 > 종가
3. 60분봉 조건과 3분봉 1번과 2번 조건 만족시 종가 매도
손절
1. 조건봉 직전 10켄들의 고점
익절
1. 조건봉 직전 10켄들의 고점과 저점의 폭
매수조건
60분봉 상태
1. 5일 지수이동평균과 20일 지수이동평균 정배열 상태
2. 60분봉 현재가 > 5일 지수이동평균
3분봉 상태
1. 5일 지수이동평균과 10일 이동평균과 20일 이동평균 정배열 상태
2. 시가 > 5일 이동평균 AND 5일 이동평균 > 저가 > 10일 이동평균
3. 60분봉 조건과 3분봉 1번과 2번 조건 만족시 종가 매수
손절
1. 조건봉 직전 10켄들의 저점
익절
1. 조건봉 직전 10켄들의 고점과 저점의 폭
감사드립니다.
2021-04-23
1205
글번호 148317
답변완료
수식 질문드립니다.
1분봉
c2 참조 data의
최근 3개봉 구간의 최고점 최저점 차이를
그리고 싶습니다.
부탁드립니다.
2021-04-23
1037
글번호 148311
답변완료
수식 부탁드립니다.
진입후 maketposition =1 일 경우 Entryprice 이 있는데
청산된후 maketposition =0 일 경우 Entryprice 이 사라지는데 두번째 매매시까지 Entryprice 을 어떤 변수에 기억하고 싶습니다..청산도 같은 방법으로 기억하고 싶어요
즉 1번째 진입한 Entryprice 값을 두번째매매까지 기억하고싶고 첫번째 청산된 exitprice
값을 두번째 진입까지 기억하는 방법을 할려주시면 감사하겠습니다.
2021-04-23
1126
글번호 148309