커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 부탁드립니다.

진입후 maketposition =1 일 경우 Entryprice 이 있는데 청산된후 maketposition =0 일 경우 Entryprice 이 사라지는데 두번째 매매시까지 Entryprice 을 어떤 변수에 기억하고 싶습니다..청산도 같은 방법으로 기억하고 싶어요 즉 1번째 진입한 Entryprice 값을 두번째매매까지 기억하고싶고 첫번째 청산된 exitprice 값을 두번째 진입까지 기억하는 방법을 할려주시면 감사하겠습니다.
프로필 이미지
구름달
2021-04-23
1169
글번호 148309
시스템

캣피쉬 님에 의해서 삭제되었습니다.

프로필 이미지
캣피쉬
2021-04-23
0
글번호 148308
시스템
답변완료

수정 의뢰 드립니다!

안녕하세요! 아래는 어제 만들어 주신 지표인데 빠트린 부분이 있어서 제가 직접 한번 만들어 보았는데 데이터가 안불러와지는 걸 확인했습니다. 1. 제가 원하는건 data1 = 콜427 현재가 라고 가정 했을때 data2 = 풋430 현재가 / data3 = 풋427 현재가 / data4 = 풋425 현재가 입니다. 즉, 수식조건은 = (data1 현재가+ data2 현재가 / 2) , (data1 현재가+ data3 현재가 / 2) , (data1 현재가+ data4 현재가 / 2) 이렇게 3종류선 + 시가 + 전일 고가와 저가, 당일 상대등가격의 고가와 저가를 선으로 나타내고 싶습니다. 2. 그리고 챠트에 어제 날짜의 선들도 계속 화면에 나타나서 복잡한데, 당일의 선들만 화면에 표시 되면 매매에 많은 도움이 될것 같습니다! 수정 좀 부탁드립니다! var : cnt(0,Data1); var : v1(0,Data1),v2(0,Data1),v3(0,Data1),v4(0,Data1); var : tl1(0,Data1),tl2(0,Data1),tl3(0,Data1),tl4(0,Data1); var : tx1(0,Data1),tx2(0,Data1),tx3(0,Data1),tx4(0,Data1); #(Data1+Data2)/2; v1 = (Data1(c)+Data2(c))/2; #(Data1+Data3)/2; v2 = (Data1(c)+Data3(c))/2; #(Data1+Data4)/2; v3 = (Data1(c)+Data4(c))/2; #(Data1+Data4)/2; v4 = (Data1(c)+Data5(c))/2; For cnt = 0 to 10 { Text_Delete(tx1[cnt]); Text_Delete(tx2[cnt]); Text_Delete(tx3[cnt]); Text_Delete(tx4[cnt]); TL_Delete(tl1[cnt]); TL_Delete(tl2[cnt]); TL_Delete(tl3[cnt]); TL_Delete(tl4[cnt]); } tx1 = Text_New(NextBarSdate,NextBarStime,v1,NumToStr(v1,2)); tx2 = Text_New(NextBarSdate,NextBarStime,v2,NumToStr(v2,2)); tx3 = Text_New(NextBarSdate,NextBarStime,v3,NumToStr(v3,2)); tx4 = Text_New(NextBarSdate,NextBarStime,v4,NumToStr(v4,2)); tl1 = TL_New(sDate,sTime,v1,NextBarSdate,NextBarStime,v1); tl2 = TL_New(sDate,sTime,v2,NextBarSdate,NextBarStime,v2); tl3 = TL_New(sDate,sTime,v3,NextBarSdate,NextBarStime,v3); tl4 = TL_New(sDate,sTime,v4,NextBarSdate,NextBarStime,v4); TL_SetColor(tl1,BLACK);#콜427+ 풋430/2 TL_SetColor(tl2,BLUE);#콜427+풋427/2 중심가 TL_SetColor(tl3,BLACK);#콜427+풋425/2 TL_SetColor(tl4,BLACK);##콜427+풋432/2 TL_SetExtLeft(TL1,true); TL_SetExtLeft(TL2,true); TL_SetExtLeft(TL3,true); TL_SetExtLeft(TL4,true); TL_SetExtRight(TL1,true); TL_SetExtRight(TL2,true); TL_SetExtRight(TL3,true); TL_SetExtRight(TL4,true); Plot1(DayOpen); plot2(data3(highd(1)));//타종목의 전일 고가 plot3(data3(LowD(1)));//타종목의 전일 저가 Plot4((DayHigh+DayLow)/2); Plot5(DayHigh(1)); Plot6(DayLow(1));
프로필 이미지
qha71
2021-04-23
1194
글번호 148307
지표
답변완료

