커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

연결선물에서 선물만기일 다음날 가격정보관련

연결선물에서 선물만기일 다음날은 가격정보가 차월물로 바뀌기 때문에 전일 가격과 비교하는 수식의 경우 원하는 것과 다른 결과가 나오는데 이를 막을 수 있는 방법을 수식으로 알려주시면 감사하겠습니다. 예를 들어 전일종가와 차이 = Close - CloseD(1) 로 수식을 사용하고 있는데 선물만기일 다음날 차월물과 관계에서 실제 CloseD(1) 값이 아닌 것을 방지하기 위한 방법을 원합니다. 쉽게말해 그래프 데이터 말고 전일대비 등락값을 가져올수 있는 방법을 알려주시면 감사하겠습니다.
프로필 이미지
anyhelp
2014-09-12
215
글번호 78466
시스템
답변완료

시스템식 수정

항상감사드립니다 아래 시스템식은 타주기를 이용한 시스템식입니다,근데 신호가 잘나오질 않습니다 오류수정 부탁드립니다 제가구현하고자 하는 시스템식은 1.타주기적용시스템_A 1-1 아래 시스템식_1 이 주차트(300틱)와 타주기챠트(2분)에서 같은방향으로 신호가 발생시 매수/매도 1-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입 주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입 1-3 주챠트(300틱)와 타주기챠트(2분)에서 선행스팬2(52) 기준추가(상단에 위치하면매수/ 하단에 위치하면 매도) 1-4 주챠트(300틱)에 MACD_OSC 기준매매 추가 1-5 주챠트(300틱)에 ADX 매수매도식 추가 1-6 주챠트(300틱)에 aroon 매수매도식 추가 *** 시스템식_1 과 선행스팬2(52) 만 주챠트와 타주기챠트에 적용합니다*** ***변형하고자하는 시스템식은 2.타주기적용시스템_B 2-1 시스템식_1 은 주차트(300틱)에만 적용하고(매수/매도) 2-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입 주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입 2-3 주챠트(300틱)에 MACD_OSC 기준매매 추가 2-4 주챠트(300틱) 및 타주기챠트에(2분) 선행스팬2(52) 기준추가 (상단에 위치하면매수/하단에 위치하면 매도) 2-5 타주기챠트에(2분) C > 기하이평 20 고가선(Hma2) 이면 매수진입 타주기챠트에(2분) C < 기하이평 20 저가선(Lma2) 이면 매도진입 2-6 주챠트(300틱)에 ADX 매수매도식 추가 2-7 주챠트(300틱)에 aroon 매수매도식 추가 를 구현하고 싶습니다 ######################## ##### 시스템식_1 ##### ######################## input:Period(30),ma1(12),ma2(26),shortperiod(9),Longperiod (26),signalperiod(9),baseLine(0); var : A1(0,data1),B1(0,data1),V10(0,data1); var : A2(0,data2),B2(0,data2),V20(0,data2); var : Bcond(false,data1),Scond(false,data1); A1=PVI; B1=data1(ema(A1,period)); if data1(o>c and A1>B1 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then V10= 1 ; if data1(o<c and A1< B1 and Ema(C,MA1) < Ema(C,MA2)) Then V10= -2 ; if data1(o<c and A1<B1 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then V10= -1 ; if data1(o>c and A1>B1 and Ema(C,MA1) >Ema(C,MA2)) Then V10= 2 ; A2=PVI; B2=data2(ema(A2,period)); if data2(o>c and A2>B2 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then V20= 1 ; if data2(o<c and A2< B2 and Ema(C,MA1) < Ema(C,MA2)) Then V20= -2 ; if data2(o<c and A2<B2 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then V20= -1 ; if data2(o>c and A2>B2 and Ema(C,MA1) >Ema(C,MA2)) Then V20= 2 ; ###################### ### 기하이동평균선 ### ###################### input : P1(5),P2(20)); var : HI(0),LL(0),CC(0),cnt(0); var : Hma1(0),Lma1(0),Cma1(0); var : Hma2(0),Lma2(0),Cma2(0); var : Hma3(0),Lma3(0),Cma3(0); HH = Log(H); LL = Log(L); CC = Log(C); Hma1 = 0; Lma1 = 0; Cma1 = 0; for cnt = 0 to P1-1 begin Hma1 = Hma1 + HI[cnt]; Lma1 = Lma1 + LL[cnt]; Cma1 = Cma1 + CC[cnt]; end; Hma1 = 2.71828182845904^(Hma1/P1); Lma1 = 2.71828182845904^(Lma1/P1); Cma1 = 2.71828182845904^(Cma1/P1); Hma2 = 0; Lma2 = 0; Cma2 = 0; for cnt = 0 to P2-1 begin Hma2 = Hma2 + HI[cnt]; Lma2 = Lma2 + LL[cnt]; Cma2 = Cma2 + CC[cnt]; end; Hma2 = 2.71828182845904^(Hma2/P2); #Hma2 20기하이평 고가# Lma2 = 2.71828182845904^(Lma2/P2); #Lma2 20기하이평 저가# Cma2 = 2.71828182845904^(Cma2/P2); #Cma2 20기하이평 종가# ######################### ### MACD_OSC 기준매매 ### ######################### input: MACDP1(12),MACDP2(26),MACDP3(9); var : MACDV(0),MACDS(0); MACDV = MACD(MACDP1,MACDP2); #MACD_OSC(12,26)_red# MACDS = ema(MACDV,MACDP3); #MACD_OSC(9)_시그널_blue# ########################## ### 선행스팬2(52) 기준 ### ########################## var52 = (Highest(High, 52) + Lowest(Low, 52)) / 2; #선행스팬2_52# ###################### ##### ADX 시스템 ##### ###################### input : Period3(10); var : ADXv(0),DP2(0),DM2(0); ADXv = ADX(Period3); DP2 = DiPlus(Period3); DM2 = DiMinus(Period3); if DP2 > DM2 Then var13= 1 ; if DP2 < DM2 Then var13= -1 ; ###### aroon ###### input : Period4(9); var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ; Lowval= Lowest(Low, Period4+1); Highval = Highest(High, Period4+1); For counter= 0 To Period4 { If Low[counter] == Lowval Then DownVel = counter; If High[counter] == highval Then UpVel = counter; } DnAroon = 100*(Period4-DownVel)/Period4; UpAroon = 100*(Period4-UpVel)/Period4; ########################### ##### 매수/매도 조건식 #### ########################### Bcond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1; Scond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1; if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and var13==1 and macdv>macds and upAroon > DnAroon Then buy("buy_1"); if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and var13==-1 and macdv<macds and upAroon < DnAroon Then exitlong("eB1"); if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and var13==-1 and macdv<macds and upAroon < DnAroon Then sell("sell_1"); if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and var13==1 and macdv>macds and upAroon > DnAroon Then exitshort("eS1"); 감사합니다
프로필 이미지
조민철
2014-09-12
219
글번호 78465
시스템
답변완료

