커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 문의 드립니다

저번에 답변 주셨던 두개식으로 적용해봤는데 신호가 지멋대로 나오고 있습니다. 진입청산수식을 스위칭으로 하고있는데 어떨때는 신호가 나오고 어떨때는 신호가 안나오고 그냥 지나쳐버렸는데. st 50 상향돌파->매수, 하향돌파->매도인데 매수되고 하양돌파했는데 스위칭안되고 계속 지나치다가 그다음날 신호에서 스위칭되거나 합니다. 그리고 밑에 두번째 수식은 적용해도 손절청산되고 또 같은 방향으로 재진입되더라고요 멈췄다 다음스위칭신로호 재진입도 안되고 그냥 청산즉시 재진입되는데 보시고 답변좀부탁드릴께요 var : entry(0),Xcond(false); if bdate != bdate[1] Then { entry = 0; Xcond = false; } if MarketPosition(0) != 0 and MarketPosition(0) != MarketPosition(0)[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("StopLoss",1) or IsExitName("StopProfitTarget",1)) Then Xcond = true; if entry < 10 and Xcond == false Then { 진입수식들 } if (sdate != sdate[1] and stime >= 230000) or (sdate == sdate[1] and stime >= 230000 and stime[1] < 230000) Then { 23시진입수식 } SetStopLoss(PriceScale*7,PointStop); SetStopProfittarget(PriceScale*7,PointStop); input : 시작시간(202500),끝시간(50000),sto1(10),sto2(5); var :stok(0); stok = StochasticsK(sto1,sto2); if (sdate != sdate[1] and stime >= 끝시간) or (sdate == sdate[1] and stime >= 끝시간 and stime[1] < 끝시간) then { Condition1 = false; if MarketPosition == 1 Then ExitLong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } if (sdate != sdate[1] and stime >= 시작시간) or (sdate == sdate[1] and stime >= 시작시간 and stime[1] < 시작시간) then { Condition1 = true; if stok> 50 Then buy("b1"); if stok < 50 Then sell("S1"); } if Condition1 == true and Condition1[1] == true then { if crossup(stok,50) Then buy("b"); if CrossDown(stok,50) Then sell("S"); }
프로필 이미지
toal
2019-07-30
219
글번호 130771
시스템
답변완료

라인작업

만들어준 수식으로 다음 작업 해보았읍니다 이격이 일정하지 않아 문의드립니다. 식 봐주시고 정 어려우시면 (0.625)로 일정하게 수식 부탁 드립니다. Input : 기준1(290), 이격1(2.5), 이격2(1.25), AA1(5); var: 이격3(0); var3 = 기준1; var1=0; if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = 이격2/2; plotbaseline1(Var3,"1"); plotbaseline2(Var3-이격2,"2"); plotbaseline3(Var3-이격2+이격3,"3"); plotbaseline4(Var3-이격2-이격3,"4"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*1-이격2)/2; plotbaseline5(Var3-(이격1*1),"5"); plotbaseline6(Var3-(이격1*1)-이격2,"6"); plotbaseline7(Var3-(이격1*1)-이격2+이격3,"7"); plotbaseline8(Var3-(이격1*1)-이격2-이격3,"8"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*2-이격2)/2; plotbaseline9(Var3-(이격1*2),"9"); plotbaseline10(Var3-(이격1*2)-이격2,"10"); plotbaseline11(Var3-(이격1*2)-이격2+이격3,"11"); plotbaseline12(Var3-(이격1*2)-이격2-이격3,"12"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*3-이격2)/2; plotbaseline13(Var3-(이격1*3),"13"); plotbaseline14(Var3-(이격1*3)-이격2,"14"); plotbaseline15(Var3-(이격1*3)-이격2+이격3,"15"); plotbaseline16(Var3-(이격1*3)-이격2-이격3,"16"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*4-이격2)/2; plotbaseline17(Var3-(이격1*4),"17"); plotbaseline18(Var3-(이격1*4)-이격2,"18"); plotbaseline19(Var3-(이격1*4)-이격2+이격3,"19"); plotbaseline20(Var3-(이격1*4)-이격2-이격3,"20"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*5-이격2)/2; plotbaseline21(Var3-(이격1*5),"21"); plotbaseline22(Var3-(이격1*5)-이격2,"22"); plotbaseline23(Var3-(이격1*5)-이격2+이격3,"23"); plotbaseline24(Var3-(이격1*5)-이격2-이격3,"24"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*6-이격2)/2; plotbaseline25(Var3-(이격1*6),"25"); plotbaseline26(Var3-(이격1*6)-이격2,"26"); plotbaseline27(Var3-(이격1*6)-이격2+이격3,"27"); plotbaseline28(Var3-(이격1*6)-이격2-이격3,"28"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*7-이격2)/2; plotbaseline29(Var3-(이격1*7),"29"); plotbaseline30(Var3-(이격1*7)-이격2,"30"); plotbaseline31(Var3-(이격1*7)-이격2+이격3,"31"); plotbaseline32(Var3-(이격1*7)-이격2-이격3,"32"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*8-이격2)/2; plotbaseline33(Var3-(이격1*8),"33"); plotbaseline34(Var3-(이격1*8)-이격2,"34"); plotbaseline35(Var3-(이격1*8)-이격2+이격3,"35"); plotbaseline36(Var3-(이격1*8)-이격2-이격3,"36"); } if var1 <= AA1 Then { var1 = var1 +1 ; 이격3 = (이격1*9-이격2)/2; plotbaseline37(Var3-(이격1*9),"37"); plotbaseline38(Var3-(이격1*9)-이격2,"38"); plotbaseline39(Var3-(이격1*9)-이격2+이격3,"39"); plotbaseline40(Var3-(이격1*9)-이격2-이격3,"40"); }
프로필 이미지
회원
2019-07-30
241
글번호 130770
지표
답변완료