문의드립니다...

안녕하세요 먼저 화면구성을 말씀드리면 모두 일봉기준 data1(주종목)~data10(참조종목) >> 모두 10종목...더 추가될수도 있음 data1의 진입일1,퇴출일1 을 변수로 놓고 진입일1과 퇴출일1 사이 구간에서만 가격(C)를 지표로 표현하고자합니다. 진입일1이전과 퇴출일1이후는 지표값이 0으로 표현되게요... 이렇게 data2종목에서도 진입일2,퇴출일2.....data3종목에도 똑같이... data10까지.... 그렇게 되면 변수값이 종목수 10개면 20개의 변수값이 생기겠죠. 그 변수마다 진입일과 퇴출일들이 같을수도 다를수도 있을껍니다. 하지만 결국은 진입일과 퇴출일사이에서만 가격을 지표로 표현하고자하면 됩니다 그 이전과 이후는 전부 0으로 표현합니다. 여기서 본격적인 질문 질문 1번 그렇게 10개의 지표값(즉, 각 구간별 종목별 가격)을 총 합계를 1개의 지표로 표현해주세요 질문 2번 1. data1의 지표값 * P1(변수) 2. data2의 지표값 * P2(변수)...... ........................................... 10. data10의 지표값 * P10(변수) P1,P2등의 변수값이 곱해진 10개의 값들을 총합계를 1개의 지표로 표현해주세요 참고로 추가질문 참조종목은 최대 몇개까지 추가할수있나요?
프로필 이미지
9회말2아웃
2021-04-23
1098
글번호 148303
지표
답변완료

수식어 부탁드립니다

input : StartTime(140000),EndTime(055000),xtime(055500); Input : Period(20); Input : 당일수익틱수(120); Var : N1(0),dayPl(0),당일수익(0),Xcond(false); Var : value(0),Tcond(false); if sDate != sDate[1] then SetStopEndofday(xtime); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; SetStopEndofday(0); Xcond = false; N1 = NetProfit; } 당일수익 = PriceScale*당일수익틱수; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] then { if daypl >= 당일수익 Then Xcond = true; if (IsExitName("dbp",1) == true or IsExitName("dsp",1) == true ) then Xcond = true; } value = VR(Period); var1 = ma(C,5); var2 = ma(C,200); If CrossUP(value, 100) and Xcond == False Then { Buy("b"); } If CrossDown(value, 300) and Xcond == False Then { Sell("s"); } if marketposition == 1 then { if isentryname("b") == true and crossdown(var1,var2) then sell("bs"); if crossdown(var2,var3) Then Exitlong("sbx",onclose,def,"sb"); ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); if EntryTime >= 140000 or EntryTime < Endtime Then ExitLong("bpx",AtLimit,EntryPrice+PriceScale*20); } if marketposition == -1 then { if isentryname("s") == true and crossup(var1,var2) then buy("sb"); if crossup(var2,var3) Then ExitShort("bsx",onclose,def,"bs"); ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); if EntryTime >= 140000 or EntryTime < Endtime Then ExitShort("spx",AtLimit,EntryPrice-PriceScale*20); } ------------------------------------------ 아래는 위수식어 하단의 특정시간 매매수익에 관한것 입니다 if marketposition == 1 then { if isentryname("b") == true and crossdown(var1,var2) then sell("bs"); if crossdown(var2,var3) Then Exitlong("sbx",onclose,def,"sb"); ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts)); if EntryTime >= 140000 or EntryTime < Endtime Then ExitLong("bpx",AtLimit,EntryPrice+PriceScale*20); } if marketposition == -1 then { if isentryname("s") == true and crossup(var1,var2) then buy("sb"); if crossup(var2,var3) Then ExitShort("bsx",onclose,def,"bs"); ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); if EntryTime >= 140000 or EntryTime < Endtime Then ExitShort("spx",AtLimit,EntryPrice-PriceScale*20); } 위의 수식어의 시간을 14시부터 19시까지 그리고 수익은 20틱 손실은 20틱으로 변경하고자 합니다
프로필 이미지
푸른
2021-04-23
1079
글번호 148298
시스템
답변완료

