커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요

옵션매수로 50틱 수익나면 50%청산을 하고 싶은데 식을 어떻게 만드나요?? 그리고 만약 50틱이상 수익이나서 50% 빠지고 나머지는 그대로 남은 수량 청산되게 하고 싶습니다. 50틱이상 수익안나면 그냥 원래대로 청산식에 맞춰서 빠지구요 감사합니다^^
프로필 이미지
choone85
2018-05-09
196
글번호 118780
시스템
답변완료

손절과 익절

수고하십니다. 1. 최초 매매 신호에 의해 buy나 sell로 진입한 후 그 손절을 진입한 가격에서 선물지수로 1.5 point 손절이나 익절을 하는 매매식을 알고 싶습니다. 그렇지 않을 경우는 매수 신호인 경우 매도로 전환되고 매도인 경우 매수로 전환되게 해주시고요. 단.SetStopLoss 나 SetStopProfittarget 명령어가 아니고 exitlong 과 exitshort 를 사용해서 만들어 주세요. 2. 포지션이 있고 없고를 확인해서 있으면 반대 매매가 리버스가 되고 없으면 신규진입만 되게 식을 만들어 주십시오.
프로필 이미지
sambuck
2018-05-09
218
글번호 118772
시스템
답변완료

부탁드립니다

아래 수식을 data2에 적용될수있도록 변경 부탁드립니다 _아래- Input:length(20),X(1),Q(1),파동선두께(3),추세선두께1(1),추세선두께2(1),소수점아래자리수(2),z1(2),z2(1),p1(2),p2(0),숫자색(black),파동선색1(cyan),파동선색2(magenta),추세선색1(blue),추세선색2(red); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0),처리구분(""), TL_Val1(0),TL_Val2(0); Array:고점[10,2](0),저점[10,2](0); 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 고점[3,1][1] < 고점[2,1][1] and 고점[2,1][1] > 고점[1,1][1] and 저점[2,1][1] < 저점[1,1][1] Then TL_Delete(TL2); } if X == 1 Then TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]); if H < 고점[2,1] Then TL_SetColor(TL1,파동선색1); Else TL_SetColor(TL1,파동선색2); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],소수점아래자리수)); Text_SetStyle(Text1, z1, z2); If 고점[3,1] < 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then { sBar = Index - 저점[2,2]; eBar = Index - 저점[1,2]; TL_SetExtLeft(TL2,false); TL_SetExtRight(TL2,false); if Q == 1 Then TL2 = TL_New(sDate[sBar],sTime[sBar],저점[2,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetColor(TL2,추세선색1); TL_SetExtLeft(TL2,true); TL_SetExtRight(TL2,true); } } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] Then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1] > 고점[1,1][1] Then TL_Delete(TL3); } if X == 1 Then TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]); TL_SetColor(TL1,추세선색2); if L > 저점[2,1] Then TL_SetColor(TL1,파동선색2); Else TL_SetColor(TL1,파동선색1); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],소수점아래자리수)); Text_SetStyle(Text1, p1, p2); If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then { sBar = Index - 고점[2,2]; eBar = Index - 고점[1,2]; TL_SetExtLeft(TL3,false); TL_SetExtRight(TL3,false); if Q == 1 Then TL3 = TL_New(sDate[sBar],sTime[sBar],고점[2,1],sDate[eBar],sTime[eBar],고점[1,1]); TL_SetColor(TL3,blue); TL_SetExtLeft(TL3,true); TL_SetExtRight(TL3,true); } } } TL_SetSize(TL1,파동선두께); TL_SetSize(TL2,추세선두께1); TL_SetSize(TL3,추세선두께2); #텍스트색상 Text_SetColor(text1,숫자색);#숫자 text색
프로필 이미지
마르뚝
2018-05-09
252
글번호 118770
지표

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

프로필 이미지
amxy
2018-05-09
0
글번호 118769
지표
답변완료

수식 요청드립니다.