청산식 좀 봐주십시요.

* 많은 도움에 고맙습니다. * 아래 식에서 마지막 거래가 외 이루어 지죠? 끝나면 40틱 이상인데 마지막 거래가 한번 더 매매가 되네요 ??? Input : 당일수익틱수(40); Var : N1(0),dayPl(0),당일수익(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; if Bdate != Bdate[1] Then {Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("목표40만원달성1",1) == true or IsExitName("목표40만원달성2",1) == true) then Xcond = true; if Xcond == false then { ### 매매식 A (매수1) B (매수66) C (매도2) ## 청산식 if MarketPosition==1 and IsEntryName("매수66") == true then{ ExitLong("수청66",AtLimit,EntryPrice+PriceScale*32); } ########################################################################################################################### highest(H,BarsSinceEntry) Lowest(L,BarsSinceEntry) SetStopProfittarget(PriceScale*92,PointStop); SetStopLoss(PriceScale*28,PointStop); } } if sdate != sdate[1] Then SetStopEndofday(043000); if bdate != bdate[1] Then SetStopEndofday(0); ########################################################################################################################### if MarketPosition == 1 then{ExitLong("목표40만원달성1",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); } if MarketPosition == -1 then{ExitShort("목표40만원달성2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); } * 고맙습니다.
프로필 이미지
요타
2019-07-30
252
글번호 130769
강조
답변완료

수식질문드려요

기본차트 3분봉 참조차트1 30분봉 참조차트2 60분봉 참조1과 참조2의 차트에서 종가기준 20일선보다 크면 매수 신호 발생 참조1과 참조2의 차트에서 종가기준 20일선보다 작으면 매도 신호 발생
프로필 이미지
에이드
2019-07-30
238
글번호 130768
시스템
답변완료

질문입니다.

안녕하세요 수고 많으십니다. 900틱차트에서 60분봉 스톡케스트 수치값이나 모양 그대로 900 틱차트에 적용할 수있는 수식이 무엇인지요? 부탁드립니다 ㅠㅠ
프로필 이미지
스오어스
2019-07-30
250
글번호 130767
지표

태양같이 님에 의해서 삭제되었습니다.

프로필 이미지
태양같이
2019-07-29
0
글번호 130765
지표
답변완료

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 같은 전략인데 변수만 다른 시스템 신호를 하나의 시스템 속에 넣을 수가 있나요? 가령 5,20 이평 전략인데 20, 40 이평 전략 이렇게 전략은 똑같은데 신호를 하나의 시스템에서 각각 나오게 하는 방법이 있나요? 그러니까 시스템관리자로 여러 전략 합성한 것과 같은 효과를 하나의 전략에서 낼 수 있는가 해서요. 2. 외부변수 수치를 n~ n2 중에 랜덤으로 쓰게 하려면 어떻게 해야 하나요? 가령 이평선 돌파 전략인데 이평수치를 5~ 30 사이서 랜덤으로 나오게 하려면 어떻게 하나요?
프로필 이미지
잡다백수
2019-07-30
249
글번호 130764
시스템
답변완료

재질문 (글번호 63514번)

안녕하세요? 아래 글번호 63514번 답변 감사드립니다. 다시 질문 합니다. 단순하게 and 로 조건을 추가 하는 것이 아니라, Vars : SP(0,data1), TickSize(0,data1); Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2); var : v1(0,data2),v2(0,data2); SP = MarketPosition; TickSize = PriceScale; v1 = data2(H); v2 = data2(L); IF v1[10] > 0 Then Begin fstHH = data1(Highest(H, 5)); fstLL = data1(Lowest(L, 3)); sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]); sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]); End; IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize); IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL + TickSize); 상기의 전략에서 생성된 신호가 BB안에 있을 때에만 생성하고자 합니다. 즉 기존 전략에서 매매신호가 A,B, C, D가 생성되었는데 그 신호가가 A와 B는 BB 안에 위치해 있으며, C와 D는 밖에 있을 경우에 실질적으로 A와 B에서만 매매를 하고자 합니다.
프로필 이미지
흰둥이아빠
2019-07-29
232
글번호 130763
시스템
답변완료

