커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
5467
글번호 230811
지표
답변완료

문의드립니다.

안녕하세요 항상 고생 많으십니다. 게시글과 유선상으로 친절히 설명해주신 덕분에 빠르게 매매시스템을 빠르게 구현해나가고 있게 되었습니다. 감사드립니다, 실제 시뮬레이션 전 몇 가지 제가 생각했을때 오류가 나타날 수 있는 케이스에 대해서 확인부탁드립니다. 혹시 유선 상이 편하시면 01공-구7공3-이구07 번으로 연락주셔도 괜찮습니다. 1. 수식에 매일 수량입력하게 되어 있는데 어제의 1일 차의 수량이 4여서 매수 4계약이 체결되었다고 가정했을 때 ,2일차에 매도선에 닿았고, 수량이 4로 설정되어 있다면, 어제의 매수 4계약 청산, 매도 4계약 진입. 이렇게 되는게 맞는지요? 2. 수식에 수량이 입력되었으므로, 비용수량 설정창에 따로 설정 필요 없거나, 설정해도 수식 상 수량으로 거래되는게 맞는지요? 3. if MarketPosition <= 0 and H < 매수선 Then buy("b",AtStop,매수선); 이런 식으로 설정하게 되었을 때, 시초가에 갭으로 매수선 위에서 시작할때도, 시초가로 바로 매수 신호가 나가는게 맞는지요? 4. 오늘 시스템 적용 1일차로 가정하고, 매수 매도선 설정 후 4계약 설정시, 장전 시스템 시작 시가가 매수선 위에 있는 경우, 시가가 매수 - 매도선 사이에 있는 경우 시가가 매도선 밑에 있는 경우 각각, 진입, 청산이 어떻게 이뤄지게 되나요? if MarketPosition <= 0 and H < 매수선 Then 이니까 주문시작신호를 '모든 신호' 로 설정했을때, 최초로 매수선이나, 매도선을 돌파할때 매매가 일어나는 것으로 이해하고 있는데 맞나요? 5. 시초를 정확하게 잡아내려면 틱이나, 60분봉을 사용하면 안되고, 1분봉을 사용해야할 것 같은데 맞는지요? 6.매매 설정에서 매매가격-> 사용자 가격설정 -> AtStop 지정가, 신호가격 으로 설정시, 시세가 매수선 or 매도선을 돌파시 신호 발생되고, 매수선or 매도선 가격에 지정가 주문을 접수하는게 맞는지요? 7. 매수,매도선 터치 시 해당 가격에 지정가를 내게 되면 호가공백으로 체결 안되고 해 당 가격 돌파 해버릴 수 있지않나요? (예를 들어 매수선 1400이고 1390에서 대량 매 수 주문으로 한번에 1420의 수량까지 다 먹어버리는 경우, 가격은 1420, 시스템 주 문은 1400에 쌓임이렇게 될 것 같습니다) 이럴 경우가 발생할 수 있는게 맞는지? 맞다면, 신호는 매수가 발생했으므로, 매수가 체결 안된다면 다음번 매매 부터는 어 떻게 진행이 되나요? 매수 신호가 두 번 연속으로 나올 수가 있는지? 아니면 실제 매수 신호에 의한 체결상황은 고려하지 않으므로, 매수가 다 체결되었다고 가정되고(MarketPosition=1) 다음 번은 매도 주문이 나가게 되는지요? 8. 이 전략은 장전에 당일의 고정 매수, 매도가를 알 수 있고, 해당 가격 지정가 주문 하는 전략이기에, 6번의 문제가 있다면, 주문 신호 발생 타이밍을 장 시작하자마자, 그리고, 반대 포지션에 거래가 일어났을때로 설정하면, (매수진입신호가 뜨고, 1초 후?) 해당 가격을 돌파하면서 체결이 안되는 경우를 막을 수 있을 것같은데, 수식상으로는 if MarketPosition <= 0 and H < 매수선 Then if MarketPosition >= 0 and L > 매도선 Then 이 조건 충족 시 바로 주문신호를 보내면 되는대요. 체결 여부가 체크 안되거나 marketposition 이 신호 발생에 따라 가는 등으로, 문제가 생길 수 있는지 그렇다면 방법이 어떤게 있는지 문의드립니다. ----원본작성글---- 안녕하세요 예스스탁입니다. 아래식에 종목별 시작시간을 지정하셔서 사용하시기 바랍니다. 진입일 별로 수량이 다르므로 매수선/매도선과 함께 수량을 지정해주시면 됩니다. 통화중에 좀 혼동되어 시간지정을 잘못알려드렸습니다. (NextBarSdate == sdate and NextBarStime >= ntime and stime < ntime); 완성봉의 시간과 다음봉의 시간을 비교하기에 stime에 [1]은 필요가 없습니다. input : ntime(101500); var : 매수선(0),매도선(0),수량(0); Condition1 = (NextBarSdate > sdate and NextBarStime >= ntime) or (NextBarSdate == sdate and NextBarStime >= ntime and stime < ntime); if Condition1 == true and NextBarSdate == 20200225 Then { 매수선 = 1200; 매도선 = 900; 수량 = 4; } if Condition1 == true and NextBarSdate == 20200227 Then { 매수선 = 1100; 매도선 = 800; 수량 = 5; } if Condition1 == true and NextBarSdate == 20200228 Then { 매수선 = 1300; 매도선 = 1000; 수량 = 6; } if MarketPosition <= 0 and H < 매수선 Then buy("b",AtStop,매수선,수량); if MarketPosition >= 0 and L > 매도선 Then sell("s",AtStop,매도선,수량); 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : 수정한 식입니다. > 안녕하세요 예스스탁입니다. 아래식 이용하시면 됩니다. 1 sdate는 봉의 달력상 날짜, bdate는 영업일기준 날짜입니다. NextBarSdate는 봉완성시 다음봉시가의 날짜입니다. Sdate > bdate -> 봉완성시 현재봉의 날짜는 영업일보다 크고(새벽시간을 의미합니다.) NextBarSdate == sdate -> 다음봉 시가의 날짜는 현재봉 날짜와 같으면(새로운 영업일시작) 매수선과 매도선이 같이 셋팅되서 시가에서 신호 발생하게 수정했습니다. var : 매수선(0),매도선(0); Condition1 = Sdate > bdate and NextBarSdate == sdate; if Condition1 == true and NextBarSdate == 20200225 Then { 매수선 = 1200; 매도선 = 900; } if Condition1 == true and NextBarSdate == 20200227 Then { 매수선 = 1100; 매도선 = 800; } if Condition1 == true and NextBarSdate == 20200228 Then { 매수선 = 1300; 매도선 = 1000; } if MarketPosition <= 0 and H < 매수선 Then buy("b",AtStop,매수선); if MarketPosition >= 0 and H < 매도선 Then sell("s",AtStop,매도선); 2 항셍과 같은 종목은 거래소의 영업일 변경시간과 사용자분이 하루의 시작으로 인지하는 시간(10시15분)이 다릅니다. 거래소와 다른 시간을 하루의 시작으로 삼는 종목들은 아래식 이용하셔야 합니다. var : 매수선(0),매도선(0); Condition1 = (NextBarSdate > sdate and NextBarStime >= 101500) or (NextBarSdate == sdate and NextBarStime >= 101500 and stime[1] < 101500); if Condition1 == true and NextBarSdate == 20200225 Then { 매수선 = 1200; 매도선 = 900; } if Condition1 == true and NextBarSdate == 20200227 Then { 매수선 = 1100; 매도선 = 800; } if Condition1 == true and NextBarSdate == 20200228 Then { 매수선 = 1300; 매도선 = 1000; } if MarketPosition <= 0 and H < 매수선 Then buy("b",AtStop,매수선); if MarketPosition >= 0 and L > 매도선 Then sell("s",AtStop,매도선); 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 작성 문의드립니다. > 안녕하세요 예스스탁입니다. 문의하신 내용은 가능하지 않습니다. 1 input : 매수선(1200),매도선(900); if MarketPosition <= 0 and H < 매수선 Then buy("b",AtStop,매수선); if MarketPosition >= 0 and H < 매도선 Then sell("s",AtStop,매도선); 지정한 가격을 터치할 때 진입청산하는 내용은 위와 같이 작성이 가능하지만 매일 혹은 간혹 변경하는 매수선과 매도선을 기억해서 포지션을 이어같수가 없습니다. 시스템은 차트에 적용하면 차트 첫봉부터 현재봉쪽으로 계산해 오면서 신호를 발생하는데 매수선값과 매도선값을 변경하면 과거봉의 신호도 모두 변경되므로 전일에 들어간 포지션을 이어갈수 없습니다. 2 예스랭귀지는 차트에 적용되어 차트 데이타만 이용 가능합니다. 잔고의 증거금을 인식해 풀로 진입할 물량등을 계산할수 없습니다. 3 프로그램이 실행되고 있어야 동작합니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > 레인메이커 님이 쓴 글입니다. > 제목 : 수식 작성 문의드립니다. > 안녕하세요 고생이 많으십니다. 해외선물 자동매매프로그램을 작성하고자하는데 수식 작성 도움 부탁드립니다. 자동매매프로그램 방식은 1. 사용자가 장 시작 전 매수가격 , 매도가격을 기준으로 설정. (매일매일 기준선 변경) (예를 들어 1100원 매수, 900원 매도 이런식으로 매일 설정) -> 현재 가격 1200원 5계약 매수포지션 보유 가정 시 매매 방식 설명 3. 1200 -> 900원 하락하며 기준 매도선 건드릴 시 900원에 매수포지션 전량 청산, 주문 가능 수 만큼 매도포지션 진입 (청산, 진입 모두 900원) 4. 900원 -> 1100원 오르며 매수선 건드릴 시, 매도포지션 전량 청산, 주문 가능 수 만큼 매수포지션 전환 (기준 가격 1100원) 5. 시초가매매의 경우 시초가가 당일 설정된 매수가격 위에서 형성되면 -> 매수포지션 보유 시 포지션 유지. -> 매도 포지션 보유 시 시초가에 포지션 청산, 매수 포지션 진입. * 시초가가 당일 설정한 매도 가격 아래에서 형성 시 반대로. 부연 설명> 매일 매일 새롭게 설정하는 매수선, 매도선을 기준으로 상승하며 매수선을 건드릴 시 매도포지션 청산과 동시에 증거금 풀로 매수포지션 진입. 하방으로 떨어지면 반대로 청산, 진입 하는 방식입니다. 즉, 오버나잇해가며 항상 포지션을 보유하는 방식이고, 포지션진입은 항상 반대포지션 청산과 함께 일어나며, 그때의 청산, 진입가는 동일합니다. 포지션진입시 청산된 증거금 가능액을 활용 풀로 매수하게 되구요. 예스트레이더 꺼놔도 주문 확인 없이 자동으로 매매되게 하고 싶습니다. 바로 활용 가능하게 수식 작성부탁드립니다. 오늘 하루도 건강 유의하시고 업무 힘내시기 바랍니다!
프로필 이미지
레인메이커
2020-03-03
311
글번호 136539
시스템
답변완료

