커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

매도 수식 확인 좀 부탁 드립니다.

* 수식이 안되는데 수정 좀 부탁 드립니다. 매수후 이익 구간이 3~5% 면 2프로 이하 매도 5~10%면 8프로 이하매도 10~15% 는 12프로 이하 매도 15~30은 14매도 입니다. if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice*1.03 and highest(H,BarsSinceEntry) < EntryPrice*1.05 Then ExitLong("3%" ,AtStop, EntryPrice*1.02, "" , Floor(CurrentContracts),1); if highest(H,BarsSinceEntry) >= EntryPrice*1.05 and highest(H,BarsSinceEntry) < EntryPrice*1.10 Then ExitLong("9%" ,AtStop, EntryPrice*1.08, "" , Floor(CurrentContracts),1); if highest(H,BarsSinceEntry) >= EntryPrice*1.10 and highest(H,BarsSinceEntry) < EntryPrice*1.15 Then ExitLong("12%" ,AtStop, EntryPrice*1.12, "" , Floor(CurrentContracts),1); if highest(H,BarsSinceEntry) >= EntryPrice*1.15 and highest(H,BarsSinceEntry) < EntryPrice*1.30 Then ExitLong("15%" ,AtStop, EntryPrice*1.14, "" , Floor(CurrentContracts),1); if highest(H,BarsSinceEntry) < EntryPrice*1.03 and Lowest(H,BarsSinceEntry) < EntryPrice*0.97 Then ExitLong("손해1",AtLimit, EntryPrice*0.99, "" , Floor(CurrentContracts),1); }
프로필 이미지
요타
2018-06-13
186
글번호 119713
시스템
답변완료

수식문의

안녕하세요 하기 답변 잘 받았습니다. 감사합니다. 그런데, 신호가 잘 작동되지 않습니다. data 2 종가가 볼린져 상단을 돌파했는데, 신호는 변경되지 않습니다. 하단도 마찬가지 입니다. 검토 부탁드립니다. 감사합니다. --------------------------------------- 안녕하세요 예스스탁입니다. data2의 조건을 data2종가가 크로스 하는 것으로 변경했습니다. 수식의 동작은 기본차트 기준입니다. 기본차트봉이 완성될때 그때 참조데이터(data2)의 완성봉 기준으로 조건체크해서 신호가 발생합니다. Input : Period(20), MultiD(2); var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1); var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2); BBmd1 = data1(ma(C,Period)); BBup1 = data1(BollBandUp(Period,MultiD)); BBdn1 = data1(BollBandDown(Period,MultiD)); BBmd2 = data2(ma(C,Period)); BBup2 = data2(BollBandUp(Period,MultiD)); BBdn2 = data2(BollBandDown(Period,MultiD)); IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then { if data1(CrossDown(c,bbmd1)) or data2(crossup(c,bbup2)) Then sell("bs"); } IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then { if data1(Crossup(c,bbmd1)) or data2(CrossDown(c,bbdn2)) Then buy("sb"); } 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 하기 답변 주신 수식에서 않되는 부분이 있어서 문의 드립니다. 매수의 경우 data 2 의 볼린져 밴드 상단을 cross over했을경우 청산이 되지 않습니다. 매도의 경우 data 2 의 볼린져 밴드 하단을 cross down했을경우 청산이 되지 않습니다. data 1 이 큰 시간봉이고 (60분) data 2 가 작은 시간봉입니다.(30분) 봉완성 진입 문제로 적용이 되지 않는지요? 검토 부탁드립니다. 감사합니다. 안녕하세요 예스스탁입니다. Input : Period(20), MultiD(2); var : BBmd1(0,data1),BBup1(0,data1),BBdn1(0,data1); var : BBmd2(0,data2),BBup2(0,data2),BBdn2(0,data2); BBmd1 = data1(ma(C,Period)); BBup1 = data1(BollBandUp(Period,MultiD)); BBdn1 = data1(BollBandDown(Period,MultiD)); BBmd2 = data2(ma(C,Period)); BBup2 = data2(BollBandUp(Period,MultiD)); BBdn2 = data2(BollBandDown(Period,MultiD)); IF MarketPosition == 1 and bbmd1 < bbmd1[1] and bbmd2 < bbmd2[1] then { if CrossDown(c,bbmd1) or crossup(c,bbup2) Then sell("bs"); } IF MarketPosition == -1 and bbmd1 > bbmd1[1] and bbmd2 > bbmd2[1] then { if Crossup(c,bbmd1) or CrossDown(c,bbdn2) Then sell("bs"); } 즐거운 하루되세요 > softtoug 님이 쓴 글입니다. > 제목 : 수식문의 > 안녕하세요 하기 수식 부탁드립니다. 1. 현재 매수 상태입니다. data 1 과 data 2 의 볼린져 이평이 전봉대비 하락하고 있으며, data1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 상단을 터치하면 - 두가지중 한가지라도 성립이 되면- 매도로 스위칭하여 진입하는 수식 부탁드립니다. data 2 의 볼린져 이평이 전봉대비 상승하고 있으면, 진입하지 않습니다. 2. 현재 매도 상태입니다. data 1 과 data 2 의 볼린져 이평이 전봉대비 상승하고 있으며, data 1 의 볼린져 이평을 터치하거나, data 2 의 볼린져 하단을 터치하면 - 두가지중 한가지라도 성립이 되면- 매수로 스위칭하여 진입하는 수식 부탁드립니다. data 2 의 볼린져 이평이 전봉대비 하락하고 있으면, 진입하지 않습니다. 감사합니다.
프로필 이미지
softtoug
2018-06-13
199
글번호 119712
시스템
답변완료

