커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의드립니다.

안녕하세요? 궁금한 수식이 있어 문의드립니다. 1. 해외선물 1분 차트에서 직전 주봉의 피봇값을 계산하여 선으로 표시하는 수식을 부탁드립니다. 2. 해외선물 1분 차트에서 1시간, 4시간봉의 고가, 저가 값(현재 화면상의 캔들수 참조)을 불러와서 선으로 표시하는 수식을 부탁드립니다. 즐거운 하루 되시기 바랄께요. 감사합니다.
프로필 이미지
카르페diem
2019-06-18
256
글번호 129529
지표
답변완료

지표문의

1.차트표시 종류에보면 candlevolume차트 라구 있던데 지표로 좀 만들수 없나요 유사해두 됩니다 2.그럼 수고하세요
프로필 이미지
성공예견
2019-06-18
265
글번호 129523
지표
답변완료

문의드립니다

안녕하세요, 항상 감사드립니다. 1 식 문의드린부분에서 적용이 안되는 부분 문의드리고자합니다. 아래식에서 지정일, 지정일시 잡는부분에 오류가있는지 잘되지않아 아래와 같이 지정할수있게 부탁드립니다. 저점 일자 20190601 시분 090500 (5분봉상 1번째 봉의 저점) 고점 일자 20190602 시분 091000 (5분봉상 2번째 봉의 고점) 이후 지정한 고점을 넘어서는 고점 발생시 아래와 같이 갱신 (완성봉 종가가 아닌 고점입니다) 수정부탁드립니다. 2.추가 문의드립니다. 위와 동일하게 조정대 비율이 적용되고 고점을 만든뒤 5%하락한 지점의 가격에 다은뒤 재차 고점을 돌파할때 진입 고점을 만든뒤 10하락한 지점에 가격이 다으면 진입하지않음 (ex 고점1000원 -> 하락5% 950원에 닫고->1005원 진입, 하락10% 900원에 닫고 1005원이 될시 진입하지 않음) 100개 진입한뒤 5%상승 전량청산 진입한뒤 6%하락 전량손절 감사합니다! ------------------------------------------------------------------------------ 안녕하세요 예스스탁입니다. 피라미딩은 다른진입신호만 허용으로 설정하고 적용하시면 됩니다. input : ndate(20190601),ntime1(90000),ntime2(100000); input : 진입비율1(65.2),수량1(100),청산비율1(40.0); input : 진입비율2(70.0),수량2(50),청산비율2(45.0); input : 진입비율3(80.0),수량3(30),청산비율3(60.0); input : 손절비율(90); var : HH(0),LL(0),Tcond(false); #지정일 지정일시1 if sdate == ndate Then { if (sdate != sdate[1] and stime >= ntime1) or (sdate == sdate[1] and stime >= ntime1 and stime[1] < ntime1) Then { #저가(고정) LL = L; } if (sdate != sdate[1] and stime >= ntime2) or (sdate == sdate[1] and stime >= ntime2 and stime[1] < ntime2) Then { #고가(변화) LL = h; //그날의 최고가이면 초기값을 dayhigh로 변경 Tcond = true; } } if tcond == true then { #고가 갱신 if H > HH Then HH = H; #첫진입(65.2%위에서 아래로 터치하면 즉시 매수) if TotalTrades == 0 and MarketPosition == 0 and L > HH-(HH-LL)*(진입비율1/100) Then buy("b1",atlimit,HH-(HH-LL)*(진입비율1/100),수량1); #매수 후 if MarketPosition == 1 then { #두번째진입(70.0% 위에서 아래로 터치하면 즉시 추가매수) if MaxEntries == 1 and L > HH-(HH-LL)*(진입비율2/100) Then buy("b2",atlimit,HH-(HH-LL)*(진입비율2/100),수량2); #세번째진입(80.0% 위에서 아래로 터치하면 즉시 추가매수) if MaxEntries == 2 and L > HH-(HH-LL)*(진입비율3/100) Then buy("b3",atlimit,HH-(HH-LL)*(진입비율3/100),수량3); #첫 진입후 40%를 상회하면 즉시 전량청산 if MaxEntries == 1 Then ExitLong("bx1",Atlimit,HH-(HH-LL)*(청산비율1/100)); #두번 진입후 45%를 상회하면 즉시 전량청산 if MaxEntries == 2 Then ExitLong("bx2",Atlimit,HH-(HH-LL)*(청산비율2/100)); #세번 진입후 60%를 상회하면 즉시 전량청산 if MaxEntries == 3 Then ExitLong("bx3",Atlimit,HH-(HH-LL)*(청산비율3/100)); #손절비율 이하로 하락시 즉시 전량청산 ExitLong("bx",AtStop,HH-(HH-LL)*(손절비율/100)); } } 즐거운 하루되세요
프로필 이미지
스누피독
2019-06-18
245
글번호 129522
시스템

