커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템식 수정 부탁드립니다.

아래 시스템식에서 다음과 같이 진입횟수와 손절라인을 추가시킬려고 합니다. 1. 진입횟수 추가 input : 전략식진입횟수(1); ## 진입횟수 추가시켜 시스템식 부탁드립니다. 2. 손절라인에서 매수수량 전체 매도하는 시스템식 추가 1) 외부변수설정을 다음과 같이 하고 input : 최종손절위치(4); ## 외부변수 설정 2) value = abs(var1-V0.5); 일때 var1-value*(최종손절위치+1) 에서 매수한 총물량을 손절하고 차트에 "최종손절"로 표시해 주시면 감사하겠습니다. ---------------------------------------------------------------------------------------- input : 전략식시작일자(20151001), 전략식시작시간(090000), 전략총매수금액(100); # 금액은 만원단위 input : 매수위치1차(1), 매수위치2차(2), 매수위치3차(3); input : 매도위치1차(1.5), 매도위치2차(2), 매도위치3차(2.5); input : 매수비중1차(0), 매수비중2차(50), 매수비중3차(50); input : 매도비중1차(20), 매도비중2차(30), 매도비중3차(50); input : Period(384); var : CL(0),V0.5(0),V1(0),V2(0),V3(0); var : mid(0),V4(0),V5(0),V6(0),V7(0); var : diff(0),TF(0),cnt(0),value(0); Array : HH[400](0),LL[499](0); TF = TimeToMinutes(stime)%15; if date != date[1] or (date == date and TF < TF[1]) Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 399{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; if HH[Period] > 0 Then{ var1 = HH[0]; var2 = LL[0]; var11 = HH[1]; var12 = LL[1]; for cnt = 0 to Period-1{ if HH[cnt] > var1 Then var1 = HH[cnt]; if HH[cnt+1] > var11 Then var11 = HH[cnt+1]; if LL[cnt] < var2 Then var2 = LL[cnt]; if LL[cnt+1] < var21 Then var21 = LL[cnt+1]; } if var11 < var1 Then CL = (var1+var2)/2; V0.5 = var1-((var1-CL)/5)*1; V1 = var1-((var1-CL)/5)*2; ## 1매수타점 V2 = var1-((var1-CL)/5)*3; ## 2매수타점 V3 = var1-((var1-CL)/5)*4; ## 3매수타점 mid = (var1+var2)/2; V4 = var1-((var1-CL)/5)*5; V5 = var1-((var1-CL)/5)*6; V6 = var1-((var1-CL)/5)*7; V7 = var1-((var1-CL)/5)*8; value = abs(var1-V0.5); if sdate >= 전략식시작일자 then{ if MarketPosition == 0 and stime >= 전략식시작시간 and ((stime < 120000 and O > C[1]*0.985) or (stime >= 120000 and C > V2)) Then{ if NextBarOpen > var1-value*(매수위치1차+1) Then buy("1차매수",atlimit,var1-value*(매수위치1차+1),Floor((전략총매수금액*10000*(매수비중1차/100))/C)); Else buy("1차매수.",AtMarket,def,Floor((전략총매수금액*10000*(매수비중1차/100))/C)); } if MarketPosition == 1 then{ diff = abs(var1[BarsSinceEntry]-V0.5[BarsSinceEntry]); if MaxEntries == 1 and L >= var1-value*(매수위치2차+1) and CurrentContracts == MaxContracts Then buy("2차매수",atlimit,var1-value*(매수위치2차+1),Floor((전략총매수금액*10000*(매수비중2차/100))/C)); if MaxEntries == 2 and L >= var1-value*(매수위치3차+1) and CurrentContracts == MaxContracts Then buy("3차매수",atlimit,var1-value*(매수위치3차+1),Floor((전략총매수금액*10000*(매수비중3차/100))/C)); if LatestExitName(0) == "1차매도" Then Condition1 = true; if LatestExitName(0) == "2차매도" Then Condition2 = true; if LatestExitName(0) == "3차매도" Then Condition3 = true; if Condition1 == false then exitlong("1차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치1차,"",Floor(MaxContracts*(매도비중1차/100)),1); if Condition2 == false then exitlong("2차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치2차,"",Floor(MaxContracts*(매도비중2차/100)),1); if Condition3 == false then exitlong("3차매도",atlimit,lowest(L,BarsSinceEntry)+diff*매도위치3차); } Else{ Condition1 = false; Condition2 = false; Condition3 = false; } } }
프로필 이미지
종풍화성
2015-10-10
141
글번호 91102
시스템
답변완료

함수수정요청(합성11-1호 변형)

