커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

진입횟수

안녕하세요. 1. 합성시스템에서 모든 매수 신호를 망라하고 매수신호는 오직 1번만 발생하게 하려면 어떻게 하는지 궁금합니다 2. 그리고 아래와 같은 식을 사용해왔는데 var&#160;:&#160;B1count(0); if&#160;Bdate&#160;!=&#160;Bdate[1]&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;B1count&#160;=&#160;0; if&#160;CurrentContracts&#160;>&#160;CurrentContracts[1]&#160;and&#160;LatestEntryName(0)&#160;==&#160;"매수"&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;B1count&#160;=&#160;B1count+1; if&#160;B1count&#160;<&#160;1&#160;and&#160;매수조건&#160;Then &#160;&#160;&#160;&#160;&#160;&#160;buy("매수"); 이 식의 문제점은 매수조건이면 손절이 발생한 같은 봉에서 재진입을 한다는 것입니다. 이런 현상을 막으려고 if (MarketPosition == 0 and (IsEntryName("매수",1) == false or IsExitName("StopLoss",1) == false)) or (MarketPosition == 1 and LatestEntryName(0) != "매수") and 매수조건 then &#160;buy("매수"); 이렇게도 해봤는데 그것도 잘 안됩니다.ㅠㅠ 감사합니다
프로필 이미지
맘속의행복
2018-11-22
218
글번호 123836
시스템
답변완료

수정 부탁드립니다.

1. 그림과 같이 지정한 시간에 당일청산이 이루어지지 않고 있습니다. 아래식의 ##당일 청산1, ##당일 청산2 두가지 모두 안되는듯 합니다. 어떤게 좋은지 몰라 두가지 적어 놓았습니다. 종목은 항셍이며 지정하는 시간, 한국시간 02시 전에 무조건 청산이 될 수 있게 요청드립니다. ##주말청산과 ##특정일청산도 다시한번 봐주시길 요청드립니다. 2. 이전봉 N(10)개의 평균 거래량이 몇 이상 조건을 추가 요청드립니다. input : 시작시간(101800), 진입종료(002400); input : 당일청산시간1(003300); input : 한국주말청산1(004200) ; input : 특정일종료날짜(20181018), 특정일종료시간(004200); input : 손절(120), 익절1(80),익절1하락퍼센트(0.9); var : BH(0),SL(0),HE(0),LE(0); var : Tcond(False); ### 지표 input : P21(30), P22(70), P23(400); ## 30 60 var21 = ma(C,P21); var22 = ma(C,P22); var23 = ma(C,P23); ######## if stime == 시작시간 or (stime >시작시간 and stime[1] < 시작시간) Then{ Tcond = true; } if stime == 진입종료 or (stime > 진입종료 and stime[1] < 진입종료) Then{ Tcond = false; } if Tcond == true Then{ if crossup(var22,var23) Then buy("매수"); if CrossDown(var22,var23) Then sell("매도"); } if MarketPosition == 1 Then{ BH = highest(H,BarsSinceEntry); if MaxEntries == 1 Then HE = LatestEntryPrice(0); if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then HE = LatestEntryPrice(0); if BH >= EntryPrice+PriceScale*익절1 then{ ExitLong("B익절1",AtStop,BH-(BH-EntryPrice)*익절1하락퍼센트); } ExitLong("B손절",AtStop,HE-PriceScale*손절); } if MarketPosition == -1 Then{ SL = Lowest(L,BarsSinceEntry); if MaxEntries == 1 Then LE = LatestEntryPrice(0); if MaxEntries >= 2 and LatestEntryPrice(0) < LE Then LE = LatestEntryPrice(0); if SL <= EntryPrice-PriceScale*익절1 then{ ExitShort("S익절1",AtStop,SL+(EntryPrice-SL)*익절1하락퍼센트); } ExitShort("S손절",AtStop,LE+PriceScale*손절); } ##### 당일 청산 1 if 당일청산시간1 <= sTime and sTime <당일청산시간1 then { if MarketPosition == 1 then{ ExitLong("B장종료1"); } if MarketPosition == -1 then{ ExitShort("S장종료1"); } } ##### 당일 청산 2 if DayOfWeek(bdate) == 1 and ((sdate != sdate[1] and stime >= 당일청산시간1) or (sdate == sdate[1] and stime >= 당일청산시간1 and stime[1] < 당일청산시간1)) Then { if MarketPosition == 1 Then ExitLong("B장종료D1"); if MarketPosition == -1 Then ExitShort("S장종료D1"); } #####특정일청산 if sdate == 특정일종료날짜 and ((sdate != sdate[1] and stime >= 특정일종료시간) or (sdate == sdate[1] and stime >= 특정일종료시간 and stime[1] < 특정일종료시간)) Then { if MarketPosition == 1 Then exitlong("B특정일종료"); if MarketPosition == -1 Then ExitShort("S특정일종료"); } #####한국주말청산 if DayOfWeek(bdate) == 5 and ((sdate != sdate[1] and stime >= 한국주말청산1) or (sdate == sdate[1] and stime >= 한국주말청산1 and stime[1] < 한국주말청산1)) Then { if MarketPosition == 1 Then ExitLong("B주말청산1"); if MarketPosition == -1 Then ExitShort("S주말청산1"); }
프로필 이미지
라떼처럼
2018-11-23
245
글번호 123835
시스템
답변완료