카카 님에 의해서 삭제되었습니다.

프로필 이미지
카카
2019-06-17
21
글번호 129521
지표
답변완료

수식의 의미좀 알려주세요~

if data1(crossup(c,S1)) Then T = 1; if data1(CrossDown(c,S1)) Then T = -1; if T == 1 and data1(C>upline and V >= P1 and V > ma(V,거래량평균일수1)*거래량급등률1 and c > dayopen) and data2(C > S2) Then { T = 3; #Tcond가 true일때만 조건만족시 매수 if Tcond == true and data1(c < dayclose(1)*전일급등률) Then buy("매수",AtLimit,C-PriceScale*음봉틱수1); } 이식에서 T = 3 의 의미가 무엇일까요?
프로필 이미지
이형지
2019-06-17
179
글번호 129520
시스템
답변완료

62906 재질문

90분봉의 MACD 오실레이터 지표를 만들어 주셔서 시스널선이 MACD선을 돌파할 때 매매신호를 넣어 봤는데 엉뚱한 곳에서 신호가 나옵니다. 확인좀 부탁드립니다. (매매챠트는 15분봉) input : ntime1(90),P1(20),P2(60),P(20),dv(2),스탑로스(2.5),손절폭(1.5),매수스톡(25),매도스톡(70); input : 매수이격(18),매도이격(18),단기MAP(20),장기MAP(60),금액(100000000); input : sto1(25),sto2(6),sto3(6); input : short(12),long(26),sig(9); var : cnt(0),sum2(0),sum3(0); var : tsum1(0),tsum2(0),tmav1(0),tmav2(0); var : BBup(0),BBdn(0),BBMid(0); var : S1(0),D1(0),TM(0),TF(0); Var : Lvalue(0), Hvalue(0); var : SK(0),SD(0),T(0),단기mav(0),장기mav(0); Array : C1[100](0),H1[100](0),L1[100](0),FK[100](-1),StoK[100](-1); var : EP1(0),EP2(0),EP3(0),DINDEX1(0),PreJISU1(0),PreJISU2(0),JISU1(0),JISU2(0); var : MACDVal(0),MACDSIG(0),PreMACDSIG(0),MACDosc(0); Ep1 = 2/(short+1); Ep2 = 2/(long+1); Ep3 = 2/(sig+1); # 분봉설정========================== if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime1; if Bdate != Bdate[1] or (ntime1 != 1 and Bdate == Bdate[1] and TF < TF[1]) or (ntime1 == 1 and Bdate == Bdate[1] and TF > TF[1]) Then { H1[0] = H; L1[0] = L; for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; H1[cnt] = H1[cnt-1][1]; L1[cnt] = L1[cnt-1][1]; FK[cnt] = FK[cnt-1][1]; stok[cnt] = stok[cnt-1][1]; } DINDEX1 = DINDEX1 + 1; PreJISU1 = JISU1[1]; PreJISU2 = JISU2[1]; PreMACDSIG = MACDSIG[1]; } C1[0] = C; if H > H1[0] Then H1[0] = H; if L < L1[0] Then L1[0] = L; if C1[P2] > 0 then { tsum1 = 0; tsum2 = 0; for cnt = 0 to P2-1 { if cnt < P1 then tsum1 = tsum1+C1[cnt]; if cnt < P2 then tsum2 = tsum2+C1[cnt]; } # 90분봉의 20일 이평선= tmav1, 60일 이평선= tmav2 tmav1 = tsum1/P1; tmav2 = tsum2/P2; } # MACD 오실레이터 if DINDEX1 <= 1 then { JISU1 = C; JISU2 = C; MACDVal = JiSu1-Jisu2; MACDSIG = MACDVal; MACDosc = MACDval-MACDsig; } else{ JISU1 = C * EP1 + PreJISU1 * (1-EP1); JISU2 = C * EP2 + PreJISU2 * (1-EP2); MACDVal = JiSu1-Jisu2; MACDSIG = MACDVal * EP3 + PreMACDSIG * (1-EP3); MACDosc = MACDval-MACDsig; } } # 단기 이평선 단기mav = ma(C,단기MAP); # 장기 이평선 장기mav = ma(C,장기MAP); # 매수게임============================= # if crossup(MACDSIG,MACDVal) Then # buy("매수",OnClose,def,Floor(금액/C)); # if crossdown(단기mav,장기mav) Then # ExitLong("청산"); # 매도게임============================== if crossdown(MACDSIG,MACDVal) Then sell("매도",OnClose,def,1); if crossup(단기mav,장기mav) Then ExitShort("매도청산");
프로필 이미지
뽄때
2019-06-17
185
글번호 129519
시스템
답변완료

해외선물

해외선물용으로 S&P 기준으로요, 시가가 나오면 시가선 기준 Line 하나 ex)2800 위아래로 4개씩 5포인트씩 ex) 2805 2810 2815 2820 / 2795 2790 2785 2780 이 나왔으면 좋겠습니다. 1포인트당 4틱인것 같은데 5포인트면 20틱인것 같구요 그러니까 [시가]기준 20틱 단위로 위아래로 선이 나오면 됩니다.
프로필 이미지
구조대
2019-06-17
202
글번호 129518
지표
답변완료