안녕하세요? 매번 감사드립니다. 아래의 함수를 수정 요청드립니다. 각 번호로 4개의 함수입니다. 1. 아래의 시스템에서 매도청산이 손절일 때, 손절 이후의 5번째 봉의 종가가 손절값보다 낮으면 신규매도 매수청산이 손절일 때, 손절 이후 5번째 봉의 종가가 손절값보다 높으면 신규매수 2. 1번 요청식에서 청산이 손절뿐만이 아니라 익절도 포함입니다. 즉, 아래의 시스템에서 매도청산 이후 5번째 봉의 종가가 청산값보다 낮으면 신규매도 매수청산 이후 5번째 봉의 종가가 청산값보다 높으면 신규매수 3. 1번식에서 추가 신규진입 후 5번째 이후 봉 종가에 강제청산입니다. 4. 2번식에서 추가 신규진입 후 5번째 이후 봉 종가에 강제청산입니다. var : entry1(0); var : ho1(0),OL1(0),HL1(0); var : maho1(0),maOL1(0),maHL1(0); var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0); var : EntryCnt1(0); var : V1(0),V2(0),V3(0),V4(0),V5(0); var : V6(0),V7(0),V8(0),V9(0),V10(0); if bdate != bdate[1] Then entry1 = 0; if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry1 = entry1+1; ho1 = Dayhigh-Dayopen; OL1 = DayOpen-DayLow; HL1 = DayHigh-DayLow; sumho1 = 0; sumOL1 = 0; sumHL1 = 0; for cnt1 = 1 to 10{ sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1)); sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1)); sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1)); } maho1 = sumho1/10; maOL1 = sumOL1/10; maHL1 = sumHL1/10; V1 = V2 = V3 = V4 = V5 = V6 = V7 = V8 = V9 = V10 = if MarketPosition == 0 and entry1 == 0 Then{ if V7 > V8 Then sell("s1",AtStop,V7-0.02); if V7 < V8 Then sell("s2",Atlimit,V8-0.02); } if MarketPosition == -1 and IsEntryName("s1") == true Then{ ExitShort("sp1",atlimit,V9-0.03); ExitShort("sl1",AtStop,V6); } if MarketPosition == -1 and IsEntryName("s2") == true Then{ ExitShort("sp2",atlimit,V9-0.03); ExitShort("sl2",AtStop,V6); } var : TF(0); var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0); var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0); Array : HH[50](0),LL[50](0),CC[50](0); mav1 = ma(c,5); mav2 = ma(C,20); TF = TimeToMinutes(stime)%30; if Bdate != Bdate[1] Then{ Etime = true; if stime >= 090000 Then Xtime = 050000; Else Xtime = 060000; } if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{ HH[0] = H; LL[0] = L; for cnt = 1 to 49{ HH[cnt] = HH[cnt-1][1]; LL[cnt] = LL[cnt-1][1]; CC[cnt] = CC[cnt-1][1]; } } if H > HH[0] Then HH[0] = H; if L < LL[0] Then LL[0] = L; CC[0] = C; if HH[25+2] > 0 Then{ HV = HH[0]; LV = LL[0]; HV1 = HH[1]; LV1 = LL[1]; HV2 = HH[2]; LV2 = LL[2]; for cnt = 0 to 25{ if HH[cnt] > HV Then HV = HH[cnt]; if LL[cnt] < LV Then LV = LL[cnt]; if HH[cnt+1] > HV Then HV = HH[cnt+1]; if LL[cnt+1] < LV Then LV = LL[cnt+1]; if HH[cnt+2] > HV Then HV = HH[cnt+2]; if LL[cnt+2] < LV Then LV = LL[cnt+2]; } var1 = (HV+LV)/2; var2 = (HV1+LV1)/2; var3 = (HV2+LV2)/2; if Etime == true then{ if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then buy("b",AtMarket); if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then ExitLong("bx",AtMarket); } } if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{ Etime = false; ExitLong(); }
프로필 이미지
통큰베팅
2015-10-10
153
글번호 91101
시스템
답변완료

표시가 이상합니다.

수식에서 뭐가 문제인지 모르겠어요... 1. 외부변수로 배열크기 조정이 가능한가요> 2. A_mid의 plot3 값이 이상한데요...각 봉의 중심값을 나타내고 싶습니다. Input : Period1(20), Period2(60), Period3(120); Var : count(0), mid(0); Arrays : A_high[20](0), A_mid[20](0), A_low[20](0), B_high[60](0), B_mid[60](0), B_low[60](0), C_high[120](0), C_mid[120](0), C_low[120](0); If DayIndex == 0 Then { A_high[0] = H; For count = 1 to Period1-1 { A_high[count] = A_high[count-1]; } A_low[0] = L; For count = 1 to Period1-1 { A_low[count] = A_low[count-1]; } } mid = A_low[0] + (A_high[0]-A_low[0])/2; A_mid[0] = mid; For count = 1 to Period1-1 { A_mid[count] = A_mid[count-1]; } If H <> A_high[0] Then A_high[0] = H; Plot1(A_high[0]); If L <> A_low[0] Then A_low[0] = L; Plot2(A_low[0]); A_mid[0] = mid; Plot3(A_mid[0]);
프로필 이미지
파파
2015-10-10
142
글번호 91100
지표
답변완료

수익차트