전일과 전전일의 지지/저항선을 표시하는 식으로 변경 부탁드립니다.

아래는 당일의 지지와저항선을 구하는 수식입니다. 당일만 나오다 보니 전일과 전전일의 지지와저항선도 보고 싶어지는군요. 제 실력으로 수정이 어려워 부탁드립니다. 주요 지지저항선만 나오면 됩니다. 감사합니다. --------------------------------------------------------- # swingHigh와 swingLow를 이용한 장중 지지선과 저항선 input : Length(10); //SwingHigh와 SwingLow의 기간값 input : LengthMult(2); //기본 기간값에 N배수(굵게 표시되는 중요 지지선과 저항선) input : NdayAgo(0); //N일전(0이면 당일, 1이면 전일, 2이면 전전일...) var : 저항선(0), 지지선(0), Rcount(0), Scount(0); var : 저항선2(0), 지지선2(0), Rcount2(0), Scount2(0); var : R1(0), R2(0), R3(0), R4(0), R5(0), R6(0), R7(0), R8(0), R9(0),R10(0), R11(0), R12(0), R13(0), R14(0), R15(0), R16(0), R17(0), R18(0), R19(0),R20(0); var : S1(0), S2(0), S3(0), S4(0), S5(0), S6(0), S7(0), S8(0), S9(0),S10(0), S11(0), S12(0), S13(0), S14(0), S15(0), S16(0), S17(0), S18(0), S19(0),S20(0); var : R81(0), R82(0), R83(0), R84(0), R85(0), S91(0), S92(0), S93(0), S94(0), S95(0); var1 = DateToJulian(currentdate); var2 = DateToJulian(date); if var1-var2 == NdayAgo && dayindex >= Length-1 then { 저항선 = SwingHigh(1, H, Length, Length, Length*2+1); 지지선 = swingLow(1, L, Length, Length, Length*2+1); if 저항선 == -1 Then 저항선 = 저항선[1]; if 지지선 == -1 Then 지지선 = 지지선[1]; if 저항선 != 저항선[1] then Rcount = Rcount + 1; if 지지선 != 지지선[1] Then Scount = Scount + 1; if Rcount == 1 then R1 = 저항선; if Rcount == 2 Then R2 = 저항선; if Rcount == 3 then R3 = 저항선; if Rcount == 4 Then R4 = 저항선; if Rcount == 5 then R5 = 저항선; if Rcount == 6 Then R6 = 저항선; if Rcount == 7 then R7 = 저항선; if Rcount == 8 Then R8 = 저항선; if Rcount == 9 then R9 = 저항선; if Rcount == 10 Then R10 = 저항선; if Rcount == 11 then R11 = 저항선; if Rcount == 12 Then R12 = 저항선; if Rcount == 13 then R13 = 저항선; if Rcount == 14 Then R14 = 저항선; if Rcount == 15 then R15 = 저항선; if Rcount == 16 Then R16 = 저항선; if Rcount == 17 then R17 = 저항선; if Rcount == 18 Then R18 = 저항선; if Rcount == 19 then R19 = 저항선; if Rcount == 20 Then R20 = 저항선; if Scount == 1 then S1 = 지지선; if Scount == 2 Then S2 = 지지선; if Scount == 3 then S3 = 지지선; if Scount == 4 Then S4 = 지지선; if Scount == 5 then S5 = 지지선; if Scount == 6 Then S6 = 지지선; if Scount == 7 then S7 = 지지선; if Scount == 8 Then S8 = 지지선; if Scount == 9 then S9 = 지지선; if Scount == 10 Then S10 = 지지선; if Scount == 11 then S11 = 지지선; if Scount == 12 Then S12 = 지지선; if Scount == 13 then S13 = 지지선; if Scount == 14 Then S14 = 지지선; if Scount == 15 then S15 = 지지선; if Scount == 16 Then S16 = 지지선; if Scount == 17 then S17 = 지지선; if Scount == 18 Then S18 = 지지선; if Scount == 19 then S19 = 지지선; if Scount == 20 Then S20 = 지지선; if R1 > 0 then plot1(R1, "R1", RED); if R2 > 0 then plot2(R2, "R2", RED); if R3 > 0 then plot3(R3, "R3", RED); if R4 > 0 then plot4(R4, "R4", RED); if R5 > 0 then plot5(R5, "R5", RED); if R6 > 0 then plot6(R6, "R6", RED); if R7 > 0 then plot7(R7, "R7", RED); if R8 > 0 then plot8(R8, "R8", RED); if R9 > 0 then plot9(R9, "R9", RED); if R10 > 0 then plot10(R10, "R10", RED); if R11 > 0 then plot11(R11, "R11", RED); if R12 > 0 then plot12(R12, "R12", RED); if R13 > 0 then plot13(R13, "R13", RED); if R14 > 0 then plot14(R14, "R14", RED); if R15 > 0 then plot15(R15, "R15", RED); if R16 > 0 then plot16(R16, "R16", RED); if R17 > 0 then plot17(R17, "R17", RED); if R18 > 0 then plot18(R18, "R18", RED); if R19 > 0 then plot19(R19, "R19", RED); if R20 > 0 then plot20(R20, "R20", RED); if S1 > 0 then plot51(S1, "S1", BLUE); if S2 > 0 then plot52(S2, "S2", BLUE); if S3 > 0 then plot53(S3, "S3", BLUE); if S4 > 0 then plot54(S4, "S4", BLUE); if S5 > 0 then plot55(S5, "S5", BLUE); if S6 > 0 then plot56(S6, "S6", BLUE); if S7 > 0 then plot57(S7, "S7", BLUE); if S8 > 0 then plot58(S8, "S8", BLUE); if S9 > 0 then plot59(S9, "S9", BLUE); if S10 > 0 then plot60(S10, "S10", BLUE); if S11 > 0 then plot61(S11, "S11", BLUE); if S12 > 0 then plot62(S12, "S12", BLUE); if S13 > 0 then plot63(S13, "S13", BLUE); if S14 > 0 then plot64(S14, "S14", BLUE); if S15 > 0 then plot65(S15, "S15", BLUE); if S16 > 0 then plot66(S16, "S16", BLUE); if S17 > 0 then plot67(S17, "S17", BLUE); if S18 > 0 then plot68(S18, "S18", BLUE); if S19 > 0 then plot69(S19, "S19", BLUE); if S20 > 0 then plot70(S20, "S20", BLUE); } # 중요 지지저항선은 굵게 표시 if var1-var2 == NdayAgo && dayindex >= Length*LengthMult-1 then { 저항선2 = SwingHigh(1, H, Length*LengthMult, Length*LengthMult, Length*LengthMult*2+1); 지지선2 = swingLow(1, L, Length*LengthMult, Length*LengthMult, Length*LengthMult*2+1); if 저항선2 == -1 Then 저항선2 = 저항선2[1]; if 지지선2 == -1 Then 지지선2 = 지지선2[1]; if 저항선2 != 저항선2[1] then Rcount2 = Rcount2 + 1; if 지지선2 != 지지선2[1] Then Scount2 = Scount2 + 1; if Rcount2 == 1 then R81 = 저항선2; if Rcount2 == 2 Then R82 = 저항선2; if Rcount2 == 3 then R83 = 저항선2; if Rcount2 == 4 Then R84 = 저항선2; if Rcount2 == 5 then R85 = 저항선2; if Scount2 == 1 then S91 = 지지선2; if Scount2 == 2 Then S92 = 지지선2; if Scount2 == 3 then S93 = 지지선2; if Scount2 == 4 Then S94 = 지지선2; if Scount2 == 5 then S95 = 지지선2; //아래 plot들은 속성창에서 굵게 표시해야 함 if R81 > 0 then plot81(R81, "R81", rgb(255,89,172)); if R82 > 0 then plot82(R82, "R82", rgb(255,89,172)); if R83 > 0 then plot83(R83, "R83", rgb(255,89,172)); if R84 > 0 then plot84(R84, "R84", rgb(255,89,172)); if R85 > 0 then plot85(R85, "R85", rgb(255,89,172)); if S91 > 0 then plot91(S91, "S91", rgb(9,154,1)); if S92 > 0 then plot92(S92, "S92", rgb(9,154,1)); if S93 > 0 then plot93(S93, "S93", rgb(9,154,1)); if S94 > 0 then plot94(S94, "S94", rgb(9,154,1)); if S95 > 0 then plot95(S95, "S95", rgb(9,154,1)); }
프로필 이미지
회원
2014-09-12
265
글번호 78464
지표
답변완료

