커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식부탁드립니다

매번 고맙습니다 아래수식을 1) 전일의 양봉중 가장 큰 양봉(꼬리제외몸통만)의 중심과 종가를 현재까지 오른쪽 추세선 그리기로 현재값(우측끝에)출력하면 좋겠습니다 2) 전일의 음봉중 가장 큰 음봉(꼬리제외몸통만)의 중심과 종가를 현재까지 오른쪽 추세선 그리기로 현재값(우측끝에)출력하면 좋겠습니다 3) 만일 당일에 전일의 양봉,음봉을 갱신하는 양봉,음봉 출현시 1),2)와 동일조건 으로 추세선 그리기하면 좋겠습니다, $$ 이때 전일의 캔들을 당일에 갱신하는 경우일때 전일추세선이 삭제되고 당일 갱신된 캔들에만 추세선 그리기하는 식과 (전일추세선과 당일추세선을 현재까지 동시표현하는 식을 추가삽입방식으로 주석과 함께 부탁드립니다). 미리 감사드립니다. var : D1(0),T1(0),TL1(0),TL2(0),TL3(0),TL4(0); var : tx1(0),tx2(0),tx3(0),tx4(0); if Bdate != bdate[1] Then{ var1 = 0; var2 = 0; D1 = sdate[1]; T1 = stime[1]; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL1); TL_Delete(TL2); } if C > O and abs(C-O) > var1 Then{ var1 = abs(c-O); value1 = (C+O)/2; value2 = C; TL_Delete(TL1); TL_Delete(TL2); TL1 = TL_New(D1,T1,value1,sdate,stime,value1); TL2 = TL_New(D1,T1,value2,sdate,stime,value2); //색상지정 TL_SetColor(TL1,RED); TL_SetColor(TL2,RED); TL_SetExtRight(TL1,True); TL_SetExtRight(TL2,True); Text_Delete(Tx1); Text_Delete(Tx2); Tx1 = Text_New(sdate,stime,value1,NumToStr(value1,2)); Tx2 = Text_New(sDate,sTime,value2,NumToStr(value2,2)); //색상지정 Text_SetColor(Tx1,RED); Text_SetColor(Tx2,RED); } if C < O and abs(C-O) > var2 Then{ var2 = abs(c-O); value3 = (C+O)/2; value4 = C; TL_Delete(TL3); TL_Delete(TL4); //색상지정 TL3 = TL_New(D1,T1,value3,sdate,stime,value3); TL4 = TL_New(D1,T1,value4,sdate,stime,value4); TL_SetColor(TL3,BLUE); TL_SetColor(TL4,BLUE); TL_SetExtRight(TL3,True); TL_SetExtRight(TL4,True); Text_Delete(Tx3); Text_Delete(Tx4); Tx3 = Text_New(sdate,stime,value3,NumToStr(value3,2)); Tx4 = Text_New(sDate,sTime,value4,NumToStr(value4,2)); //색상지정 Text_SetColor(Tx3,BLUE); Text_SetColor(Tx4,BLUE); } Text_SetLocation(tx1,sdate,stime,value1); Text_SetLocation(tx2,sdate,stime,value2); Text_SetLocation(tx3,sdate,stime,value3); Text_SetLocation(tx4,sdate,stime,value4);
프로필 이미지
회원
2018-02-18
170
글번호 116665
지표
답변완료

수식문의

안녕하세요 하기 수식에서 보안 부탁드립니다. 1. input : Period(20),dv(2); var : BBmd(0),BBdn(0),bbup(0),BandB(0),HH(0),LL(0); BBmd = ma(C,Period); BBdn = BollBandDown(Period,Dv); BBUp = BollBandUp(Period,Dv); BandB = ((C-BBDn)/(BBUp-BBdn))*100; if crossup(BandB,90) Then HH = BandB; if BandB > 90 and BandB > HH Then HH = BandB; if CrossDown(BandB,10) Then LL = BandB; if BandB < 10 and BandB < LL Then LL = BandB; if HH > 100 and CrossDown(BandB,90) Then sell("s4"); if LL < 0 and crossup(BandB,10) Then buy("b4"); - 상기 수식에서 data 2를 추가해서 진행합니다. data 2 의 볼린져 상단밴드가 data 1 의 볼린져 상단밴드 밖에 있으면, s4 매도 금지, data 2 의 볼린져 상단이 data 1 의 볼린져 밴드 안쪽으로 들어온 다음에 진입하는 조건 부탁드립니다. data 2의 볼린져 하단밴드가 data 1 의 볼린져 하단밴드 밖에 있으면, b4 매수 금지, data 2의 볼린져 하단이 data 1의 볼린져 밴드 안쪽으로 들어온 다음에 진입하는 조건으로 부탁드립니다. 2. data 2 의 볼린져 중앙이평이 data 1의 볼린져 밴드 중앙이평을 상향 돌파하면 매수 하향 돌파하면 매도 수식 부탁드립니다. 조건은 매수의 경우 전봉대비 중앙이평값이 상승해야 합니다. 매도의 경우 전봉대비 중앙이평값이 하향해야 합니다. 3. input : short(12),long(26),sig(9); value1 = MACD(short, long); value2 = ema(value1, Period); # 매수/매도청산 If CrossUP(value1, value2) and C <= bbmd-PriceScale*10 Then { buy("b2"); } # 매도/매수청산 If CrossDown(value1, value2) and C >= bbmd+PriceScale*10 Then { sell("s2"); } 상기 수식에서 한가지 별도의 수식을 추가하고 싶습니다. 예를 들어, 현재 신규봉이 생성되고 시간이 흘러 봉 완성이 되었을 때 , 오실레이터가 음에서 양으로 바뀌는 첫번재 봉이 볼린져 밴드 하단을 터치하면 매도 진입 오실에이터가 양에서 음오로 바뀌는 첫번째 봉이 볼린져 밴드 상단을 터치하면 매수 진입. 상기 수식 구현이 가능한지 확인 부탁드립니다. 감사합니다.
프로필 이미지
softtoug
2018-02-18
163
글번호 116664
시스템
답변완료

문의 드립니다.

아래의 종목 검색식 좀 부탁드립니다. 1. [일봉] 5억원 이상의 거래대금이 발생하면서 전일대비 3%이상 상승했다가 다시 내려와서 윗꼬리가 (몸통+아랫꼬리)보다 길게 끝난 양봉이 최근 10봉 이내에 2번 이상 있는 종목
프로필 이미지
이심전심
2018-02-14
159
글번호 116663
종목검색
답변완료

수식 문의 드립니다.

이제 트레이딩 입문한 초보입니다.!! 코스피나 코스닥 또는 기타 선물지수에 관한 조건에 따라 특정 종목을 매매하는 조건식을 만들려고 합니다. *****기간기준은 일봉기준입니다.(주변 지인은 5분봉으로 하고 고가,저가,시가 등은 dayhigh 와 같이 하루 값을 쓰라고 하던데..그렇게 해도 시뮬레이션은 이상합니다.***** (전략실행 차트 및 시뮬레이션 차트에서 종목선택창에는 매매하려는 종목, 종목추가창에는 KOSPI종합 or KOSDAQ 종합을 띄었습니다.) 다음 식에서 뭐가 잘 못된 건가요? (검증은 완료됐으나, 시뮬레이션이 영 이상해서요.) 제가 만들고자 한것은 1. 하루전 (KOSDAQ or KOSPI 지수) 종가가 20이평선위에 있고, 오늘, (KOSDAQ or KOSPI 지수)의 시초가에서 전날 (KOSDAQ or KOSPI 지수)의 고가-저가폭의 2배수를 넘을 때 특정 종목을 매수하라 는 매수식을 만들고 2. 매수 당일 종가에 매도하라와 3. 매수 다음날 시초가에 매도하라는 매도식을 만들고 싶습니다. 매도식은 if 조건을 뭐라고 넣을지, sell 은 어떻게 해야 하는지도 궁금합니다. 4. 덧붙여서 최근 20일봉의 고가-저가폭의 평균은 어떻게 식을 쓸 수 있을까요? Input : p1(20), r(2); var : value(0,Data2), 종가(0,Data2), 고가(0,Data2), 저가(0,Data2), 현재가(0,Data2), 시초가(0,Data2); value = Data2(ma(C,p1)[1]); 종가 = Data2(Close[1]); 고가 = Data2(High[1]); 저가 = Data2(Low[1]); 현재가 = Data2(C); 시초가 = Data2(Open); If 종가 - value > 0 and (현재가 - 시초가 - (고가-저가)*r) > 0 Then Buy();
프로필 이미지
cs아빠
2018-02-15
187
글번호 116662
시스템
답변완료

Re : 수식 추가요청 드립니다.

안녕하세요 수정해주신 아래수식을 차트에 적용하니 진입과 청산이 계속나오네요. ( 추가 요청전 수식은 선물 1계약 진입으로 -> 당일 진입식이 매수로 1차 진입할 경우, 매수로만 2차, 3차.....진입 -> 매수 목표청산, 당일 매도진입 금지. -> 당일 진입식이 매도로 1차 진입할 경우, 매도로만 2차, 3차.....진입 -> 매도 목표청산, 당일 매수진입 금지. 그리고 목표청산후 진입은 목표 청산한봉의 다음봉 시가에 진입하는 사용중인 수식 입니다.) 이수식에 추가하여 1차 진입이 당일손실로 손절하는 경우우에 한하여 손절한봉 다음봉 시가에 1차진입 반대방향으로 스위칭, 2계약으로 추가진입 하고 2계약 합산수익 0.7PT이거나, 2계약 합산 추가손실 0.6PT 일경우 당일매매가 종료 되도록 수정요청 드립이다. 감사합니다. //--------------------------------------------------------------------------------- > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수식 추가요청 드립니다. > 안녕하세요 예스스탁입니다. Input : Period(12), sigPeriod(9),SSPT1(0.5),당일손실(1.0); var : N1(0),daypl(0),Xcond(false),T1(0),entry(0); if Bdate != Bdate[1] Then{ Xcond = false; N1 = NetProfit; T1 = TotalTrades; Condition1 = false; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if entry == 1 and IsExitName("dbl1",1) == true Then{ Sell("BS",AtMarket,def,2); Condition1 = true; } if entry == 1 and IsExitName("dsl1",1) == true then{ Buy("SB",AtMarket,def,2); Condition1 = true; } if entry >= 2 and (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true or IsExitName("bl",1) == true or IsExitName("bl",1) == true ) then Xcond = true; } daypl = NetProfit-N1; value1 = TRIX(Period); value2 = ema(value1, sigPeriod); if MarketPosition == 0 and TotalTrades > TotalTrades[1] and (IsExitName("sp1",1) == true or IsExitName("bp1",1) == true) and Xcond == false then { if MarketPosition(1) == 1 and Condition1 == false Then buy("bb",AtMarket); if MarketPosition(1) == -1 and Condition1 == false Then sell("ss",AtMarket); } If CrossUP(value1, value2) and Xcond == false and entry < 1 Then { Buy(); } If CrossDown(value1, value2) and Xcond == false and entry < 1 Then { Sell(); } if MarketPosition == 1 then { if entry == 1 Then ExitLong("dbl1",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); if entry >= 2 then{ if Condition1 == true then { ExitLong("bl",AtStop,EntryPrice-(0.6/CurrentContracts)); ExitLong("bp",AtLimit,EntryPrice+(0.7/CurrentContracts)); } if Condition1 == false then ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if Condition1 == false then ExitLong("bp1",Atlimit,EntryPrice+(SSPT1/CurrentContracts)); } if MarketPosition == -1 then { if entry == 1 then ExitShort("dsl1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if entry >= 2 then{ if Condition1 == true then { ExitShort("sl",AtStop,EntryPrice+(0.6/CurrentContracts)); ExitShort("sp",Atlimit,EntryPrice-(0.7/CurrentContracts)); } if Condition1 == false then ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } if Condition1 == false then ExitShort("sp1",Atlimit,EntryPrice-(SSPT1/CurrentContracts)); } SetStopEndofday(150000); 즐거운 하루되세요 > dandy 님이 쓴 글입니다. > 제목 : 수식 추가요청 드립니다. > > 안녕하세요. 아래 수식에서 선물 1계약 진입수량 매매하고, 1차 진입이 당일손실로 손절하는 경우우에 한하여 손절한봉 다음봉 시가에 1차진입 반대방향으로 스위칭, 2계약으로 추가진입 하고 2계약 합산수익 0.7PT이거나, 2계약 합산 추가손실 0.6PT 일경우 당일매매 종료 수식만 추가요청 드립니다. 감사합니다. //-------------------------------------------------------------------------------------------------- Input : Period(12), sigPeriod(9),SSPT1(0.5),당일손실(1.0); var : N1(0),daypl(0),Xcond(false),T1(0),entry(0); if Bdate != Bdate[1] Then{ Xcond = false; N1 = NetProfit; T1 = TotalTrades; } if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = TotalTrades-T1+1; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] and (IsExitName("dbl",1) == true or IsExitName("dsl",1) == true) then Xcond = true; daypl = NetProfit-N1; value1 = TRIX(Period); value2 = ema(value1, sigPeriod); if MarketPosition == 0 and TotalTrades > TotalTrades[1] and IsExitName("StopProfitTarget",1) == true and Xcond == false then{ if MarketPosition(1) == 1 Then buy("bb",AtMarket); if MarketPosition(1) == -1 Then sell("ss",AtMarket); } If CrossUP(value1, value2) and Xcond == false and entry < 1 Then { Buy(); } If CrossDown(value1, value2) and Xcond == false and entry < 1 Then { Sell(); } if MarketPosition == 1 then{ ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts)); } if MarketPosition == -1 then{ ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); } SetStopPosition; SetStopProfittarget(SSPT1,PointStop); SetStopEndofday(150000); //--------------------------------------------------------------------------------------------------
프로필 이미지
dandy
2018-02-15
154
글번호 116661
시스템
답변완료

추가 문의 드립니다.

안녕하세요? 오전에 시스템문의 답변 감사합니다. 신호발생시에 신호위에 가격표시하는 문제는 처리되었습니다. 추가로 해당 가격에 라인을 긋고 싶습니다. 어떻게 해야 하나요? 참고가능하게 이미지 첨부합니다. 아 그리고,,, 다음 신호가 나올때까지만 라인이 보였으면 좋겠습니다.
프로필 이미지
jyck
2018-02-14
240
글번호 116658
시스템

정상에서야 님에 의해서 삭제되었습니다.

프로필 이미지
정상에서야
2018-02-14
66
글번호 116655
시스템
답변완료

문의드립니다.

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 시스템 Strategy: Darvas by Guppy inputs: Periods( 100 ), ExitNextDay( false ), GhostBoxExit( false ), BreakoutEntry (false ), VolumeEntry( false ), VolumeAvgLen( 10 ), VolumeFactor( 1.5 ) ; variables: BarsSinceDH( 0 ), BarsSinceDL( 0 ), CriticalLow( 0 ), TempD_Low( 0 ), SearchForLow ( false ), D_Low( 0 ), D_High( 0 ), BottomLineNum( 0 ), TopLineNum( 0 ), LeftSideNum( 0 ), RightSideNum( 0 ), CriticalHigh( 0 ), TempD_High( 0 ), DHighLowDiff( 0 ), MyStop( 0 ), MyTrigger( 0 ), DownTrend( 0 ) ; if CurrentBar > Periods then begin BarsSinceDH = BarsSinceDH + 1 ; BarsSinceDL = BarsSinceDL + 1 ; if Low[3] <= CriticalLow[4] and Low[3] <= Low[2] and Low[3] <= Low[1] and Low[3] < Low then begin TempD_Low = Low[3] ; BarsSinceDL = 3 ; end ; if SearchForLow and BarsSinceDL < 6 and BarsSinceDL <= BarsSinceDH then begin D_Low = Low[BarsSinceDL] ; D_High = TempD_High ; SearchForLow = false ; BottomLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_Low, Date[3], Time[3], D_Low ) ; TopLineNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[3], Time[3], D_High ) ; LeftSideNum = TL_New( Date[BarsSinceDH], Time[BarsSinceDH], D_High, Date[BarsSinceDH], Time[BarsSinceDH], D_Low ) ; RightSideNum = TL_New( Date[3], Time[3], D_High, Date[3], Time[3], D_Low ) ; end ; if High[3] >= CriticalHigh[4] and High[3] >= High[2] and High[3] >= High[1] and High[3] > High then begin BarsSinceDH = 3 ; TempD_High = High[3] ; SearchForLow = true ; end ; CriticalHigh = Highest( High, Periods ) ; CriticalLow = Lowest( Low, BarsSinceDH ) ; end ; DHighLowDiff = D_High - D_Low ; if GhostBoxExit and DHighLowDiff > 0 and Close > D_High + DHighLowDiff then begin MyStop = ( IntPortion( ( Close - D_Low ) / DHighLowdiff ) - 1 ) * DHighLowDiff + D_Low ; MyTrigger = MyStop + DHighLowDiff ; end else begin MyStop = D_Low ; MyTrigger = D_High ; end ; if Close crosses under D_Low then DownTrend = 0 else if BreakoutEntry and Close crosses over D_High then DownTrend = 1 else if BreakoutEntry and DownTrend = 1 and BarsSinceDL = 3 then DownTrend = 2 ; if ( BreakoutEntry and DownTrend = 2 ) or BreakoutEntry = false then begin if VolumeEntry then begin if Close crosses over MyTrigger and Volume > Average( Volume, VolumeAvgLen ) * VolumeFactor then Buy next bar market ; end else if Close < MyTrigger then Buy next bar MyTrigger stop ; if ExitNextDay then begin if Low[1] >= MyStop and Low < MyStop then Sell next bar at market ; end else Sell next bar at MyStop stop ; end ; 2. 기타 이전에 begin end는 중괄호라고 말씀해주셨던 것 같은데요. 트레이드스테이션 코드는 Sell next bar at market 이런 주문식 빼고 대부분 동일한가요?
프로필 이미지
잡다백수
2018-02-14
250
글번호 116648
시스템
답변완료

스톡케스팅

스톡케스팅 슬로우 수치좀 가능할까요?
프로필 이미지
원칙대응
2018-02-14
173
글번호 116647
지표