부탁드립니다.

1. 60149관련입니다. 2. 전일동시간대누적거래량은 알려주셨으나 "전일동시간대 최고가"가 빠졌네요. 부탁드립니다. ("전일동시간대 최고가"란 오늘 시간(예로 11시)에 해당하는 어제 11시간까지의 최고가를 말합니다.)
프로필 이미지
예시
2018-11-23
206
글번호 123834
지표
답변완료

60075와 관련입니다

안녕하세요 어렵지 않은걸 자꾸 귀찮케해서 미안합니다 60075와 관련해서 60082에서 답변해 주셧는데, 설명이 부족한 탓인지 의도와 다른 답변을 주셨네요 1. 원하는 답은 일봉차트에서 적용할 때 선이 표시되도록 하는 것입니다 일봉차트에서 weekopen(0)은 주간 첫거래일 시가가 주간 마지막까지 직선으로 표시됩니다 일봉차트에서 weekclose(0)를 적용하면 날마다 가격표시가 변하면서 표시됩니다 그래서 weekclose(0) 대신 직선으로 표시되는 지표식을 원하는 것입니다 예를 들면 주 3일째는 3일째의 종가가 주간 첫날부터 직선으로 그려지도록, 주 5일째는 5일째의 종가가 주간 첫날부터 직선으로 그려지는 것입니다 한 주간이 지났을 때는 금요일 일봉의 종가가 월요일부터 금요일까지 직선으로 그려지도록 지표식을 부탁합니다 2. 원하는 답은 일봉차트에서 적용할 때 선이 표시되도록 하는 것입니다 일봉차트에서 monthopen(0)은 월간 첫거래일 시가가 월간 마지막까지 직선으로 표시됩니다 일봉차트에서 monthclose(0)를 적용하면 날마다 가격표시가 변하면서 표시됩니다 그래서 monthclose(0) 대신 직선으로 표시되는 지표식을 원하는 것입니다 예를 들면 월 10일째는 10일째의 종가가 월간 첫날부터 직선으로 그려지도록, 월 20일째는 20일째의 종가가 월간 첫날부터 직선으로 그려지는 것입니다 한 달이 지났을 때는 월 마지막 거래일 일봉의 종가가 월 첫날부터 월 마지막 거래일까지 직선으로 그려지도록 지표식을 부탁합니다
프로필 이미지
등정
2018-11-23
186
글번호 123833
지표
답변완료

질문드립니다.

외부변수 A에 숫자를 0을 입력하면 매수조건만 진입하고 숫자를 1을 입력하면 매도조건만 진입하게 할 수 있을까요?
프로필 이미지
stockric
2018-11-22
166
글번호 123832
시스템
답변완료

