커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
4421
글번호 230811
답변완료
식 문의드립니다.
안녕하세요 항상 수고많으십니다.
검색식 문의드립니다.
1. 일봉기준으로 3거래일간(당일포함) 한번이라도 50억이상 거래대금이 넘은적이 있는 것
2. 일봉기준으로 종가시 10일,20일선이 역배열이고 종가가격이 20일선 아래에 있을 것
3. 단일가 종목 제외 및 다음날 단일가 지정 종목 제외
4. 환기종목 제외
위 조건을 모두충족하는 검색식 부탁드립니다.
감사합니다~
2018-08-05
200
글번호 121143
답변완료
문의드립니다.
안녕하세요? 더운데 수고 많으십니다.
항상 도와주셔서 너무 고맙습니다.
수식작성 부탁드립니다.
감사합니다.
-모든매매는 틱차트 입니다.
*진입조건
1. 몸통길이(외부변수1, 틱) 가 음봉 일시 매도
2. 몸통길이(외부변수2, 틱) 가 양봉 일시 매수
*청산조건
1. 손절(외부변수3, 틱)
2. 익절(외부변수4, 틱)
* 기타사항 정리
1. 익절이든 손절이든 하루에 1회매매로 종결
2. 모든매매차트는 틱차트
4. 모든 진입은 외부변수에 설정해놓은게 2틱이라면, 봉이 생성도중2틱이 되었다고 진입이 아
니라, 봉이 종료시2틱일시 진입
2018-08-05
187
글번호 121142
답변완료
이동평균선
캔들이 20일선 위로 올라갔을때 20일선은 빨간색으로, 캔들이 20일선 아래로 내려왔을때 20일선은 파란색으로 20일 이동평균선의 색상이 자동으로 바뀌어 나타낼수 있는 수식 부탁드립니다.
2018-08-05
208
글번호 121141
답변완료
검색식 문의합니다
C가 20이평선 밑에 있는경우가 25봉중25번 이었다가 c가20이평선 위로 올라온 종목 검색식요!
감사합니다~^^
2018-08-04
186
글번호 121140
답변완료
부탁드립니다.
감사드립니다.
1. 아래식에서 진입신호가 나오기전에 스위칭이 되는 횟수를 S(2) 두번으로 제한하고 싶습니다 수정 부탁드립니다.
2. SetStopProfittarget(0.2)의 익절과 같은 방식으로 손절(0.2) 수식을 추가 요청드립니다.
input : 익절3(22),스위칭(10);
input:b_time1(000001),e_time1(030000),
stoK_p11(50), stoK_p12(50), stoK_p13(10),
ma_p11(10),ma_p12(5),ma_p13(15),ma_p14(250),
ma_p15(20),ma_p16(10),ma_p17(38),
b_time2(030001),e_time2(180000),
stoK_p21(50),stoK_p22(50),stoK_p23(10),
ma_p21(25),ma_p22(5),ma_p23(15),ma_p24(127),
ma_p25(68),ma_p26(10),ma_p27(15),
b_time3(180001),e_time3(240000),
stoK_p31(50),stoK_p32(50),stoK_p33(10),
ma_p31(25),ma_p32(5),ma_p33(15),ma_p34(102),
ma_p35(40),ma_p36(10),ma_p37(15);
var : BH(0),SL(0),para(0),HE(0),LE(0);
Var:stoK(0),stoD(0),TRIXv(0),TRIXsig(0);
var : StochasticsKS1(0),StochasticsDS1(0),HV1(0),Lv1(0),FK1(0);
var : StochasticsKS2(0),StochasticsDS2(0),HV2(0),Lv2(0),FK2(0);
var : StochasticsKS3(0),StochasticsDS3(0),HV3(0),Lv3(0),FK3(0);
LV1 = Lowest(L, stoK_p11);
HV1 = Highest(H, stoK_p11);
FK1 = (Close - LV1) / (HV1 - LV1) * 100;
StochasticsKS1 = ma(FK1,stoK_p12);
StochasticsDS1 = ma(StochasticsKS1,stoK_p13);
LV2 = Lowest(L, stoK_p21);
HV2 = Highest(H, stoK_p21);
FK2 = (Close - LV2) / (HV2 - LV2) * 100;
StochasticsKS2 = ma(FK2,stoK_p22);
StochasticsDS2 = ma(StochasticsKS2,stoK_p23);
LV3 = Lowest(L, stoK_p31);
HV3 = Highest(H, stoK_p31);
FK3 = (Close - LV3) / (HV3 - LV3) * 100;
StochasticsKS3 = ma(FK3,stoK_p32);
StochasticsDS3 = ma(StochasticsKS3,stoK_p33);
If b_time1 <= Time and Time <= e_time1 Then
{
stoK = StochasticsKS1;
stoD = StochasticsDS1;
If countif(ma(C,ma_p11)[1] < ma(C,ma_p11),1) == 1
and (ma(C,ma_p12)[1] <= ma(C,ma_p13)[1] and ma(C,ma_p12) > ma(C,ma_p13))
and countif(ma(C,ma_p14)[1] < ma(C,ma_p14),1) == 1
Then
{
If !(ExitName(1) == "B익절%" and
(EntryName(1) == "매수1" or EntryName(1) == "매수2" or EntryName(1) == "매수3") and
MarketPosition == 0) Then
Buy("매수1",AtMarket);
}
If countif(ma(C,ma_p11)[1] > ma(C,ma_p11),1) == 1
and (ma(C,ma_p12)[1] >= ma(C,ma_p13)[1] and ma(C,ma_p12) < ma(C,ma_p13))
and countif(ma(C,ma_p14)[1] > ma(C,ma_p14),1) == 1
Then
{
If !(ExitName(1) == "S익절%" and
(EntryName(1) == "매도1" or EntryName(1) == "매도2" or EntryName(1) == "매도3") and
MarketPosition == 0) Then
Sell("매도1",AtMarket);
}
// SetStopProfittarget(목표청산1);
}
If b_time2 <= Time and Time <= e_time2 Then
{
stoK = StochasticsKS2;
stoD = StochasticsDS2;
If countif(ma(C,ma_p21)[1] < ma(C,ma_p21),1) == 1
and (ma(C,ma_p22)[1] <= ma(C,ma_p23)[1] and ma(C,ma_p22) > ma(C,ma_p23))
and countif(ma(C,ma_p24)[1] < ma(C,ma_p24),1) == 1
Then
{
If !(ExitName(1) == "B익절%" and
(EntryName(1) == "매수1" or EntryName(1) == "매수2" or EntryName(1) == "매수3") and
MarketPosition == 0) Then
Buy("매수2",AtMarket);
}
If countif(ma(C,ma_p21)[1] > ma(C,ma_p21),1) == 1
and (ma(C,ma_p22)[1] >= ma(C,ma_p23)[1] and ma(C,ma_p22) < ma(C,ma_p23))
and countif(ma(C,ma_p24)[1] > ma(C,ma_p24),1) == 1
Then
{
If !(ExitName(1) == "S익절%" and
(EntryName(1) == "매도1" or EntryName(1) == "매도2" or EntryName(1) == "매도3") and
MarketPosition == 0) Then
Sell("매도2",AtMarket);
}
// SetStopProfittarget(목표청산2);
}
If b_time3 <= Time and Time <= e_time3 Then
{
stoK = StochasticsKS3;
stoD = StochasticsDS3;
If countif(ma(C,ma_p31)[1] < ma(C,ma_p31),1) == 1
and (ma(C,ma_p32)[1] <= ma(C,ma_p33)[1] and ma(C,ma_p32) > ma(C,ma_p33))
and countif(ma(C,ma_p34)[1] < ma(C,ma_p34),1) == 1
Then
{
If !(ExitName(1) == "B익절%" and
(EntryName(1) == "매수1" or EntryName(1) == "매수2" or EntryName(1) == "매수3") and
MarketPosition == 0) Then
Buy("매수3",AtMarket);
}
If countif(ma(C,ma_p31)[1] > ma(C,ma_p31),1) == 1
and (ma(C,ma_p32)[1] >= ma(C,ma_p33)[1] and ma(C,ma_p32) < ma(C,ma_p33))
and countif(ma(C,ma_p34)[1] > ma(C,ma_p34),1) == 1
and countif(ma(C,ma_p35)[1] > ma(C,ma_p35),1) == 1
Then
{
If !(ExitName(1) == "S익절%" and
(EntryName(1) == "매도1" or EntryName(1) == "매도2" or EntryName(1) == "매도3") and
MarketPosition == 0) Then
Sell("매도3",AtMarket);
}
// SetStopProfittarget(목표청산3);
}
############## 스위칭 ############
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if MaxEntries == 1 Then
HE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then
HE = LatestEntryPrice(0);
if BH >= EntryPrice+PriceScale*익절3 then{
ExitLong("B익절%",AtStop,BH-(BH-EntryPrice)*0.1);
}
SetStopProfittarget(0.2); #동일방식 손절 추가요청
Sell("B스위칭",AtStop,HE-PriceScale*스위칭);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if MaxEntries == 1 Then
LE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) < LE Then
LE = LatestEntryPrice(0);
if SL <= EntryPrice-PriceScale*익절3 then{
ExitShort("S익절%",AtStop,SL+(EntryPrice-SL)*0.1);
}
SetStopProfittarget(0.2); #동일방식 손절 추가요청
Buy("S스위칭",AtStop,LE+PriceScale*스위칭);
}
2018-08-06
184
글번호 121139
답변완료
지표값을 이용한 청산 신호 추가
신호 부탁드립니다.
Input : shortPeriod(12), longPeriod(26), Period(9);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
이 수식이 기본 MACD 매매신호인데... 크로스에서 진입 신호가 발생할 때, 그 때의 5이평 값을 기준값이라고 하고, 매수진입 일 경우는 5이평 값이 기준값 이하로 내려올 때, 매도진입 일 경우는 5이평값이 기준값 이상으로 올라왔을 때 청산신호가 발생했으면 합니다.(진입 신호 발생 시 수평선이 그릴 수 있을련지요. 마지막 진입신호만 그리고 그 전 수평선은 안 그려도 되고요)
더운 여름 수고하시고.. 항상 감사합니다 !!^^
2018-08-05
223
글번호 121138
그냥백수 님에 의해서 삭제되었습니다.
2018-08-03
16
글번호 121137
답변완료
문의 드립니다
Input : Period1(3);
var : YEN(0),NKD(0),SP1(0);
YEN = (C - ma(C, 7000)) / PriceScale * PointValue;
NKD = (data1(C) - ma(data1(C), 7000)) / data1(PriceScale) * data1(PointValue);
SP1 = NKD - YEN;
Plot1(sp1, "SP_NKD-YEN");
위와 같은 YEN,NKD,SP1 수치형 내부변수를 만들었는데
내부변수를 외부변수처럼 최대, 최소 사용자 함수를 어떻게 적용할 수 있는지 궁금합니다.
더운 날씨에 수고 부탁드리며, 건강조심하십시요
2018-08-03
218
글번호 121136
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
-[설정수량]
-[증감수량]
-[제한수량]
-전거래가 이익이면 설정수량+증감수량 진입
-전거래가 손실이면 설정수량-증감수량 진입
-늘어나도 제한수량이상은 진입하지 않음
코딩 부탁드립니다. []은 외부변수로 부탁드립니다.
2. 기타
1번 코딩에서 '-전거래가 손실이면 설정수량-증감수량 진입' 조건만 제거
2018-08-03
203
글번호 121135