시스템 수식으로 자동매매실현 하고자 합니다

안녕하세요 사장님~!!! 오랫만이군요~아래 내용을 만족할 수 있는 수식을 부탁드려요 매수매도 진입시점에서 몇틱수익인지 숫자도 출현시켜 주세요 1.10이평선돌파신호 and 2.macd 기준선 상향돌파 and 3.stochastic 상향돌파 4.이평선이격도 수렴상태에서 신호 발생 시켜주세요 ----------------(수식) 1)매수신호 Crossup(C ,avg(C, Period)) and (StochasticsSlow(Period1,Period2)- eavg(StochasticsSlow(Period1,Period2),Period3))>=0 and (MACD(shortPeriod,longPeriod)-eavg(MACD(shortPeriod,longPeriod),sigPeriod))<=0 2)매도신호 Crossdown(C ,avg(C, Period)) and (StochasticsSlow(Period1,Period2)- eavg(StochasticsSlow(Period1,Period2),Period3))<=0 and (MACD(shortPeriod,longPeriod)-eavg(MACD(shortPeriod,longPeriod),sigPeriod))>=0 여기까지하고 ----이평선 이격도 수렴수식과 진입시 수익틱 숫자표시하는것은 수식을 만들어야 합니다 수고하십시요---항상 감사합니다
프로필 이미지
정밀타격수
2021-04-23
1819
글번호 148297
시스템
답변완료

수정 부탁드립니다.

안녕하세요? 아래 수식에서 두가지를 고치고싶습니다. 1) 진입봉포함 세봉이 연달아서 나올시에만 진입되게 하고싶습니다. 현재 진입수식은 아래와 같습니다. 역배열시, 양양+음봉 매도진입(단,첫번째양봉의 시가와 진입음봉의 종가가 같거나 작은 음봉일시) 정배열시, 음음+양봉 매수진입(단,첫번째음봉의 시가와 진입봉의 종가가 같거나 큰 양봉일시) 근데 양양 나오고 진입음봉과 중간에 다른캔들이 들어가있는 경우가 많습니다. 진입봉포함 세봉이 연달아서 나올시에만 진입되게 하고싶습니다. 2) 진입봉이 간혹 도지일때에도 들어가는경우가 있습니다. 도지는 진입에 제외시키고 싶습니다. 감사합니다. input : P1(5),P2(20); input : 익절틱수(50),손절틱수(50); var1 = ma(C,P1); Var2 = ma(C,P2); if MarketPosition == 0 and var1 > Var2 and C[2] > O[1] and C[1] > O[1] and C < O and C <= O[2] Then Sell(); if MarketPosition == 0 and var1 < Var2 and C[2] < O[1] and C[1] < O[1] and C > O and C >= O[2] Then Buy(); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop);
프로필 이미지
대구어린울프
2021-04-22
1068
글번호 148296
시스템
답변완료

수식 제작 부탁드립니다.