안녕하세요

친절한답변항상고맙습니다 아래지표식을 TL_new ,Text_New ,TL_SetSize함수로 수평선을출력하고 굵기조정과소수점아래2자리까지나타나도록 식 수정부탁드립니다 수고해주세요 Input : shortPeriod(12), longPeriod(26), Period(9); Var : MACDV(0) , MACDS(0),T1(0),T2(0); MACDV = MACD(shortPeriod, longPeriod); MACDS = ema(MACDV,Period); if crossup(MACDV,0) Then{ T1 = 1; var1 = H; } if CrossDown(MACDV,0) Then{ T1 = -1; var1 = L; } if crossup(MACDs,0) Then{ T2 = 1; var2 = H; } if CrossDown(MACDs,0) Then{ T2 = -1; var2 = L; } plot1(var1,"??",iff(T1==1,BLUE,MAGENTA)); plot2(var2,"??",iff(T2==1,blue,MAGENTA));
프로필 이미지
CSI300
2020-03-03
245
글번호 136536
지표
답변완료

안녕하세요

length = input(50),src = input(close) //---- sum = 0. filt = 0. //---- ma = sma(src,length) a = sign(change(ma)) for i = 0 to length-1 sum := sum + a[i] alpha = abs(sum) == length ? 1 : 0 filt := alpha*ma+(1-alpha)*nz(filt[1],ma) //---- css = filt > filt[1] ? #2157f3 : filt < filt[1] ? #ff1100 : na plot(filt,"Plot",fixnan(css),3,transp=0) 변환 문의드립니다. 감사합니다.
프로필 이미지
물고기
2020-03-03
310
글번호 136532
지표
답변완료