4등분선

국내선물(해외선물)에서 당일 고가와저가 생성시 마다 실시간으로 4등분선으로 챠트에 나타내고 싶은데요 부탁드립니다,감사합니다
프로필 이미지
비슬짱
2018-06-13
223
글번호 119711
시스템
답변완료

문의드립니다.

50봉이내 최고점을 돌파하면 매수진입 50봉이내 최저점을 깨면 매도진입 감사합니다.
프로필 이미지
몽고메리
2018-06-13
201
글번호 119710
시스템
답변완료

안녕하세요.

다음식을 양선 음선 교차시 시스템식(화살표)으로 만들어 주세요. input : Period(10); var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ; Lowval= Lowest(Low, Period+1); Highval = Highest(High, Period+1); For counter= 0 To Period { If Low[counter] == Lowval Then DownVel = counter; If High[counter] == highval Then UpVel = counter; } DnAroon = 100*(Period-DownVel)/Period; UpAroon = 100*(Period-UpVel)/Period; Plot1(DnAroon, "Aroon Dn"); Plot2(UpAroon, "Aroon Up"); plotbaseline1(100,"강세 100"); plotbaseline2(0,"약세 0");
프로필 이미지
뚜벅뚜벅
2018-06-13
176
글번호 119709
시스템
답변완료

주간 일봉 SMI를 분봉에 표시

주간 일봉의 SMI를 복합 분봉에서 표시하려고 아래와 같은 식을 만들었습니다. 그러나 그래프가 일봉 그래프와 많이 다르게 나옵니다. 어디가 잘못 된 것인지 모르겠습니다. 한번 봐 주시기 부탁드립니다. 감사합니다. # ===<<< 분봉 차트에서 일봉 시고저종 계산 >>>=========================================== Arrays : 일봉_시가[100](0), 일봉_고가[100](0), 일봉_저가[100](0), 일봉_종가[100](0); Variables : cnt(0); # ===<<< 주간장 시작 (09:00) >>>=== If (sDate[1] != sDate And 080000 <= sTime) Or (sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin # ---< 일봉_시고저종[1] 이동 >--- For cnt = 99 DownTo 1 Begin 일봉_시가[cnt] = 일봉_시가[cnt-1]; 일봉_고가[cnt] = 일봉_고가[cnt-1]; 일봉_저가[cnt] = 일봉_저가[cnt-1]; 일봉_종가[cnt] = 일봉_종가[cnt-1]; End; # ---< 일봉_시고저종[0] 초기값 입력 >--- 일봉_시가[0] = Open; 일봉_고가[0] = High; 일봉_저가[0] = Low; 일봉_종가[0] = Close; End; # ===<<< 주간장 (09:00-15:45) >>>>=== If 080000 <= sTime And sTime < 180000 then Begin If 일봉_고가[0] < High Then 일봉_고가[0] = High; If 일봉_저가[0] > Low Then 일봉_저가[0] = Low; 일봉_종가[0] = Close; End; # ===<<< 분봉 차트에서 일봉 SMI 계산 >>>========================================= Arrays : SMI_Var1[50](0), SMI_Var2[50](0), SMI_Var3[50](0), SMI_Var4[50](0), SMI_Var5[50](0), SMI_Var6[50](0), SMI_Var7[50](0); Variables : 기간1(13), 기간2(25), 기간3(2); Variables : 기간_고가(0), 기간_저가(0); Variables : ep1(0), ep2(0), ep3(0); # ===<<< 주간장 시작 (09:00) >>>=== If (sDate[1] != sDate And 080000 <= sTime) Or (sDate[1] == sDate And sTime[1] < 080000 And 080000 <= sTime) Then Begin # ---< 스토케스틱[1] 이동 >--- For cnt = 49 DownTo 1 Begin SMI_Var1[cnt] = SMI_Var1[cnt-1]; SMI_Var2[cnt] = SMI_Var2[cnt-1]; SMI_Var3[cnt] = SMI_Var3[cnt-1]; SMI_Var4[cnt] = SMI_Var4[cnt-1]; SMI_Var5[cnt] = SMI_Var5[cnt-1]; SMI_Var6[cnt] = SMI_Var6[cnt-1]; SMI_Var7[cnt] = SMI_Var7[cnt-1]; End; # ---< 기간중고저가 초기값 입력 >--- 기간_고가 = 일봉_고가[0]; 기간_저가 = 일봉_저가[0]; End; # ===<<< 주간장 (09:00-15:45) >>>=== If 080000 <= sTime And sTime < 180000 then Begin For cnt = 1 to 기간1-1 Begin If 기간_고가 < 일봉_고가[cnt] Then 기간_고가 = 일봉_고가[cnt]; If 기간_저가 > 일봉_저가[cnt] Then 기간_저가 = 일봉_저가[cnt]; End; # ---<<< SMI 계산 >>>--- ep1 = 2/(기간1+1); ep2 = 2/(기간2+1); ep3 = 2/(기간3+1); SMI_Var1[0] = Close - (기간_고가+기간_저가)/2; SMI_Var2[0] = SMI_Var1[0] * ep2 + SMI_Var2[1] * (1-ep2); SMI_Var3[0] = SMI_Var2[0] * ep3 + SMI_Var3[1] * (1-ep3); SMI_Var4[0] = 기간_고가-기간_저가; SMI_Var5[0] = SMI_Var4[0] * ep2 + SMI_Var5[1] * (1-ep2); SMI_Var6[0] = (SMI_Var5[0] * ep3 + SMI_Var6[1] * (1-ep3))/2; SMI_Var7[0] = SMI_Var3[0] / SMI_Var6[0] * 100; End; If SMI_Var7[1] < SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", RED); Else If SMI_Var7[1] > SMI_Var7[0] Then Plot1(SMI_Var7[0],"SMI_Var7", BLUE); Else Plot1(SMI_Var7[0],"SMI_Var7",BLACK); PlotBaseLine1( 40,"과열", Red); PlotBaseLine2( 0," 0",GRAY); PlotBaseLine3(-40,"침체",Blue);
프로필 이미지
다니엘87
2018-06-13
188
글번호 119708
지표
답변완료