감사합니다. 수식 요청드립니다. 아래식에서 1,2번 추가요청드립니다 1. ★이후 20일선 Crossup에 의한 매수 진입 전에 캔들의 가격이 200선 아래로 내려가는 조건의 ■(파랑)이 생기더라도 지정한 1~2 (M)개의 ■(파랑)은 무시하고 20일선 Crossup에 의한 매수 진입 그림참조, (매도:반대) 진입조건에서만 ■을 무시하고 나머지 조건은 ■가 작용될수 있도록 요청드립니다. 부탁드립니다. input : n(20); var : t(0),t1(0),tx(0),tl(0); var1 = ma(c,20); var2 = ma(C,200); #200선 상향돌파 if Crossup(C,var2) Then { #t는 1 t = 1; #이전구간(하향이탈구간) t값은 t1에 저장 t1 = t[1]; #■출력 tx = Text_New(sdate,stime,H+PriceScale,"■"); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); #매수주문을 구간에 한번하기 위한 변수 Condition1 = false; } #200선 하향이탈 if CrossDown(C,var2) Then { #t는 -1 t = -1; #이전구간(상향돌파구간) t값은 t1에 저장 t1 = t[1]; #■출력 tx = Text_New(sdate,stime,L-PriceScale,"■"); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); #매도주문을 구간에 한번하기 위한 변수 Condition2 = false; } #t가 1일때 종가가 200선대비 n틱이상 크게되면 if t == 1 and c > var2+PriceScale*n Then { #t는 2로 변경 t = 2; #●출력 tx = Text_New(sdate,stime,H+PriceScale,"●"+NumToStr(C,2)); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); } #t가 -1일때 종가가 200선대비 n틱이상 작게되면 if t == -1 and c < var2-PriceScale*n Then{ #t는 -2로 변경 t = -2; #●출력 tx = Text_New(sdate,stime,L-PriceScale,"●"+NumToStr(C,2)); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); } # 200선 상향돌파하고 직전구간(하향이탈구간) t가 -2까지 기록했으면 if crossup(t,0) and t1 <= -2 Then { #★출력 tx = Text_New(sdate,stime,H+PriceScale*3,"★"); Text_SetStyle(tx,2,2); Text_SetColor(tx,RED); } # 200선 하향이탈하고 직전구간(상향돌파구간) t가 2까지 기록했으면 if CrossDown(t,0) and t1 >= 2 Then { #★출력 tx = Text_New(sdate,stime,L-PriceScale*3,"★"); Text_SetStyle(tx,2,2); Text_SetColor(tx,BLUE); } #200선 상향돌파한 구간이고 #직전 햐향이탈한 구간은 t는 -2까지 기록했고 #현재10선이 200선보다 크면 매수 if Condition1 == false and t > 0 and t1 <= -2 and var1 > var2 Then{ Condition1 = true; buy(); } #200선 하향이탈한 구간이고 #직전구간(상향돌파구간)애서 t는 2까지 기록했고 #현재10선이 200선보다 작으면 매도 if Condition2 == false and t < 0 and t1 >= 2 and var1 < var2 Then{ Condition2 = true; sell(); }
프로필 이미지
라떼처럼
2018-05-10
242
글번호 118763
시스템
답변완료

익절수식 추가

