커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6183
글번호 230811
답변완료
세 개의 시스템 신호입니다.
세 개의 신호를 한개의 시스템으로 만들어주시길 부탁드립니다.
매수진입신호만 부탁드립니다.
LRL, LRS, 일목시스템신호인데 한개의 시스템신호로 합쳐주시길 부탁드립니다.
주식 매수 시스템으로 사용 할려고 합니다
1,LRL 시스템
input : P(20),Period(20);
var : cnt(0);
var1 = LRL(c,P);
var2 = ma(c,Period);
if crossup(var1,var2) Then
value1 = H;
if CrossDown(var1,var2) Then
value2 = L;
condition1 = var1 > var2 and C > var1 and var1 > var1[1] and C > value1;
##차트상 첫진입(앞에 청산이 없는경우)
if MarketPosition() == 0 and cnt < 1 Then{
if condition1 Then{
buy("매수");
cnt = 1;
}
}
##첫진입 이후(앞에 청산이 있는경우)
if MarketPosition() == 0 and cnt == 1 Then{
if IsExitName("매수청산",1) == True Then{
if condition1 Then
buy("매수1");
}
if IsExitName("매수청산",1) == False Then{
if BarsSinceExit(1) >= 3 and condition1 Then
buy("매수2");
}
}
if var1 < var2 and c < value2 Then
exitlong("매수청산");
SetStopLoss(13);
input : Period1(30),Period2(7),RSQR(15);
var : cnt(0);
2,LRS 시스템
var1 = LRS(c,Period1);
var2 = ema(var1,Period2);
var3 = RSquare(var1,var2,RSQR);
if crossup(var1,var2) Then
value1 = H;
if CrossDown(var1,var2) Then
value2 = L;
condition1 = var1 > var2 and var1 > var1[1] and var3 > 0.3 and var3 > var3[1] and C > value1;
condition2 = var1 < var2 and var1 < var1[1] and var3 > 0.3 and var3 > var3[1] and C < value2;
if condition1 == true Then
buy();
if var1 < var2 and C < value2 Then
exitlong();
if condition2 == True Then
sell();
if var1 < var2 and c > value1 Then
ExitShort();
SetStopLoss(5);
##차트상 첫진입(앞에 청산이 없는경우)
if MarketPosition() == 0 and cnt < 1 Then{
if condition1 Then{
buy("매수");
cnt = 1;
}
if condition2 Then{
sell("매도");
cnt = 1;
}
}
##첫진입 이후(앞에 청산이 있는경우)
if MarketPosition() == 0 and cnt == 1 Then{
if IsExitName("매수청산",1) == True Then{
if condition1 Then
buy("매수1");
}
if IsExitName("매수청산",1) == False Then{
if BarsSinceExit(1) >= 3 and condition1 Then
buy("매수2");
}
}
if var1 < var2 and c < value2 Then
exitlong("매수청산");
3,일목 시스템
SetStopLoss(13);
var : cnt(0);
var : 전환선(0),기준선(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
if crossup(전환선,기준선) Then
value1 = H;
if CrossDown(전환선,기준선) Then
value2 = L;
condition1 = 전환선 > 기준선 and C > 전환선 and 전환선 > 전환선[1] and 기준선 > 기준선[1] and C > value1;
##차트상 첫진입(앞에 청산이 없는경우)
if MarketPosition() == 0 and cnt < 1 Then{
if condition1 Then{
buy("매수");
cnt = 1;
}
}
##첫진입 이후(앞에 청산이 있는경우)
if MarketPosition() == 0 and cnt == 1 Then{
if IsExitName("매수청산",1) == True Then{
if condition1 Then
buy("매수1");
}
if IsExitName("매수청산",1) == False Then{
if BarsSinceExit(1) >= 3 and condition1 Then
buy("매수2");
}
}
if 전환선 < 기준선 and C < value2 Then
exitlong("매수청산");
SetStopLoss(13);
2018-01-18
195
글번호 115907
knb 님에 의해서 삭제되었습니다.
2018-01-18
59
글번호 115905
답변완료
질문드립니다.
오후4시부터 오후5시30분까지 위로 15틱이상올랐으면 이라는 로직 부탁드립니다.
2. countif 함수에서요.
if countif(조건),n) 이렇게 n값으로 범위를 주는데 이 범위를 '포지션진입하기전'으로 할려면 어떻게해야할까요?
2018-01-18
140
글번호 115902
답변완료
부탁 드립니다.
도움주심에 감사 드립니다.
첨부한 그림과 같이 부탁 드립니다.
2018-01-18
184
글번호 115895
yes 님에 의해서 삭제되었습니다.
2018-01-18
0
글번호 115889
답변완료
문의드립니다.
항상 감사합니다.
1. 코딩부탁드립니다.
-첫봉길이+둘째봉길이+셋째봉길이가 n이상이면 a조건 청산
-전일종가대비 둘째봉까지의 변동폭(고-저)이 n이상이면 a조건 청산
-둘째봉까지를 n% 되돌렸을 때
2018-01-18
143
글번호 115888
회원 님에 의해서 삭제되었습니다.
2018-01-18
0
글번호 115883
답변완료
질문
인버스식인데 이것도 교정 부탁드립니다. 감사합니다.
input : BarsEntryInterval(20), pMaxContracts(4),pTimeInterval(11);
Var : vA_value(0,data2),TT(0), vB_value(0,data2),vStartMin(0,data2);
var : PreTT(0,data2),cond99(false,data1);
If data2(bdate <> bdate[1]) Then
{
vA_value = data2(H);
vB_value = data2(L);
Cond99 = False;
vStartMin = data2(TimeToMinutes(stime));
PreTT = TotalTrades[1];
}
If Cond99 == False Then
{
if vA_value < data2(H) Then
vA_value = data2(H);
if vB_value > data2(L) Then
vB_value = data2(L);
}
If data2((TimeToMinutes(stime) - vStartMin) == pTimeInterval And Cond99 == False) Then
{
Cond99 = True;
}
if Cond99 Then
{
If data2(CrossUp(C, vA_value)) Then ExitLong("BX");
#If data2(CrossDown(C, vB_value)) Then ExitLong("SX");
If data2(time <= 115900) And TT - PreTT <= 2 Then
{
If data2(CrossUp(C, vA_value)) Then ExitLong("B");
If data2(CrossDown(C, vB_value)) Then buy("S");
}
/* if MarketPosition == 1 And data2(C > vA_value) And CurrentContracts < pMaxContracts Then{
if BarsSinceEntry == ( 1 * BarsEntryInterval) Then
Buy("reBuy1");
if BarsSinceEntry == ( 2 * BarsEntryInterval) Then
Buy("reBuy2");
if BarsSinceEntry == ( 3 * BarsEntryInterval) Then
Buy("reBuy3");
}*/
if MarketPosition == 1 And data2(C < vB_value) And CurrentContracts < pMaxContracts Then{
if BarsSinceEntry == ( 1 * BarsEntryInterval) Then
buy("reSell1");
if BarsSinceEntry == ( 2 * BarsEntryInterval) Then
buy("reSell2");
if BarsSinceEntry == ( 3 * BarsEntryInterval) Then
buy("reSell3");
}
}
SetStopEndofday(150000);
2018-01-18
146
글번호 115880
답변완료
문의드립니다.
전번 문의 답변 감사드립니다.
답변해주신 내용으로 시스템 적용해보니
이평아래에서 매수한번만 이뤄진다음 다음 매도를 기다리게 되어있습니다.
근데 다음 매도 조건에서 조건성립이 안되어 매도신호발생조건이 안되었고
다시 매수 조건에서 매수가 나와야하는데 매수다음 매도신호를 기다리다 보니
매수신호 발생되어야할 자리에서 매수가 안되고 건너뛰는 문제가 발생하네요.
1. 매수 매도 번갈아가며 진행되어도 매수신호 발생후 매도신호 기다리다 조건에 안맞아
매수조건이 다시 돌아오면 매수를 할수 있도록, 즉 매수(발생)-매도(조건불충족 미발생)-매수(발생)....이평이 상승하다 하락하면 매수후 매도기다리는데 매수신호후 매도조건을 만족하지 못해서 매도는 미발생 이평이 다시 상승하면 매수조건이 충족되면 매수신호발생할수 있도록 변경 부탁드립니다.
2. 조건하에서 발생될수 있는 횟수를 조정할수 있도록 부탁드립니다.
////////// 지난번 답변 내용입니다.
안녕하세요
예스스탁입니다.
식을 아래와 같이 구성하시면
매수와 매도가 번갈아 가면서 발생합니다.
var : Bcond(false),Scond(false);
Bcond = MarketPosition == 0 and MarketPosition(1) == 1;
Scond = MarketPosition == 0 and MarketPosition(1) == -1;
var1 = ma(c,5);
if Bcond == false and var1 > var1[1] and 조건 then
buy();
if Scond == false and var1 < var1[1] and 조건 then
sell();
SetStopProfittarget(PriceScale*20,PointStop);
2018-01-18
155
글번호 115878