커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
8108
글번호 230811
답변완료
전일고저와 당일고저 연결선의 최근 완성봉 수치 구하기
안녕하세요
다음 수식 부탁드립니다.
다음 수식은 연결선물 분봉기준으로,
전일고가와 완성봉기준 당일고가, 그리고 전일저가와 완성봉기준 당일저가의
연결선을 잇는 수식입니다.
다른 지표들과 구분하기 위해서 '검색'에 적용하여 사용하고 있습니다.
var: HH(0),HD(0),HT(0),LL(0),LD(0),LT(0);
var: HH1(0),HD1(0),HT1(0),LL1(0),LD1(0),LT1(0);
var: D1(0),T1(0),D2(0),T2(0);
var: TL1(0),TL2(0),TL3(0),TL4(0),Tx(0),Tx1(0);
if Bdate!=Bdate[1] then {
D1 = sdate[1];
T1 = stime[1];
D2 = D1[1];
T2 = T1[1];
HH = H;
HD = sdate;
HT = stime;
HH1 = HH[1];
HD1 = HD[1];
HT1 = HT[1];
LL = L;
LD = sdate;
LT = stime;
LL1 = LL[1];
LD1 = LD[1];
LT1 = LT[1];
TL_Delete(TL1);
TL_Delete(TL2);
if HH1>0 then {
TL1 = TL_New(HD1,HT1,HH1,HD,HT,HH);
TL_SetExtRight(TL1,True);
TL_SetSize(TL1,2);
}
if LL1>0 then {
TL2 = TL_New(LD1,LT1,LL1,LD,LT,LL);
TL_SetExtRight(TL2,True);
TL_SetSize(TL2,2);
}
}
if H>HH then {
HH = H;
HD = sdate;
HT = stime;
TL_SetEnd(TL1,HD,HT,HH);
}
if L<LL then {
LL = L;
LD = sdate;
LT = stime;
TL_SetEnd(TL2,LD,LT,LL);
}
-----------------------------------
위의 수식에 다음의 내용을 추가하고 싶습니다.
1) 가장 최근 완성된 분봉의 추세선 위와 아래에
분봉이 완성될 때마다 해당값을 표시 (완성봉 기준으로 각각 하나씩만)
2) 분봉상 당일고저가 변하므로 당연히 완성봉기준 추세선의 해당값도 변동됨
또한, 고저의 변화가 아니더라도 봉이 경과되면서 해당값은 변동됨
3) 고가 추세선이든 저가 추세선이든, 당일 첫봉완성후 두점의 연결선이 있으므로
두점간의 진폭을 경과봉수로 나누면 한봉의 경과값이 나올 것이고,
4) 이를 바탕으로 완성봉기준 당일 고저값이후 경과되는 '봉수 * 한봉의 경과값'을
가감하여 해당값을 표시하기를 원함
5) 해당값의 표시는 당일 경과봉수가 30개 이상 진행되었을 때부터로 함 --> 외부변수 처리
당일고저가 계속 변하면서 새로운 추세선이 만들어지고,
이에 따라 단순히 경과값의 가감으로는 해당값을 구할 수가 없어서 문의드립니다.
부탁드리겠습니다.
감사합니다 !!
2018-03-06
315
글번호 117140
답변완료
지표문의합니다.
macd오실레이터 골드후 바로 다음봉 데드
수식문의합니다.
감사합니다.
2018-03-05
228
글번호 117139
답변완료
종목검색기능질문 입니다
안녕하세요
종목검색 기능에 있어 궁금한게 있는데요
검색 수식에 현재가가 5이평선 골드크로스 발생시 종목이 검색되도록 만들어서
검색버튼 누르니깐 종목이 5종목이 검출되더군요
그런데 몇분 지나 다시 검색버튼 누르니까
3종목만 검색되고 아까 검색되었던 2종목은 없어지던데
이 원인은 5이평 골드크로스 조건을 검색당시에 만족하지 못하게 차트가 변동되어
그런거 같습니다.
이렇게 말고
검색버튼을 계속눌러도 한번 검색된 종목은
중간에 없어지지 않고 계속 남아있도록 하는 방법이 있을까요?
불가능하다면
예스스팟으로
검색된 종목이 다시 사라지지않고 남아있으며 또한
검색버튼 누르지않아도 실시간 자동검색되도록 만들수 있는지
궁금합니다.
2018-03-05
245
글번호 117138
답변완료
시간제한
일봉차트에서 다음과 같은 수식이
var1 = DayClose(1);
If c > var1 Then
Buy();
If c < var1 Then
Sell();
1 영업일 중 090000 부터 093000 까지의 시간 외 에서는 신호(미완성신호포함)가 발생하도록 수식 변경을 부탁합니다.
2018-03-05
216
글번호 117137
답변완료
부탁드립니다
09시부터 09시30분(시간변경가능)까지의 시,고,저,중,종가를 이전 10일(변경가능)동안의 모든가격을 알고싶습니다 부탁드립니다
2018-03-05
226
글번호 117136
답변완료
거래횟수
거래횟수를 조절하는 수식을 추가해주셨으면 합니다
항상 고맙습니다
해당수식
Inputs: DMILen(14), Consec(3), MinDiff(0);
Variables: DMIDiff(0);
DMIDiff = DIPlus(DMILen) - DIMinus(DMILen);
If DMIDiff[Consec] > 0 Then Begin
If DMIDiff >= MinDiff AND CountIF(DMIDiff > DMIDiff[1], Consec) == Consec Then
Buy ("DMI_LE");
End;
If DMIDiff[Consec] < 0 Then Begin
If Abs(DMIDiff) >= MinDiff AND CountIF(DMIDiff < DMIDiff[1], Consec) == Consec Then
Sell ("DMI_SE");
End;
2018-03-05
201
글번호 117135
답변완료
문의드립니다.
Inputs: Length1(15),Length2(60);
var:HV1(0),LV1(0),MV1(0),HV2(0),LV2(0),MV2(0);
HV1 = highest(h,Length1);
LV1 = lowest(l,Length1);
MV1 = ((HV1 + LV1)/2);
HV2 = highest(h,Length2);
LV2 = lowest(l,Length2);
MV2 = ((HV2 + LV2)/2);
질문1]
a. MV1 이 MV2를 교차상승할 때 교차가
b. MV1 이 MV2를 교차하락할 때 교차가
질문2]
a. MV1이 MV2 보다 클 때 가장 낮은 MV2 값
b. MV1이 MV2 보다 작을 때 가장 높은 MV2 값
질문3]
a. MV1이 MV2 보다 클 때 봉의 갯수
b. MV1이 MV2 보다 작을 때 봉의 갯수
질문4]
a. MV1 이 MV2 보다 클 때 가장 큰 MV1-MV2 의 값
b. MV1 이 MV2 보다 작을 때 가장 큰 MV2-MV1 의 값
감사합니다.
2018-03-05
248
글번호 117134
답변완료
문의드립니다
0시 부터 23 시 까지
NN시 00분 30초 부터 NN시 05분 00초 까지 매매가능시간
NN시 15분 30초 부터 NN시 20분 00초 까지 매매가능시간
NN시 30분 30초 부터 NN시 35분 00초 까지 매매가능시간
NN시 45분 30초 부터 NN시 50분 00초 까지 매매가능시간
매시간마다
위와 같은 시간 사이 에서만
매매 하고 싶습니다
감사합니다
2018-03-05
212
글번호 117133
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시뮬레이트 차트에 쓸 수 있는 코드로 변환 부탁드립니다.
Indicator: VFI-Price Divergence
inputs:
Coef( .2 ),
VCoef( 2.5 ),
Period( 130 ),
VFISmoothing( 3 ),
LinearRegPeriod( 120 ) ;
variables:
oCutOff( 0 ), { calculated volume cutoff }
oVC( 0 ), { trimmed volume values }
oMF( 0 ), { difference in ‘typical’ price }
oVFI( 0 ), { calculated VFI }
MySmoothedVFI( 0 ), { smoothed VFI values }
MyVolume( 0 ), { volume after BarInterval test }
LRS( 0 ), { linear regression slope - price }
LRSI( 0 ), { linear regression slope - VFI }
KatsanosDivergence( 0 ),
LowestVFI( 9999999 ),
VFI1( 0 ); { always positive VFI }
MyVolume = iff( BarType < 2, Ticks, Volume ) ;
MySmoothedVFI = VFISmooth( Coef, VCoef, Period,
VFISmoothing, MyVolume, oCutOff, oVC, oMF, oVFI ) ;
if MySmoothedVFI < LowestVFI then
LowestVFI = MySmoothedVFI ;
VFI1 = MySmoothedVFI + AbsValue( LowestVFI )+ 10 ;
if Currentbar > LinearRegPeriod * 2 then
begin
if Close[ LinearRegPeriod ] > 0 then
LRS = LinearRegSlope( close , LinearRegPeriod )
/ close[ LinearRegPeriod ] * 100 ;
if VFI1[ LinearRegPeriod ] > 0 then
LRSI= LinearRegSlope( VFI1, LinearRegPeriod )
/ VFI1[ LinearRegPeriod ] * 100 ;
KatsanosDivergence =
XAverage( LRSI - LRS, 3 ) * 100 ;
Plot1( KatsanosDivergence ) ;
end ;
Strategy: Katsanos VFI Cross 0
inputs:
Coef( .2 ),
VCoef( 2.5 ),
Period( 5 ),
SmoothedPeriod( 7 ) ;
variables:
oCutOff( 0 ),
oVC( 0 ),
oMF( 0 ),
oVFI( 0 ),
MyVFI( 0 ),
MyVolume( 0 ) ;
MyVolume = iff( BarType < 2, Ticks, Volume ) ;
MyVFI = VFISmooth( Coef, VCoef, Period,
SmoothedPeriod, MyVolume, oCutOff, oVC, oMF, oVFI );
if MyVFI crosses over 0 then
buy next bar at market ;
if MyVFI crosses under 0 then
sellshort next bar at market ;
Strategy: Katsanos VFI Divergence
inputs:
Coef( .2 ),
VCoef( 2.5 ),
Period( 130 ),
VFISmoothing( 3 ),
LinearRegPeriod( 120 ),
TradeThreshold( 100 ) ;
variables:
oCutOff( 0 ), { calculated volume cutoff }
oVC( 0 ), { trimmed volume values }
oMF( 0 ), { difference in ‘typical’ price }
oVFI( 0 ), { calculated VFI}
MySmoothedVFI( 0 ), { smoothed VFI values }
MyVolume( 0 ), { volume after BarInterval test }
LRS(0), {linear regression slope - normalized price}
LRSI(0), {linear regression slope - normalized VFI}
KatsanosDivergence( 0 ),
LowestVFI( 9999999 ),
VFI1( 0 ) ; { always positive VFI }
MyVolume = iff( BarType < 2, Ticks, Volume ) ;
MySmoothedVFI = VFISmooth( Coef, VCoef, Period,
VFISmoothing , MyVolume, oCutOff, oVC, oMF, oVFI ) ;
if MySmoothedVFI < LowestVFI then
LowestVFI = MySmoothedVFI ;
VFI1 = MySmoothedVFI + AbsValue( LowestVFI ) + 10 ;
if Currentbar > LinearRegPeriod * 2 then
begin
if Close[ LinearRegPeriod ] > 0 then
LRS = LinearRegSlope( Close , LinearRegPeriod )
/ Close[ LinearRegPeriod ]*100 ;
if VFI1[ LinearRegPeriod ] > 0 then
LRSI = LinearRegSlope( VFI1, LinearRegPeriod )
/ VFI1[ LinearRegPeriod ]*100 ;
KatsanosDivergence =
XAverage( LRSI - LRS, 3 ) * 100 ;
end ;
{ enter long }
if KatsanosDivergence[ 1 ] > TradeThreshold
and KatsanosDivergence[ 1 ] > KatsanosDivergence
and LRSI > 0
then
Buy next bar at Market ;
{ exit long }
if KatsanosDivergence < 0 and LRSI < 0 then
Sell next bar at Market ;
Strategy: Katsanos VFI Pattern
inputs:
VFIEnterL( -2 ),
MA( 40 ),
LRPeriod( 20 ),
LRC( 30 ),
UB( .1 ),
LB( -.05 ),
VFIExitAngle( -40 ),
VFIExitL( -2 ),
Coef( .2 ),
VCoef( 2.5 ),
Period( 130 ),
VFISmoothing( 3 ) ;
variables:
oCutOff( 0 ),
oVC( 0 ),
oMF( 0 ),
oVFI( 0 ),
MySmoothedVFI( 0 ),
MyVolume( 0 ) ;
MyVolume = iff( BarType < 2, Ticks, Volume ) ;
MySmoothedVFI = VFISmooth( Coef, VCoef, Period,
VFISmoothing, MyVolume, oCutOff, oVC, oMF, oVFI ) ;
if BarNumber > 2 * Period then
begin
if MarketPosition = 0
and oVFI > VFIEnterL
and LinearRegAngleFC( oVFI, LRPeriod ) > 0
and oVFI > XAverage( oVFI, MA )
and LinearRegSlopeFC( C, LRC ) < UB
* LinearRegValue( C , LRC, LRC - 1 ) / 100
and LinearRegSlopeFC( C, LRC ) > LB
* LinearRegValue( C, LRC, LRC - 1 ) / 100
then
Buy ( “BUY” ) next bar at market ;
if LinearRegAngle( oVFI, LRPeriod ) < VFIExitAngle
or oVFI < VFIExitL
then
Sell ( “VFI EXIT” ) next bar at market ;
end ;
Strategy: Katsanos VFI MA Cross
Inputs:
Coef( .2 ),
VCoef( 2.5 ),
Period( 1305 ),
SmoothedPeriod( 3 ),
LongVFILen( 25 ),
ShortVFILen( 11 ) ;
variables:
oCutOff( 0 ),
oVC( 0 ),
oMF( 0 ),
oVFI( 0 ),
MyVFI( 0 ),
MyVolume( 0 ),
LongMA( 0 ),
ShortMA( 0 ) ;
MyVolume = iff( BarType < 2, Ticks, Volume ) ;
MyVFI = VFISmooth( Coef, VCoef, Period, SmoothedPeriod,
MyVolume, oCutOff, oVC, oMF, oVFI ) ;
LongMA = XAverage( MyVFI, LongVFILen ) ;
ShortMA = XAverage( MyVFI, ShortVFILen ) ;
if ShortMA crosses over LongMA then
buy next bar at market ;
if LongMA crosses over ShortMA then
sell next bar at market ;
2018-03-05
305
글번호 117132