문의

볼린져밴드 상단을 벗어났다가 상단안으로 들어왔을때 매도.. 하단을 벗어났다가 하단안으로 들어왔을때 매수.. 엔벨로프 상단을 벗어났다가 상단안으로 들어왔을때 매도.. 하단을 벗어났다가 하단안으로 들어왔을때 매수.. 신호 수식 부탁드립니다.
프로필 이미지
hjkang철인
2014-09-12
179
글번호 78463
시스템
답변완료

기하이평 타주기 시스템식

항상감사드립니다 아래 기하이평식을 이용해서 시스템식을 작성하고자 합니다 1.***기하이평식*** input : P1(5),P2(10),P3(20); var : HI(0),LL(0),CC(0),cnt(0); var : Hma1(0),Lma1(0),Cma1(0); var : Hma2(0),Lma2(0),Cma2(0); var : Hma3(0),Lma3(0),Cma3(0); HH = Log(H); LL = Log(L); CC = Log(C); Hma1 = 0; Lma1 = 0; Cma1 = 0; for cnt = 0 to P1-1 begin Hma1 = Hma1 + HI[cnt]; Lma1 = Lma1 + LL[cnt]; Cma1 = Cma1 + CC[cnt]; end; Hma1 = 2.71828182845904^(Hma1/P1); #Hma1 5 기하이평 고가# Lma1 = 2.71828182845904^(Lma1/P1); #Lma1 5 기하이평 저가# Cma1 = 2.71828182845904^(Cma1/P1); #Cma1 5 기하이평 종가# Hma2 = 0; Lma2 = 0; Cma2 = 0; for cnt = 0 to P2-1 begin Hma2 = Hma2 + HI[cnt]; Lma2 = Lma2 + LL[cnt]; Cma2 = Cma2 + CC[cnt]; end; Hma2 = 2.71828182845904^(Hma2/P2); #Hma2 10 기하이평 고가# Lma2 = 2.71828182845904^(Lma2/P2); #Lma2 10 기하이평 저가# Cma2 = 2.71828182845904^(Cma2/P2); #Cma2 10 기하이평 종가# Hma3 = 0; Lma3 = 0; Cma3 = 0; for cnt = 0 to P3-1 begin Hma3 = Hma3 + HI[cnt]; Lma3 = Lma3 + LL[cnt]; Cma3 = Cma3 + CC[cnt]; end; Hma3 = 2.71828182845904^(Hma3/P3); #Hma3 20 기하이평 고가# Lma3 = 2.71828182845904^(Lma3/P3); #Lma3 20 기하이평 저가# Cma3 = 2.71828182845904^(Cma3/P3); #Cma3 20 기하이평 종가# 1-1 c > Cma1 이면 v10= 1 , c < Cma1 이면 v10= -1 c > Cma2 이면 v10= 2 , c < Cma2 이면 v10= -2 c > Cma3 이면 v10= 3 , c < Cma3 이면 v10= -3 v10=1 and v10=2 and v10=3 then v20= 1 v10=-1 and v10=-2 and v10=-3 then v20= -1 주차트 v20=1 and 타주기챠트 v20=1 이면 매수 주차트 v20= -1 and 타주기챠트 v20= -1 이면 매도 1-2. 현재 매수상태이고 주챠트 c < Lma3 and 타주기챠트 c < Lma3 이면 매수청산(eB_1) 현재 매도상태이고 주챠트 c > Hma3 and 타주기챠트 c < Hma3 이면 매도청산(eS_1) 매수/매도청산후 같은 포지션으로 재진입금지 1-3.매수진입후 최대이익이 100틱이상이고 Lma3를 하향돌파하면 매수청산(eB_2) /매수청산후 재진입가능 매도진입후 최대이익이 100틱이상이고 Hma3 를 상향돌파하면 매도청산(eS_2)) /매도청산후 재진입가능 2-1 선행스팬2(52)를 이용하여 시스템식에 추가하고 싶습니다 ### 선행스팬2(52) 기준 ### var52 = (Highest(High, 52) + Lowest(Low, 52)) / 2; #선행스팬2_52# 주챠트에서 c > 선행스팬(52) 이면 v50=1 , c < 선행스팬(52) 이면 v50=-1 타주기챠트에서 c > 선행스팬(52) 이면 v50=2 , c < 선행스팬(52) 이면 v50=-2 이렇게 해서 주챠트와 타주기챠트에 삽입해서 시스템식을 만들고자 합니다 감사합니다
프로필 이미지
조민철
2014-09-12
172
글번호 78462
시스템
답변완료

질문입니다.

추석을 잘보내셨는지요^ 질문드립니다... 1.진입후 최저가 달성후 최고가를 나타내는 수식 부탁드립니다. 2.피라미딩청산에서 최초청산 이후 최고가를 나타내는 수식 부탁드립니다.
프로필 이미지
회원
2014-09-12
158
글번호 78461
시스템

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

프로필 이미지
시월
2014-09-12
13
글번호 78460
지표
답변완료

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

시스템을 만들려고 하는데요. 언어를 전혀 몰라서 진행을 전혀 못하고 있네요. 조건은 아래와 같습니다. 24개의 캔들 중 최고가와 최저가를 선으로 차트에 표시하고 지수가 그 선을 1틱이라도 돌파하면 매수 이탈하면 매도 신호를 낼 수 있게 하고 싶습니다. 시스템 수식과 지표 수식이 동시에 필요한데 부탁드립니다. 좋은 하루 되세요!
프로필 이미지
타푸
2014-09-11
171
글번호 78458
시스템

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

프로필 이미지
타푸
2014-09-11
0
글번호 78457
시스템