DATA2 참조하여 매수 매도 시스템을 만들고자 합니다.

DATA2에 아래와 같은 켈트너 채널 시스템을 적용하여 매수 매도 시스템을 만들고자 합니다. 변환부탁드립니다. 미리 정말 감사드립니다. Inputs: Length(10), ATRs(1.5), Pval(0.05); Variables: KUpper(0), BuySetup(False), BuyBase(0); Variables: KLower(0), SellSetup(False), SellBase(0); KUpper = KeltnerChannel(Close, Length, ATRs); KLower = KeltnerChannel(Close, Length, -ATRs); Condition1 = Crossup(Close, KUpper); Condition2 = CrossDown(Close, KLower); If MarketPosition() == 1 OR Close < MA(close, Length) Then BuySetup = False; Else If Condition1 Then Begin BuySetup = True; BuyBase = High; End; If MarketPosition() == -1 OR Close > MA(Close, Length) Then SellSetup = False; Else If Condition2 Then Begin SellSetup = True; SellBase = Low; End; //Description : Keltner Channel Long Entry If BuySetup Then Buy ("KC_LE", AtStop, BuyBase + Pval); //Description : Keltner Channel Short Entry If SellSetup Then Sell ("KC_SE", AtStop, SellBase - Pval);
프로필 이미지
justlike
2018-11-22
198
글번호 123823
시스템
답변완료

함수요청

안녕하세요? 함수요청드립니다. 해외선물 크루드오일 30분봉으로 거래를 하고자 합니다. 1. 써머타임 적용시 -매수: 23시 30분 시점에 현재가 > 00시 30분 시점에 현재가 이면, 익일 1시 시초가 진입 -매도: 23시 30분 시점에 현재가 < 00시 30분 시점에 현재가 이면, 익일 1시 시초가 진입 -청산: SetStopEndOfday(043000); -당일 진입, 당일 청산으로 1번 왕복 거래입니다. 2. 써머타임 해지시 -매수: 22시 30분 시점에 현재가 > 23시 30분 시점에 현재가 이면, 익일 0시 시초가 진입 -매도: 22시 30분 시점에 현재가 < 23시 30분 시점에 현재가 이면, 익일 0시 시초가 진입 -청산: SetStopEndOfday(033000); -당일 진입, 당일 청산으로 1번 왕복 거래입니다.
프로필 이미지
흰둥이아빠
2018-11-22
179
글번호 123821
시스템
답변완료

요청드립니다.

