커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
5470
글번호 230811
답변완료
기본 시스템
예스프로그램 기본 시스템의
Var : value(0);
value = 0;
# 매수 / 매도청산
If CCI(9) > 0 Then
value = 1;
If MACD(12,26) > 0 Then
value = value+1;
If DIPlus(14) > DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) > StochasticsD(12,5,5) Then
value = value+1;
# 매수/매도청산
If value >= 3 Then
{
Buy("매수");
}
value = 0;
# 매도/매수청산
If CCI(9) < 0 Then
value = 1;
If MACD(12,26) < 0 Then
value = value+1;
If DIPlus(14) < DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) < StochasticsD(12,5,5) Then
value = value+1;
If value >= 3 Then
{
Sell("매도");
}
위조건에
기본 시스템 파라볼릭
Input : af(0.02), maxAF(0.2);
Var : value(0);
value = sar(af,maxAF);
# 매수/매도청산
If C > value Then
{
Buy();
}
# 매도/매수청산
If C < value Then
{
Sell();
}
을 합성 부탁 드립니다.
2020-07-14
1587
글번호 140664
답변완료
수정 부탁드립니다.
안녕하세요? 매매횟수를 넣는 답변 잘받았습니다.
그부분은 작동이 잘 되는것 같은데, 손절을 외부변수에 넣어놓으면 되었는데, 지금 안되네요. 손절이 작동할수있도록 수정 부탁드립니다.
감사합니다.
Input : 단기(5), 장기(20), profit_pt(0.5), loss_pt(0.5), 장종료청산(151000),진입횟수(3);
Variable : ent_position(0),entry(0);
if MarketPosition == 0 Then{
var1 = 0;
ent_position = 0;
entry = 0;
}
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) then
entry = entry+1;
//If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) or ( C[1]<O[1] and H[1]==O[1] and C>O ) Then {
If ma(C,단기)>ma(C,장기) and ( C>O and L==O ) and ent_position == 0 and entry < 진입횟수 Then {
Buy("매수",AtMarket);
Var1 = NextBarOpen;
ent_position = 1;
}
//If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) or ( C[1]>O[1] and L[1]==O[1] and C<O ) Then {
If ma(C,단기)<ma(C,장기) and ( C<O and H==O ) and ent_position == 0 and entry < 진입횟수 Then {
Sell("매도",AtMarket);
Var1 = NextBarOpen;
ent_position = -1;
}
if PositionProfit >= profit_pt and ent_position<>0 Then{
if ent_position == 1 and C<O Then {
ExitLong("매수청산");
}
if ent_position == -1 and C>O Then {
ExitLong("매도청산");
}
}
2020-07-14
1489
글번호 140662
2wnwn 님에 의해서 삭제되었습니다.
2020-07-14
11
글번호 140656
답변완료
문의 드립니다.
항상 수고 많으십니다.
종가 매수인데
종목의 종가가 상한가이면 매수가 들어가지 않게끔 할려면 어떻게 해야하나요??
감사합니다.
2020-07-14
1313
글번호 140655
답변완료
지표
하나만 더 수정 해주세요
10분에 60분봉의 가중도 알려 주세요
Input : Length1(5),Length2(20);
Var : TLen1(0),TLen2(0),i1(0),i2(0);
var : Hsum1(0),Hsum2(0),Havg1(0),Hma1(0);
var : Lsum1(0),Lsum2(0),Lavg1(0),Lma1(0);
var : HLsum1(0),HLsum2(0),HLavg1(0),HLma1(0);
var : Hcum1(0),Hcum2(0),Havg2(0),Hma2(0);
var : Lcum1(0),Lcum2(0),Lavg2(0),Lma2(0);
var : HLcum1(0),HLcum2(0),HLavg2(0),HLma2(0);
TLen1 = Ceiling((Length1 + 1) * .5);
TLen2 = Ceiling((Length2 + 1) * .5);
Hsum2 = 0;
Lsum2 = 0;
HLsum2 = 0;
for i1 = 0 to TLen1-1
{
Hsum1 = 0;
Lsum1 = 0;
HLsum1 = 0;
for i2 = i1+0 to TLen1-1+i1
{
Hsum1 = Hsum1 + DayHigh(i2);
Lsum1 = Lsum1 + DayLow(i2);
HLsum1 = HLsum1 + (DayHigh(i2)+DayLow(i2))/2;
}
Havg1 = Hsum1/TLen1;
Hsum2 = Hsum2 + Havg1;
Lavg1 = Lsum1/TLen1;
Lsum2 = Lsum2 + Lavg1;
HLavg1 = HLsum1/TLen1;
HLsum2 = HLsum2 + HLavg1;
}
Hma1 = Hsum2/TLen1;
Lma1 = Lsum2/TLen1;
HLma1 = HLsum2/TLen1;
Hcum2 = 0;
Lcum2 = 0;
HLcum2 = 0;
for i1 = 0 to TLen2-1
{
Hcum1 = 0;
Lcum1 = 0;
HLcum1 = 0;
for i2 = i1+0 to TLen2-1+i1
{
Hcum1 = Hcum1 + DayHigh(i2);
Lcum1 = Lcum1 + DayLow(i2);
HLcum1 = HLcum1 + (DayHigh(i2)+DayLow(i2))/2;
}
Havg2 = Hcum1/TLen2;
Hcum2 = Hcum2 + Havg2;
Lavg2 = Lcum1/TLen2;
Lcum2 = Lcum2 + Lavg2;
HLavg2 = HLcum1/TLen2;
HLcum2 = HLcum2 + HLavg2;
}
Hma2 = Hcum2/TLen2;
Lma2 = Lcum2/TLen2;
HLma2 = HLcum2/TLen2;
Plot1(Hma1, "고가삼각가중1");
Plot2(Hma2, "고가삼각가중2");
Plot3(Lma1, "저가삼각가중1");
Plot4(Lma2, "저가삼각가중2");
Plot5(HLma1, "중간삼각가중1");
Plot6(HLma2, "중간삼각가중2");
Plot7(Hma2+abs(Hma2-Lma2), "20고가+진동폭");
Plot8(Lma2-abs(Hma2-Lma2), "20저가-진동폭");
2020-07-14
1447
글번호 140654
답변완료
지표
감사합니다
지표채우기는 해결했읍니다
1>
캔들 -20
-6
고다저가중심지표라인 수식 부탁드립니다
2020-07-14
1520
글번호 140653
답변완료
질문 부탁드립니다
안녕하세요
도움감사드립니다~~
아래 기존수식에다 청산부분만 (청산중복)추가!로 부탁~~드립니다
~매수신호(체결)후 2100봉까지도 미청산때는
2000봉동안중에 장기(이평1200) 최고가 > 중기(이평150)~~~~일때 매수청산~~
~매도신호(체결)후 2100봉까지도 미청산때는
2000봉동안중에 장기(이평1200) 최저가 < 중기(이평150)~~~~일때 매도청산~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
질문~~아래수식작성때~~
(1)번--매수-매수청산-매도-매도청산
(2)번--매수-매도-매수청산-매도청산~~~~~(1)번과 (2)번의 차이점이 있는지요?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
input : 단(50),중(150),장(1200),천(2000);
var : 단기(0),중기(0),이천(0),장기(0);
단기 = ma(c,단);
중기 = ma(c,중);
장기 = ma(c,장);
이천 = ma(c,천);
if 중기 /장기 * 100 > 100.10 and
단기 > 중기[1300] and 이천 > 이천[200] Then buy("매수진");
if 중기 /장기 * 100 < 99.90 and
단기 < 중기[1300] and 이천 < 이천[200] Then Sell("매도진");
if MarketPosition == 1 Then
{
if ( 단기 < 중기[1300] and 이천 < 이천[200]) or
(barssinceentry >= 1400 and 중기 /장기 * 100 > 99.50) Then exitlong("매수청");
}
if MarketPosition == -1 Then
{
if (단기 > 중기[1300] and 이천 > 이천[200]) or
(barssinceentry >= 1400 and 중기 /장기 * 100 < 100.50) Then exitshort("매도청");
}
감사합니다~
2020-07-14
1540
글번호 140648
답변완료
문의
라인작업후
채우기 기능이 안되서요
1<2
3<4 등으로 했는데
화면에 라인만 나오네요
Input : 기준1(290), 이격1(2.5), 이격2(1.25), AA1(5);
var3 = 기준1;
var1=0;
if var1 <= AA1 Then {
plotbaseline1(Var3,"1");
plotbaseline2(Var3-이격2,"2");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline3(Var3-(이격1*1),"3");
plotbaseline4(Var3-(이격1*1)-이격2,"4");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline5(Var3-(이격1*2),"5");
plotbaseline6(Var3-(이격1*2)-이격2,"6");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline7(Var3-(이격1*3),"7");
plotbaseline8(Var3-(이격1*3)-이격2,"8");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline9(Var3-(이격1*4),"9");
plotbaseline10(Var3-(이격1*4)-이격2,"10");
var1 = var1 +1 ;
}
if var1 <= AA1 Then {
plotbaseline11(Var3-(이격1*5),"11");
plotbaseline12(Var3-(이격1*5)-이격2,"12");
var1 = var1 +1 ;
}
2020-07-14
1499
글번호 140647
답변완료
특정일.미결제증감.basis
1. 특정한 날(20191231, 20200630)만 거래하는 수식 부탁드립니다.
그리고 특정한 날 100개를 나열하는 것과 한줄의 수식으로 100개를 커버하는 것의 속도 차이가 있는지요?
2. 선물거래 3가지 수식 부탁드립니다.
- 미결제증감 +20 buy
- basis +0.02 buy
- 괴리율 +0.02 buy
2020-07-19
1576
글번호 140646