간단한 시스템 수식 부탁드립니다.

간단한 시스템 수식 부탁드립니다. 1. 10 이평과 20이평의 간격이 30도 이하일때 (혹은 수렴중 ) 좁혀짐 볼린저밴드 중심선이 10이평과 20이평 사이에있고 1 이동평균선이 10이평과 20이평의 중심 중간 에 들어왔을때. 매수식 손절 10틱 익절 20틱 변수에 이평과 볼린저밴드 손절 익절 다 넣어주세요 2. . 10 이평과 20이평의 간격이 30도 이하일때 (혹은 수렴중) 좁혀짐 볼린저밴드 중심선이 10이평과 20이평 사이에있고 1 이동평균선이 10이평과 20이평의 중심 중간에 들어왔을때. 매도식 변수에 이평과 볼린저밴드 손절 익절 다 넣어주세요 통일 : 하루중 몇시부터 몇시사이 에 뜨는 신호 1회만 진입 해라 !!!!!
프로필 이미지
양키
2019-06-17
199
글번호 129517
시스템
답변완료

문의

청산식 조합 했는데 돌아 가는것도 있고 않되는 것도 있네요 수정좀 부탁 합니다 Input : BuyATRP(46),SellATRP(6),BuyATRS1(2.5),BuyATRS2(4.0),BuyATRS3(4.0),SellATRS1(3.5),SellATRS2(6.0),SellATRS3(6.0); Input : BuyStoploss(12), SellStoploss(6), BuyTrailing(5), BuyFloor(20), SellTrailing(5),SellFloor(8.5); Input:break(1.9),level(0.3),big(8),sbreak(1.9),slevel(0.3),sbig(8); var:진입후최고가(0),진입후최저가(0); If MarketPosition == 1 Then { 진입후최고가 = Highest(H,BarsSinceEntry + 1); ExitLong("매수추적",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS1); ExitLong("매수변동성",AtStop,C - ATR(BuyATRP) * BuyATRS2); If 진입후최고가 >= Entryprice + ATR(BuyATRP) * break Then { ExitLong("매수손익분기",AtStop,Entryprice + ATR(BuyATRP) * level); ExitLong("매수추적1",AtStop,진입후최고가 - ATR(BuyATRP) * BuyATRS3); } If 진입후최고가 >= Entryprice + ATR(BuyATRP) * big Then { ExitLong("매수초과수익",AtStop,Lowest(L,3)); } SetStopLoss(BuyStoploss, PointStop); SetStopTrailing(BuyTrailing,BuyFloor,PointStop); If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김 SetStopLoss(0, PointStop); SetStopTrailing(0, 0, PointStop); } If MarketPosition == -1 Then { 진입후최저가 = Lowest(L,BarsSinceEntry + 1); ExitShort("매도추적",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS1); ExitShort("매도변동성",AtStop,C + ATR(SellATRP) * SellATRS2); If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbreak Then { ExitShort("매도손익분기",AtStop,Entryprice - ATR(SellATRP) * slevel); ExitShort("매도추적1",AtStop,진입후최저가 + ATR(SellATRP) * SellATRS3); } If 진입후최저가 <= Entryprice - ATR(SellATRP) * sbig Then { ExitShort("매도초과수익",AtStop,Highest(H,3)); } SetStopLoss(SellStoploss, PointStop); SetStopTrailing(SellTrailing,SellFloor,PointStop); If MarketPosition == 0 Then { // 無포일 때 손절 설정을 clear 해야 만 오류가 안 생김 SetStopLoss(0, PointStop); SetStopTrailing(0, 0, PointStop); } If MarketPosition == 1 Then ExitLong("스파이크청산-1", AtLimit, C + ATR(20) * 7); // 상승돌파 시 매수청산 } If MarketPosition == -1 Then Exitshort("스파이크청산+1", AtLimit, C - ATR(20) * 7); // 상승돌파 시 매도청산 } Var:SpikeHigh(0), spikelow(0); If MarketPosition == 0 Then { // 무포지션일때 SpikeHigh = 10; // 초기화 Condition1 = false; } If MarketPosition == 1 Then { // 매수포지션일 때 If !Condition1 and // 스파이크 미발생 H > C[1] + ATR(20) * 7 Then { // 전봉 종가보다 7 * ATR 이상 상승 SpikeHigh = H; // 스파이크 고점 설정 Condition1 = true; // 스파이크 발생 } If Condition1 Then { // 스파이크 발생 후 If SpikeHigh < H then SpikeHigh = H; // 신규 고점 나오면 갱신 ExitLong("스파이크청산-2", AtStop, SpikeHigh - ATR(20) * 2); //추적청산처럼 꼭지 찍고 내려올 때 If MarketPosition == 0 Then { // 무포지션일때 Spikelow = 10; // 초기화 Condition1 = false; } If MarketPosition == -1 Then { // 매수포지션일 때 If !Condition1 and // 스파이크 미발생 L < C[1] + ATR(20) * 7 Then { // 전봉 종가보다 7 * ATR 이상 상승 SpikeHigh = L; // 스파이크 고점 설정 Condition1 = true; // 스파이크 발생 } If Condition1 Then { // 스파이크 발생 후 If Spikelow > H then SpikeHigh = L; // 신규 고점 나오면 갱신 Exitshort("스파이크low청산-2", AtStop, Spikelow + ATR(20) * 2); } } } }
프로필 이미지
구다이전설
2019-06-17
189
글번호 129516
시스템