부탁 드립니다.

1)수식을 함수로 변환시켜 실행 시키고 싶습니다. 예)TL1=함수명(length); 2)예를 들어 length(100)을 입력 하려면 Array:valArr[100](0)등과 같이 수정 해야 하는곳이 있는지요? 3)함수식을 배포버전으로 저장 하고 싶습니다. 미리 감사 드립니다. Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); For j = 0 To 9 { barArr[j] = barArr[j] + 1; } Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; turnPntBit = ""; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; If turnPntBit <> "" Then { If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; }} If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2], sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); }} TL_SetSize(TL1,0); TL_SetColor(TL1,green);
프로필 이미지
yes
2018-06-14
213
글번호 119707
지표
답변완료

모멘텀 스코어 계산

안녕하세요. 모멘텀스코어를 계산하고 계산한 스코어의 이평선을 계산해서 3이평선이 12이평선 보다 높은 경우에 매수하고, 3이평선이 12이평선보다 낮으면 매도를 하고 싶은데요. Var : m1(0), m2(0), m3(0), m4(0); Var : m5(0), m6(0), m7(0), m8(0); Var : m9(0), m10(0), m11(0), m12(0); var : MoMS(0); If C-C[1] > 0 Then m1 = 1; If C-C[2] > 0 Then m2 = 1; If C-C[3] > 0 Then m3 = 1; If C-C[4] > 0 Then m4 = 1; If C-C[5] > 0 Then m5 = 1; If C-C[6] > 0 Then m6 = 1; If C-C[7] > 0 Then m7 = 1; If C-C[8] > 0 Then m8 = 1; If C-C[9] > 0 Then m9 = 1; If C-C[10] > 0 Then m11 = 1; If C-C[11] > 0 Then m11 = 1; If C-C[12] > 0 Then m12 = 1; MoMS = (m1+m2+m3+m4+m5+m6+m7+m8+m9+m10+m11+m12); value1 = ma(MoMS, 3); value2 = ma(MoMS, 12); # 매수/매도청산 If CrossUP(value1, value2) Then { Buy(); } # 매도/매수청산 If CrossDown(value1, value2) Then { Sell(); } 이렇게 했는데 제대로 작동을 안하는데 어떻게 수정해야 될까요?
프로필 이미지
연감자
2018-06-13
212
글번호 119706
시스템
답변완료

다시문의드림니다

안녕하세요..글번호58169.제가설명을잘못해서요..다시문의드림니다.죄송합니다... 첩부한사진의흰색라인은 글번호48820 수식이구요. 검정색라인의 수식을 부탁드림니다. 1.직고라인..양봉의종가에서 -10틱이탈되면 양봉의종가가격에서 라인발생해서 다음직고라인이 발생될때까지 그려지게요. 2.직저라인..음봉의종가에서 +10틱돌파되면 음봉의종가가격에서 라인발생해서 다음직저라인이 발생될때까지 그려지게요. 3.중심라인..직고와직저의 중심값라인발생해서 다음라인이발생될깨까지 그려지게요. 수고하세요...꾸벅
프로필 이미지
보인다
2018-06-13
266
글번호 119705
지표