안녕하세요^^ 아래의 조건에 해당하는 수식을 부탁드리고자 합니다. 골든데드크로스 지표에 대한 변형입니다. 이평선 단기선(20), 중기선(60), 장기선(120)을 놓고, <골든크로스 : 매수진입의 경우> 1) 단기선(20)이 장기선(120)을 상향돌파시 매수진입하고 2) 매수유지 하다가 단기선(20)이 중기선(60)을 하향돌파할 경우 청산하고, 3-1) 단기선(20)이 장기선(120)까지 하향돌파시 매도진입합니다. 3-2) 하지만, 단기선(20)이 장기선(120)을 하향돌파 하지 못한 채, 다시 중기선(60)을 상향돌파시 매수재진입합니다. 이 패턴의 반복이며, 매도진입은 역으로 진행합니다. 수식으로 표현 가능할지 모르겠습니다. 꼭 부탁드립니다. 정말 감사합니다.
프로필 이미지
minve
2021-04-22
1189
글번호 148295
사용자 함수
답변완료

수식 의뢰 부탁드립니다.

안녕하세요 1. 아래 수식에서 3연속 손실이 발생할 경우 N분 매매정지를 할 수 있도록 수정 부탁드립니다 2. 그리고 매매가 끝나면 지정한 시간만큼 매매중지되어야 하는데 위 그림처럼 포지션 청산되자마자 다시 진입과 청산이 이루어집니다 항상 감사합니다 input : N(4),익절(0.03),손절(0),진입(10),StartTime(070000),EndTime(070000),매매정지(20),lb(0),lp(2),sb(0),sp(-2); var : LL(0),HH(0),tx1(0),tx2(0),cnt(0),Tx3(0),sum(0),CL(0),CS(0); Array : VV[20](0); var : Tcond(false),S1(0),D1(0),TM(0),b_vv(0),Condition4(False),최고점(0),최저점(0); Condition1 = L[4]>L[3] and L[3] >L[2] and H>H[1] and H[1]>H[2]; Condition2 = H[4]<H[3] and H[3]<H[2] and L<L[1] and L[1]<L[2]; if ( ( var2 == 0 and C > CS and vv[0] == -1 ) or LL == 0 or C > CL ) and condition1 == true and Condition1[1] == False Then { var1 = var1+1; LL = L[2]; CL = C; VV[0] = 1; For cnt = 1 to 19 { VV[cnt] = VV[cnt-1][1]; } if VV[N-1] != 0 Then { sum = 0; For cnt = 0 to N-1 { sum = sum + VV[cnt]; } } } else { if L < LL Then { var1 = 0; } } if (( var1 == 0 and C < CL and vv[0] ==1) or hh == 0 or C < CS) and condition2 == true and Condition2[1] == False Then { var2 = var2+1; HH = H[2]; CS = C; VV[0] = -1; For cnt = 1 to 19 { VV[cnt] = VV[cnt-1][1]; } if VV[N-1] != 0 Then { sum = 0; For cnt = 0 to N-1 { sum = sum + VV[cnt]; } } } Else { if H > HH Then { var2 = 0; } } #전봉과 현재봉의 영업일이 다르면 당일청산조건 if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; Condition4 = False; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; } if TotalTrades > TotalTrades[1] Then { Condition4 = False; if IsExitName("xl",1) == true or IsExitName("xs",1) == true or IsExitName("stopprofittarget",1) == true then Condition4 = true; } b_vv = vv[4]+vv[3]+vv[2]+vv[1]; 최고점 = highest(h,진입); 최저점 = lowest(l,진입); if sTime > starttime or sTime < Endtime and marketposition == 0 Then { if (b_vv == lb and sum == lp) Then { if condition4 == False Then Buy("b"); if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then Buy("b1"); } if (b_vv == sb and sum == sp) Then { if condition4 == False Then Sell("s"); if (condition4 == true and TM >= TM[BarsSinceExit(1)]+매매정지) Then Sell("s1"); } } if MarketPosition(0) > 0 and C < LL Then ExitLong("xl"); if MarketPosition(0) < 0 and C > HH Then ExitShort("xs"); #타겟청산 SetStopProfittarget(익절,pointstop); SetStopLoss( 손절 ,PointStop);
프로필 이미지
산이보리
2021-04-22
995
글번호 148294
시스템