수식 부탁 드립니다,

항상 감사 드립니다. 20MA가 60MA를 crossup 한 시점 20MA의 가격이 203P 이하 이고 20MA가 210P 를 상회 할때 매수 단 다음의 조건을 충족 crossup 이후 부터 20MA가 210P를 상회 할때 까지 20MA는 항상 60MA 보다 클것 (즉 20MA가 60MA를 crossdown 하지 않을것) 수식 부탁드립니다. 감사합니다,
프로필 이미지
orfeu
2020-03-03
354
글번호 136531
시스템
답변완료

부탁좀 드리겠습니다.

수고가 많으십니다 66322 질문의 1번 답변을 사용해보이 신호가 달롱 항개만 나옴니다 또한 다른 이평으로 변경을 하여 테스트해보이 엉뚱한곳에 신호가 뜸니다 확인부탁드립니다 상승후 하락하면 매도, 하락후 상승하면 매수로 이평의 상승과 하락에 따른 신호가 나왔으면 합니다. input : P(5); var : T(0); var1 = ma(c,P); if var1 > var1[1] Then T = 1; if var1 > var1[1] Then T = -1; if T == 1 and T != T[1] Then buy(); if T == -1 and T != T[1] Then sell();
프로필 이미지
회원
2020-03-03
355
글번호 136530
시스템
답변완료

