커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
6184
글번호 230811
답변완료
부탁드립니다
var : 지표(0);
if bdate != bdate[1] Then{
var1 = 지표; #당일 첫봉 지표값
var2 = var1[1]; #전일 첫봉 지표값
var3 = 지표[1]; #당일 마지막봉 지표값
var4 = 지표[2]; #전일 마지막봉 지표값
}
답변 주셨던 수식인데요.
여기서 선언되지 않은 이름 bdate 이 사용되었다 라고 뜨네요.
그리고 당일에서 마지막봉 전전봉의 지표값과
전일에서 마지막봉 전전봉의 지표값 수식도 부탁드려요.
만약 5분봉 이라면 15시25분 봉이 되겠네요,
2018-01-07
196
글번호 115520
답변완료
수식작성요청
진입
1. 현재 주가 > 200일 이평선 위
2. 10일전 주가 > 20일전 주가 > 60일전 주가
3. 10일 이상 일봉의 저가가 10일 이평선 위에 있다가
4. 일봉의 저가가 10일 이평선 아래로 내려온 이후
5. 일봉상 직전 고점 돌파시 매수
청산
주가 < 매수 이후 최고점 - 2*ATR(10)
2018-01-07
184
글번호 115519
답변완료
수식문의 합니다
#,아래수식은 4시간봉의 시가,고가,저가,라인 입니다.
ㅡ,당일 4시간봉이 완성된 시점에서 이전봉의 시가,고가,저가라인을 우측연장선으로 끝까지
그리기 하면 좋겠습니다.(첨부파일 그림참조)
ㅡ,이때 우측연장선 그리기 현재값을 우측으로 텍스트 출력 하면 좋겠습니다.
(중복되는라인(+-1틱)은 먼저 텍스트 출력된 값만 표현요)
ㅡ,당일 그리기한 시고저라인을 다음날 까지 표기되게 N 데이 설정하면 좋겠습니다.
ㅡ,시가(MAGENTA),고가(RED),저가(BLUE) 표현하면 좋겠습니다.
var : Ov(0),Hv(0),Lv(0);
if (stime == 80000 or (stime > 80000 and stime[1] < 80000)) or
(stime == 120000 or (stime > 120000 and stime[1] < 120000)) or
(stime == 160000 or (stime > 160000 and stime[1] < 160000)) or
(stime == 200000 or (stime > 200000 and stime[1] < 200000)) or
(stime == 00000 or (stime > 00000 and stime[1] < 00000)) or
(stime == 40000 or (stime > 40000 and stime[1] < 40000)) Then{
Ov = O;
Hv = H;
Lv = L;
}
if H > Hv Then
Hv = H;
if L < Lv Then
Lv = L;
plot1(Ov);
plot2(Hv);
plot3(Lv);
$,도움 주심에 감사드립니다.
2018-01-07
298
글번호 115518
회원 님에 의해서 삭제되었습니다.
2018-01-07
0
글번호 115517
답변완료
수식문의드립니다.
안녕하세요
시스템의 피라미딩 3번 사용시 시 손절의 경우 처음 들어간 기준으로 청산이 되는데 손절의 경우 피라미딩으로 들어간 포지션중 가장 높은 pt 를 기준으로 내려갈경우 손절 청산되는식으로 부탁드립니다 (수익 청산의 경우는 기존 시스템의 처음 들어간 기준으로 수익정산)
input : short(12),long(26),sig(9),P1(3),P2(20),P3(50),P4(400);
input : af(0.02),maxaf(0.1);
input : 시작시간(080000), 진입종료(053000), 종료시간(060000);
var : mav1(0),mav2(0),mav3(0),mav4(0);
var : Tcond(False),BH(0),SL(0),para(0);
mav1 = ma(c,P1);
mav2 = ma(c,P2);
mav3 = ma(c,P3);
mav4 = ma(c,P4);
para = sar(af,maxaf);
if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{
Tcond = true;
}
if stime == 진입종료 or (stime > 진입종료 and stime[1] < 진입종료) Then{
Tcond = false;
}
//진입
if Tcond == true Then{
if mav4 > mav4[1] and crossup(mav2,mav3) Then buy("Buy");
if mav4 < mav4[1] and CrossDown(mav2,mav3) Then sell("Sell");
}
//청산2
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if BH >= EntryPrice+PriceScale*30 and BH < EntryPrice+PriceScale*30 Then{
ExitLong("B익절1",AtStop,BH-PriceScale*30);
}
if BH >= EntryPrice+PriceScale*40 then{
ExitLong("B익절%",AtStop,BH-(BH-EntryPrice)*0.20);
}
ExitLong("B손절",AtStop,EntryPrice-PriceScale*30);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if SL <= EntryPrice-PriceScale*30 and SL > EntryPrice-PriceScale*30 Then{
ExitShort("S익절1",AtStop,SL+PriceScale*30);
}
if SL <= EntryPrice-PriceScale*40 then{
ExitShort("S익절%",AtStop,SL+(EntryPrice-SL)*0.20);
}
ExitShort("S손절",AtStop,EntryPrice+PriceScale*30);
}
if 종료시간 <= sTime and sTime < 시작시간 then {
if MarketPosition == 1 then{
ExitLong("B장종료");
}
if MarketPosition == -1 then{
ExitShort("S장종료");
}
}
2018-01-07
193
글번호 115516
답변완료
수식 검토 부탁합니다.
항상 적극 지원해 주심에 감사를 드립니다.
아래 수식 검토 부탁드립니다.
매수조건은 RSI가 35이하로 떨어지면 buysetup = true 로 조건을 설정하고 이후에
캔들이 5일 이평선보다 크게 되면 매수하는 조건인데,
그림에 첨부된 챠트에서 보시다시피 17년 10월 18일 13:00 와 17년 10월 23일 23:40분에 보면 매수 싸인이 들어오질 않습니다. (연결_E-micro EUR/USD, 40분봉 챠트에서 시험함)
검토 부탁드립니다^^
input: 셋업일(20160117),시작시간(090000),종료일(20181231),P(20),Period3(14),dv(2),sto1(25),sto2(6),sto3(6),MAP(5),금액(2.0),P1(1.9),N(21),손절(0.006),목표수익(0.02);
var : BBup(0),BBdn(0),BBMid(0),stok(0),stoD(0),RS(0),BuySetup(true),ExitSetup1(false),Xcond(false),mav(0),Dncnt(0);
# 5일 이평선
mav = ma(C,MAP);
# RSI
RS = RSI(Period3);
# 볼린져밴드
BBup = BollBandUp(P,dv);
BBMid = ma(C,P);
BBdn = BollBandDown(P,dv);
# 스톡케스틱
stok = StochasticsK(sto1,sto2);
Stod = StochasticsD(sto1,sto2,sto3);
# buysetup = true
if TotalTrades > TotalTrades[1] Then
BuySetup = false;
if MarketPosition == 0 and RS < 35 Then
BuySetup = true;
# buysetup = true가 발생된 이후에 캔들이 5일 이평선을 통과매면 매수
if BuySetup == true and C > mav and MarketPosition == 0 Then
buy("매수",OnClose,def,Floor(금액/C));
# 매도전략
if MarketPosition == 1 and (RS > 70) Then ExitSetup1 = true;
if ExitSetup1 == true and (C < mav) and (RS < 70) Then
ExitLong("이평선 이탈");
# 손절 전략
if MarketPosition == 1 Then
ExitLong("손절",AtStop,EntryPrice-손절);
# 기준가 매도
if MarketPosition == 1 Then
ExitLong("기준가매도",atlimit,P1);
# 목표수익
if MarketPosition == 1 Then{
ExitLong("목표수익",atlimit,EntryPrice+목표수익);
}
Else{
ExitSetup1 = false;
}
2018-01-06
274
글번호 115515
답변완료
문의드립니다.
예스랭귀지에는 php에서 사용하는 include 같은 기능은 없습니까?
때로는 같은 소스를 지표, 강조, 시스템에 모두 사용하는 경우도 있는데 그 공통된 부분을 하나의 파일로 저장해 놓고 그 파일을 지표에서도 include하고 강조에서도 include 할 수 있다면 더 편리하고 나중에 수정이 필요할 때 하나의 파일만 수정하면 되는데 지금은 각각 모두 수정을 다 해주어야 하니까 좀 불편합니다.
2018-01-06
245
글번호 115514
답변완료
문의드립니다.
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1.기타
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = H;
buyindex = index;
}
}
input : entryCount(1);
var : count(0) ;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
if C < bbup2 then
buysetup = false;
if Count < entryCount then {
If buysetup == true and MarketPosition == 0 and index > buyindex+ 지난봉수 Then{
buy("연습",atstop,buybase+PriceScale*틱수);
}
}
IF crossdown(c,BBup2) then
exitlong();
SetStopEndofday();
위와 같은 수식을 썼는데요.
이미지1을 보면 연습1이라는 신호 다음날도 종가가 볼린저밴드 상단을 돌파했고 n개봉지난 봉이 고가를 n틱이상 돌파했으니 신호가 나와야 하는데요. 나오질 않습니다. 뭐가 문제인지 모르겠습니다. 위 사진 외에도 여러 군데에서 나와야 할 신호가 나오지 않았습니다.
이상해서 전에 만들어주신 것을 변형해서 이렇게 짜서 지표ㄹ 봤는데요. 3번이미지처럼 돌파할 때 고가를 저장할 때도 있고 아닐 때도 있었습니다. 무슨 규칙성이 있는 것도 아니라 이유를 모르겠네요.
Input : Period(40), dv1(2),dv2(1.5);
input : 틱수(4),지난봉수(2);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
IF bdate != bdate[1] Then{
Buysetup = false;
Sellsetup = false;
buybase = 0;
buyindex = 0;
if crossup(c,BBup1) Then {
buysetup = true;
buybase = h;
buyindex = index;
}
}
if C < bbup2 then
buysetup = false;
If buysetup == true then
var1 = buybase;
plot1(var1);
2. 기타
코딩부탁드립니다.
-장시작후 3개봉의 길이가 n 이상이면 buysetup false
-첫봉이 장대음봉(첫봉의 길이가 n이상의 음봉이면 장대음봉이라고 규정)이면 buysetup false
-셋업이 된 뒤 양봉의 갯수, 음봉의 갯수.
-진입한 뒤 5봉동안 고가를 돌파하지 못하면 청산.
3. 기타
1번 수식에서 당일진입제한 수식을 빼봤더니 이미지 2번처럼 바로 2번진입을 했습니다. 예상키로는 처음 셋업한 봉을 기준으로 하다보니 그런 것 같은데요. 만약에 진입과 청산을 한 뒤에 새로 볼린저밴드를 돌파한 뒤 새롭게 셋업을 하려면 어떻게 수식을 고쳐야 하나요? 당일청산전략으로 하려 합니다.
4.
'첫봉이 양봉이면' 이란 조건을 이렇게 추가시켜봤는데요. 그림처럼 음봉일 때가 나올 때가 몇번씩 나타났습니다. 제가 제대로 코딩을 한 것인가요?
Input : Period(40), dv1(2),dv2(0.7);
var : BBup1(0),BBdn1(0),BBup2(0),BBdn2(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
BBup1 = BollBandUp(Period,dv1);
BBdn1 = BollBandDown(Period,dv1);
BBup2 = BollBandUp(Period,Dv2);
BBdn2 = BollBandDown(Period,Dv2);
if bdate != bdate[1] then{
var1 = 0;
var2 = 0;}
if dayindex == 0 then
var1 = C;
var2 = O;
if CrossUp(c,BBup1) and var1 > var2 then
buy();
if CrossDown(c,BBup2) then
exitlong();
2018-01-07
255
글번호 115513
답변완료
같은조건 두번진입
Input : Period(12), Period1(5),Period4(5);
Var : value(0);
Value3 = StochasticsK(Period,Period1);
Value4 = StochasticsD(Period,Period1,Period4);
if CrossUP(value1, value2) Then
{
Buy("b1");
}
If CrossDown(value1, value2) Then
{
Sell("s1");
}
if MarketPosition == 1 then
ExitLong("익절1",AtLimit,entryprice+PriceScale*5);
if MarketPosition == -1 then
ExitShort("익절2",AtLimit,entryprice-PriceScale*5);
위와같은 식이라고 할때 예를들어 매수를 들어간 상태에서 5틱 청산이 되지않고
다시 매수식에 맞는 차트가 만들어질때 1번더 진입이 되도록하는 식을 알려주세요
(매도도 동일하게 두번 진입하는 식)
그리고 그런식으로 두계약이 진입되었을때 청산식은 위와 동일한지 확인 부탁드립니다.
2018-01-05
191
글번호 115512