re:re: 파라볼릭 지표 이용 실시간 매수청산

아래 답변 감사드립니다. 다시 질문드리자면, 파라볼릭 값은 현재(미완성)봉 시가에 바로 확정이 되므로, 그 값과 현재값 비교는 되요. LastBarOnChart도 담당자님 말씀데로라면 안되야 될텐데 됩니다. 현재봉(챠트 마지막봉) 감시도 됩니다. 현재봉에서 매수청산신호도 뜹니다. 시스템모니터링 창에 예비신호 칼럼에 <on close> 라고 뜹니다. 다만 그게 왜 실제 매수청산주문이 나가지 않는지가 궁금해요. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 파라볼릭 지표 이용 실시간 매수청산 > 안녕하세요 예스스탁입니다. 1 atstop, atlimit은 최근 완성봉(전봉)에서 특정값을 지정하고 다음봉의 미완성시의 현재가와 비교해 신호를 발생합니다. 미완성봉인 현재봉의 특정값과 현재가를 비교해서는 신호발생이 발가능하므로 현재봉의 파라볼릭과 현재가를 비교해서는 가능하지 않습니다. 매수이후에 직전봉의 파라볼릭값보다 낮은 시세 발생하면 청산하고자 하시면 아래와 같이 작성하시면 됩니다. 2 청산함수에 수량을 지정하지 않으면 자동으로 진입수량 전량을 청산합니다. 3 LastBarOnChart는 지표수식등 마지막봉에만 표시하고자 할떄 사용합니다. 시스템수식에서는 사용이 의미가 없습니다. 봉완성이 다음봉 시가수신될때인데 차트에 다음봉 시가가 들어오면 봉이완성되어 신호발생을 못하게 막게 됩니다. 4 Input : af(0.15), maxAF(0.2), stock_quantity(50); Var : trailing_stop(0); trailing_stop = sar(af,maxAF); if dayindex() == 0 Then { buy("b",OnClose,DEF,stock_quantity); } if MarketPosition == 1 then { ExitLong("trailing_stop", Atstop, trailing_stop); } 즐거운 하루되세요 > no208 님이 쓴 글입니다. > 제목 : 파라볼릭 지표 이용 실시간 매수청산 > 안녕하세요, Parabolic 지표에 가격이 하락하면 실시간으로 매수청산하고 싶습니다. (다음 봉에서 매도 아니고, 현재 미완성 봉에서 매수청산) 아래와 같이 식을 작성해 적용해 보았는데 챠트에서는 ExitLong 이라고 뜨고, 시스템모니터링 창의 "예비신호" 에는 <On Close> 라고 뜹니다만 실제 현재봉에서 매수청산이 되지 않았습니다 Input : af(0.15), maxAF(0.2), stock_quantity(50); Var : trailing_stop(0); trailing_stop = sar(af,maxAF); #차트상 첫봉에 가상으로 매수 진입 - 수기로 이미 매수하였으므로. if dayindex() == 0 Then{ buy("b",OnClose,DEF,stock_quantity); } #차트상 마지막 봉 감시. if MarketPosition ==1 and LastBarOnChart==1 then { if C >= trailing_stop then{ ExitLong("trailing_stop", Atstop, trailing_stop, "", stock_quantity, 0); } Else { ExitLong(); } } 가격이 Parabolic stop 가격까지 하락할 경우 (다음 봉이 아닌) 실시간으로 매수청산 하는 방법이 있을까요??
프로필 이미지
no208
2019-07-29
361
글번호 130762
시스템