아래 식에서 Price Channel 4개의 모든 Channel이 [1]대비 같거나 상승중 일때 조건에 따라 매수 Price Channel 4개의 모든 Channel이 [1]대비 같거나 하락중 일때 조건에 따라 매도 를 하고 싶은데 Price Channel 4개를 지표로 나타내고 보니 지표상 하락중인데 매수가 나타납니다.(그림참조) 수정좀 부탁드립니다. SetStopProfittarget(Target) 목표청산에 도달하면 최고값대비 10% 하락하면 청산 해선 PriceScale을 고려하여 청산 수식 포함요청드립니다. ###매수 매도 수식### input : 손절(80),Target(0.4); var : BH(0),SL(0),HE(0),LE(0); var : T(0), S(0); ##Price Chanel INPUT : Length51(50), Length52(200) ; VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);; Tchan51 = Highest(High, Length51); Bchan52 = Lowest(Low, Length51); Tchan53 = Highest(High, Length52); Bchan54 = Lowest(Low, Length52); input : P31(30), P82(280); var31 = wma(C,P31); var82 = wma(C,P82); ##M Price Chanel // Tchan53 = Highest(High, Length52)[1]; # Highest Length52(200) // Tchan51 = Highest(High, Length51)[1]; # Highest Length51(50) // Bchan52 = Lowest(Low, Length51)[1]; # Lowest Length51(50) // Bchan54 = Lowest(Low, Length52)[1]; # Lowest Length52(200) ## Price Chanel 4개 모두 상승 중이면 S = 1 if Tchan53[1] < Tchan53 and Tchan51[1] < Tchan51 and Bchan52[1] < Bchan52 and Bchan54[1] < Bchan54 then { S = 1; } ## Price Chanel 4개 모두 하락 중이면 S = -1 if Tchan53[1] > Tchan53 and Tchan51[1] > Tchan51 and Bchan52[1] > Bchan52 and Bchan54[1] > Bchan54 Then { S = -1; } if S == 1 and Crossup(var31, var82) Then buy("B2"); if S == -1 and Crossdown(var31, var82) Then sell("S2"); ### 청산 if MarketPosition == 1 Then{ BH = highest(H,BarsSinceEntry); if MaxEntries == 1 Then HE = LatestEntryPrice(0); if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then HE = LatestEntryPrice(0); SetStopProfittarget(Target); ExitLong("B손절",AtStop,HE-PriceScale*손절); } if MarketPosition == -1 Then{ SL = Lowest(L,BarsSinceEntry); if MaxEntries == 1 Then LE = LatestEntryPrice(0); if MaxEntries >= 2 and LatestEntryPrice(0) < LE Then LE = LatestEntryPrice(0); SetStopProfittarget(Target); ExitShort("S손절",AtStop,LE+PriceScale*손절); } /* #### 지표 INPUT : Length51(50), Length52(200) ; VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0); Tchan51 = Highest(High, Length51); Bchan52 = Lowest(Low, Length51); Tchan53 = Highest(High, Length52); Bchan54 = Lowest(Low, Length52); Plot51(Tchan51, "TOP50"); Plot52(Bchan52, "BOT50"); Plot53(Tchan53, "TOP200"); Plot54(Bchan54, "BOT200");
프로필 이미지
라떼처럼
2018-11-25
206
글번호 123818
시스템
답변완료

지표

아래지표에서 종가선을 하나 추가해서 추세선 빨강 파랑하고 체우기를 하고 싶은데 가능한지요..그리고 추세선이 만나는 지점에 빨강 파랑 점을찍고 싶습니다.. input : P(3); var : cnt(0),i1(0),i2(0),TL1(0),TL2(0); Array : SHV[50](0),SHD[50](0),SHT[50](0); Array : SLV[50](0),SLD[50](0),SLT[50](0); if SwingHigh(1,h,P,P,P*2+1) != -1 Then{ SHV[0] = H[P]; SHD[0] = sdate[P]; SHT[0] = stime[P]; for cnt = 1 to 49{ SHV[cnt] = SHV[cnt-1][1]; SHD[cnt] = SHD[cnt-1][1]; SHT[cnt] = SHT[cnt-1][1]; } i1 = 1; for cnt = 1 to 49{ if SHV[cnt] > SHV[0] Then{ i1 = cnt; cnt = 1000; } } if i1 > 0 Then{ TL_Delete(TL1); TL1 = TL_New(SHD[i1],SHT[i1],SHV[i1],SHD[0],SHT[0],SHV[0]); TL_SetExtRight(TL1,true); TL_SetColor(TL1,RED); } } if SwingLow(1,L,P,P,P*2+1) != -1 Then{ SLV[0] = L[P]; SLD[0] = sdate[P]; SLT[0] = stime[P]; for cnt = 1 to 49{ SLV[cnt] = SLV[cnt-1][1]; SLD[cnt] = SLD[cnt-1][1]; SLT[cnt] = SLT[cnt-1][1]; } i2 = 1; for cnt = 1 to 49{ if SLV[cnt] < SLV[0] Then{ i2 = cnt; cnt = 1000; } } if i2 > 0 Then{ TL_Delete(TL2); TL2 = TL_New(SLD[i2],SLT[i2],SLV[i2],SLD[0],SLT[0],SLV[0]); TL_SetExtRight(TL2,true); TL_SetColor(TL2,blue); } }
프로필 이미지
야크
2018-11-22
207
글번호 123814
지표