부탁좀 드리겠습니다.

도움주셔서 감사합니다 아래의 수식을 시스템식으로 부탁드립니다 매수신호는 신호캔들 최저가에 선과 수치가 표시되고 매도신호는 신호캔들 최고가에 선과 수치가 표시되었으면 합니다. input : P(22),n(3); var : AvgTR(0),BasicUpper(0),BasicLower(0); var : FinalUpper(0),FinalLower(0),SuperTrend(0); var : tx1(0),T(0); AvgTR = ATR(P); BasicUpper = (H+L)/2 + (AvgTR*n); BasicLower = (H+L)/2 - (AvgTR*n); if IsNaN(FinalUpper) == true or BasicUpper < FinalUpper or C[1] > FinalUpper then FinalUpper = BasicUpper; else FinalUpper = FinalUpper; if IsNaN(FinalLower) == true or BasicLower > FinalLower[1] or C[1] < FinalLower[1] then FinalLower = BasicLower; else FinalLower = FinalLower; SuperTrend = IfF(SuperTrend == FinalUpper[1] and Close[0] <= FinalUpper[0], FinalUpper[0], IfF(SuperTrend == FinalUpper[1] and Close[0] >= FinalUpper[0],FinalLower[0], IfF(SuperTrend == FinalLower[1] and Close[0]>=FinalLower[0],FinalLower[0], IfF(SuperTrend == FinalLower[1] and Close[0]<=FinalLower[0],FinalUpper[0],0)))); if SuperTrend > SuperTrend[1] then T = 1; if SuperTrend < SuperTrend[1] Then T = -1; plot3(SuperTrend,"SuperTrend",iff(T == 1,RED,BLUE));
프로필 이미지
회원
2020-03-03
414
글번호 136526
시스템
답변완료

수식작성 부탁 드립니다

참조 데이타 사용시 선물 10분(5 이평선, 20 이평선)이평 크로스시 매수진입 이라는 진입 조건을 참조 데이타로 사용하면 크로스 발생 신호 다음봉 즉 10분 늦게 신호가 발생 되는것으로 알고 있습니다 선물 2분 이평선에서 단순히 수치를 *5 하여 (25 이평선,100 이평선)을 사용하면 10분(5,20) 이평선과는 다른 모습이 생성됩니다 선물 10분선의(5,20)이평선 크로스를 2분선에서 5개의 봉으로 시가와 종가를 이용 하여 이동평균선을 구하는 수식을 작성 해주시면 감사 하겠습니다. input : Period1(5),Period2(20); var1 = data2(ma(C, Period1)); var2 = data2(ma(C, Period2)); if var1 > var2 and 진입조건 then buy("b"); 선물 2분 data2로 선물 10분선의 Macd(12,26,9)와 동일한 보조지표가 되도록 작성 부탁 드립니다. Input : shortPeriod(12), longPeriod(26), signal(9); Var : value(0,data2) , macdosc(0,data2) ; value = data2(MACD(shortPeriod, longPeriod)); macdosc = data2(ema(value,signal));
프로필 이미지
뎅이요
2020-03-03
374
글번호 136525
지표
답변완료