아래는 buy와 sell 2가지 수식이며 손절과 trailing stop을 사용합니다. input에서 익절 수식을 추가바랍니다. 항상 고맙습니다. *************************************** 1)buy 수식 input : b1(11),b2(13),진입시간(090000); input : 손절1(20),TR1(20); input : 손절2(20),TR2(20); var : T1(0),entry(0),HH(0),EL(0); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 진입시간 and C <= DayHigh-PriceScale*b1 and C[1] > DayHigh-PriceScale*b1 Then buy("b1"); if TotalTrades > TotalTrades[1] Then HH = H; if H > HH Then HH = H; if MarketPosition == 0 and entry == 1 and stime >= 진입시간 and C <= HH-PriceScale*b2 and C[1] > HH-PriceScale*b2 Then buy("b2"); if MarketPosition == 1 then { if IsEntryName("b1") == true then { ExitLong("bl1",AtStop,EntryPrice-PriceScale*손절1); ExitLong("btr1",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR1); } if IsEntryName("b2") == true then { ExitLong("bl2",AtStop,EntryPrice-PriceScale*손절2); ExitLong("btr2",AtStop,highest(h,BarsSinceEntry)-PriceScale*TR2); } } 2) sell 수식 input : s1(20),s2(20),진입시간(090000); input : 손절1(20),TR1(20); input : 손절2(20),TR2(20); var : T1(0),entry(0),LL(0),EH(0); if Bdate != Bdate[1] Then T1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 and stime >= 진입시간 and C >= daylow+PriceScale*s1 and C[1] < daylow+PriceScale*s1 Then sell("s1"); if TotalTrades > TotalTrades[1] Then LL = L; if L < LL Then LL = L; if MarketPosition == 0 and entry == 1 and stime >= 진입시간 and C >= LL+PriceScale*s2 and C[1] < LL+PriceScale*s2 Then sell("s2"); if MarketPosition == -1 then { if IsEntryName("s1") == true then { ExitShort("sl1",AtStop,EntryPrice+PriceScale*손절1); ExitShort("str1",AtStop,Lowest(l,BarsSinceEntry)+PriceScale*TR1); } if IsEntryName("s2") == true then { ExitShort("sl2",AtStop,EntryPrice+PriceScale*손절2); ExitShort("str2",AtStop,Lowest(l,BarsSinceEntry)+PriceScale*TR2); } }
프로필 이미지
좌오비우오비
2018-05-09
213
글번호 118754
시스템
답변완료

문의 드립니다

틱차틱에서 1 최근 90분 사이의 최고값과 최저값 2 최근 70봉 사이의 최고값과 최저값 감사합니다
프로필 이미지
파인애플
2018-05-09
214
글번호 118752
지표
답변완료

수식문의

1. upvol, downvol - 업틱 거래량과 다운틱 거래량을 말하는 건가요? 2. uptick, downtick - 거래량을 제외하고 업틱과 다운틱의 숫자를 말하는 것인가요? 3. 예시가 맞는지요? 체결량: +1, +1, +98, -10, -20, -20 이렇게 되어 있다고 하면 upvol : +100, downvol : -50 uptick : 3, downtick : -3 4. 아침 동시호가의 체결량은 어디에 포함이 되는지요?
프로필 이미지
무사시
2018-05-09
255
글번호 118751
지표
답변완료

에라.

건의 한다고 하셨는데,, 진행상황 부탁드립니다. 용량 늘리는거라 큰문제는 아닐거 같은데.. 신경좀 써주세요. 아래 내용으로 요청을 드렸고 진행상황 부탁드립니다. ******** 네 고맙슴니다. 꼭 느릴수 있도록 부탁드링니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 에라 > 안녕하세요 예스스탁입니다. 문의하신 내용은 건의하도록 하겠습니다. 즐거운 하루되세요 > geylang 님이 쓴 글입니다. > 제목 : 에라 > 아래와 같이 회신을 잘 받았읍니다만 텍스트를 최대한 줄여도 같은 에라 메세지가 뜨네요. 귀사에서 텍스트 메모리를 조금더 늘려주시기를 부탁드립니다 ****************************************************** 안녕하세요 예스스탁입니다. 수식에서 사용된 텍스트가 제한된 메모리를 넘어서면 발생하는 내용입니다. 수식에서 지정된 텍스트부분을 줄여주셔야 합니다. Buy("매수진입"), isentryname("매수진입") 위와 같이 수식 전반에 ""안에 텍스트를 사용한 부분의 텍스트의 내용을 최대한 줄여주셔야 합니다. 즐거운 하루되세요 > geylang 님이 쓴 글입니다. > 제목 : 에라 > 시물레이션 돌리니까 아래 메세지가 뜹니다. " 시스템오류 not enough space (12) " 해결 방법 부탁드립니다 ******
프로필 이미지
geylang
2018-05-08
227
글번호 118750
시스템