다음의 지표식을 부탁합니다. 현재의 전략실행차트에 적용 가능한 plot1(var1,"기간별누적수익"); plot2(var2,"기간별누적최고수익"); plot3(var3,"기간별누적최고수익 * 60% "); 의 지표식을 부탁드립니다. # 전략실행차트에서 사용자가 진입 일 이후의 기간별누적수익을 선택적으로 활용 할 수 있도록 위 지표식의 외부변수에는 진입일자를 사용 해 주시고 지표의 수익단위는 pt 로 부탁 드리겠습니다.
프로필 이미지
너무조아
2015-10-10
166
글번호 91099
지표
답변완료

수식 부탁합니다

1. 60/120/240 이평선 상승 60/120/240 이평선 모두 전봉 대비 상승을 A라고 정하고,A의 경우 10봉 이내 한번 이하 발생한 후 나타나는 첫 번째 스토캐스틱 골든크로스 지표식 2. 60/120/240 이평선 하락 60/120/240 이평선 모두 전봉 대비 하락을 B라고 정하고,B의 경우 10봉 이내 한번 이하 발생한 후 나타나는 첫 번째 스토캐스틱 데드크로스 지표식
프로필 이미지
미래테크
2015-10-09
139
글번호 91098
지표
답변완료

질문드립니다

주식입니다. 1. 당일 시가(동시호가)가 -10% ~ +10% 일때 장개시하자마자 시장가 매수 2. 매수가보다 1% 상승하면 시장가로 40% 매도 이후 매수가대비 2% 상승 또는 매수가까지 하락하면 30% 시장가 매도 이후 매수가대비 3% 상승 또는 매수가에서 1% 하락하면 30% 시장가 매도 매수가보다 1% 하락하면 시장가로 40% 매도 이후 매수가대비 2%하락 또는 매수가까지 상승하면 30% 시장가 매도 이후 매수가대비 3%하락 또는 매수가대비 1%상승하면 30% 시장가 매도 3. 설정한 금액(100만원) 이내로 매수. 예를 들어 100만원 설정이면 1000원짜리 1000주 2000원이면 500주 3000원이면 333주... 1. 2. 3. 조건의 수식부탁드립니다 4. Sell과 exitlong의 차이가 뭔지 궁금합니다 현재 예스랭귀지에서 발생한 신호로 매수매도를 걸고 있는데 예스스팟에서 모두 처리가 가능한지 궁금합니다. 가능하다면 예스스팟으로 정리해주시면 감사하겠습니다. 예스스팟 function Main_OnRcvItemList(aItemList, nCount) { // 확장챠트의 생성과 적용될 시스템의 세부 설정 var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1,// 거래수량 123456789, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 20); // 최대진입횟수 //확장 챠트는 최대 25개까지만 가능 for (var i = 0; i < Math.min(nCount,25); i++) { //생성할 차트 셋팅 var ChartSet = new ReqChartItem(aItemList[i], 5, CHART_PERIOD_MINUTE, 5000,CHART_REQCOUNT_BAR,false, false); //차트에 적용할 시스템명 및 설정 var SystemSet = new SystemInfo(시스템명,YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(ChartSet,SystemSet); } } 예스랭귀지 # 매수/매도청산 If Then { Buy(); } # 매도/매수청산 If Then { sell(); } 사용한지 몇일 안되어 바로 쓸수 있는 수식 부탁드립니다 감사합니다
프로필 이미지
가이츠
2015-10-12
327
글번호 91097
시스템
답변완료

부탁드립니다

수고하십니다 (255.00,252.50,250.00,247.50,245.00,242.50,240.00,237.50)선의 가격기입과 수평선 긋는 수식부탁드립니다 *(가격기입은 오른쪽끝 수평선위에기입 부탁드립니다)
프로필 이미지
파생돌이
2015-10-09
158
글번호 91096
지표
답변완료

추세선 질문입니다.

수고많으십니다. TL_GetExtRight(TL_ID) 함수의 실제 사용 예제를 부탁드립니다. 메뉴얼만 보고는 잘 모르겠네요... 감사합니다.
프로필 이미지
파파
2015-10-09
231
글번호 91095
지표
답변완료

시스템 문의 합니다

안녕하세요 주식 시스템 좀 문의하려고 합니다 첫번째는 5분봉 차트에서 매수방법은 당일 상승출발하여 고점을 찍고 하락하다가 다시 고점을 재돌파 할때 매수 손절방법은 매수가 대비 2% 하락시 손절 청산방법은 수익이 발생하면 최고 수익의 50%하락시 매도 총 수익의 50% 이상 유지시 홀딩(이부분은 안되면 넘어가셔도 됩니다^^ 된다면 수익 5% 이상 발생시 적용) 이거 시스템으로 가능할까요? 2번째 시스템은 위와 내용은 같고 차트만 틱차트 120에서 수식을 알고 싶습니다
프로필 이미지
허큘레스
2015-10-09
165
글번호 91094
시스템