수식추가 부탁드립니다.

안녕하세요? 최근받은 답변 너무감사합니다. 원하는 취지대로 정확히 됩니다. 눈높이에 맞는 자세한 설명으로 공부에도 큰 도움이 되었습니다. 아래의 수식에서 한가지 추가하고자 합니다. 손절된 경우 손절하자말자 손절한 방향(기존포지션 반대방향)으로 재진입을 추가하고싶습니다. 예를들어, 매수를 하고난후 손절(매도)를 하였으면,손절과동시에 매도진입. (익절한 경우에는 기존대로 새로운신호 발생시 진입, 손절만 재진입하고싶습니다) 감사합니다. input : 매수음봉틱수(5),매수양봉틱수(5); input : 매도양봉틱수(5),매도음봉틱수(5); input : 진입횟수(5); input : 익절틱수(50),손절틱수(50); var : entry(0); #영업일 변경 if bdate != bdate[1] Then entry = 0; #포지션이 변경되어 새로운 진입포지션 발생시마다 1씩 증가 if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if entry < 진입횟수 and #진입횟수가 지정한 값 이하 MarketPosition == 0 and #매수나 무포지션 상태 C[1] == O[1]+매도양봉틱수*PriceScale and #1봉전종가가 1봉전시가+매도양봉틱수 이상 C[0] == O[0]-매도음봉틱수*PriceScale Then #현재봉 종가가 1봉전시가-매도음봉틱수 이하 sell("s"); if entry < 진입횟수 and #진입횟수가 지정한 값 이하 MarketPosition == 0 and #매도나 무포지션 상태 C[1] == O[1]-매수음봉틱수*PriceScale and #1봉전종가가 1봉전시가-매수음봉틱수 이하 C[0] == O[0]+매수양봉틱수*PriceScale Then #현재봉 종가가 1봉전시가+매수양봉틱수 이상 buy("b"); #목표수익 설정 SetStopProfittarget(PriceScale*익절틱수,PointStop); #손절매 설정 SetStopLoss(PriceScale*손절틱수,PointStop);
프로필 이미지
대구어린울프
2020-03-03
335
글번호 136524
시스템
답변완료

수식좀 부탁드립니다

수고가 많으십니다 상승과 하락시 색상의 변화좀 부탁드립니다. input : P(22),n(3); var : AvgTR(0),BasicUpper(0),BasicLower(0); var : FinalUpper(0),FinalLower(0),SuperTrend(0); var : tx1(0); AvgTR = ATR(P); BasicUpper = (H+L)/2 + (AvgTR*n); BasicLower = (H+L)/2 - (AvgTR*n); if IsNaN(FinalUpper) == true or BasicUpper < FinalUpper or C[1] > FinalUpper then FinalUpper = BasicUpper; else FinalUpper = FinalUpper; if IsNaN(FinalLower) == true or BasicLower > FinalLower[1] or C[1] < FinalLower[1] then FinalLower = BasicLower; else FinalLower = FinalLower; SuperTrend = IfF(SuperTrend == FinalUpper[1] and Close[0] <= FinalUpper[0], FinalUpper[0], IfF(SuperTrend == FinalUpper[1] and Close[0] >= FinalUpper[0],FinalLower[0], IfF(SuperTrend == FinalLower[1] and Close[0]>=FinalLower[0],FinalLower[0], IfF(SuperTrend == FinalLower[1] and Close[0]<=FinalLower[0],FinalUpper[0],0)))); plot3(SuperTrend);
프로필 이미지
회원
2020-03-03
355
글번호 136520
지표