커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

시스템 수식 문의 드립니다.

3분봉 기준으로 오전 10시 종가가 당일 시가보다 크면 매수, 13시 기준 시가보다 크면 홀딩 시가보다 낮으면 손절, 홀딩시 당일 14시 45분에 청산하려고 합니다. 이에 대한 수식을 어떻게 짜면 될까요? 부탁드립니다^^
프로필 이미지
로크네스
2020-12-31
820
글번호 145036
시스템
답변완료

시스템질문

안녕하세요~ <질문1> 아래수식에서 매수 4,5,6의 매수에 있어 매수1,2,3이 한봉에 2개이상 매수되는경우 작동을 안하는것 같은데요 수정부탁드립니다 <질문2> 아래수식에서 매수3가 매수되었을때만 매수4,매수5,매수6이 중복 매수되지 않도록 되어있는데요 매수1, 매수2, 매수3 어떤것이 매수되더라도 매수된값들을 체크하여 최저가로 매수된 가격을 기준으로 매수4, 매수5, 매수6가 순차적으로 매수되도록 변경하고 싶습니다 *매수는 매수조건이 동일가격에서 만족되더라도 항상 중복매수되지 않도록부탁드립니다 감사합니다~ INPUT : 매수(0), 매도조건(1); var : cond(False),LP(0); var1 = ma(C,3); var2 = ma(C,5); var3 = ma(C,10); var4 = ma(C,60); value1 = 0; if value1 == 0 and C < Var4 and CrossDown(c,var3) and cond == False Then { if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then { value1 = 1; Buy("매수3"); } } if value1 == 0 and C < var4 and CrossDown(c,var2) and cond == False Then { if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then { value1 = 1; Buy("매수2"); } } if value1 == 0 and C < Var4 and CrossDown(c,var1) and cond == False Then { if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then { value1 = 1; Buy("매수1"); } } if MarketPosition == 1 Then { if 매수 == 1 Then Cond = true; if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수1" Then { LP = LatestEntryPrice(0); Condition1 = true; } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수2" Then { LP = LatestEntryPrice(0); Condition2 = true; } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수3" Then { LP = LatestEntryPrice(0); Condition3 = true; } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수4" Then { LP = LatestEntryPrice(0); Condition4 = true; } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수5" Then { LP = LatestEntryPrice(0); Condition5 = true; } if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수6" Then { LP = LatestEntryPrice(0); Condition6 = true; } if Condition3 == true Then { if Condition4 == False Then Buy("매수4",AtLimit,LP*0.97); if Condition4 == true and Condition5 == False Then Buy("매수5",AtLimit,LP*0.95); if Condition4 == true and Condition5 == true and Condition6 == False Then Buy("매수6",AtLimit,LP*0.90); } if 매도조건 == 1 Then { ExitLong("bx1",AtLimit,AvgEntryPrice*1.05,"",Floor(MaxContracts*0.2),1); ExitLong("bx2",AtLimit,AvgEntryPrice*1.08,"",Floor(MaxContracts*0.5),1); ExitLong("bx3",AtLimit,AvgEntryPrice*1.10); } if 매도조건 == 2 Then { ExitLong("bx",AtLimit,AvgEntryPrice*1.15); } } Else { Condition1 = False; Condition2 = False; Condition3 = False; }
프로필 이미지
쭈니오빠
2021-01-01
729
글번호 145035
시스템

러블리 님에 의해서 삭제되었습니다.

프로필 이미지
러블리
2020-12-31
170
글번호 145034
시스템
답변완료

수식 문의드립니다.

안녕하세요 항상 많은 도움 감사드리며... 연말을 맞이하여 하나 더 질문 드립니다 ㅠㅠ 일봉차트에서 data2는 주봉, data3은 월봉으로 설정하고, 최근 월봉 거래량이 1000000 이상인 종목이면서 주봉 거래량이 500000 이상인 종목을 검색하는 식 문의드립니다. 참조데이터 사용이 불가능하다면... 일봉 최근 10개봉에서 거래량이 1000000을 넘으면서 거래총액이 10억이 넘는 종목들을 검색하는 식과 시장가 매수식 부탁드립니다. 연말 잘 보내시고~ 새로운 한해 잘 맞이하시길 바래요~!
프로필 이미지
이엘성투
2020-12-31
750
글번호 145033
시스템
답변완료

시스템매매 함수로 부탁드립니다.

아래와 같은 지표수식에서 돌파와 붕괴 지표가 RED로 바뀌고 이평1이 이평2를 돌파할때 매수 돌파와 붕괴 지표가 BLUE로 바뀌고 이평2가 이평1를 돌파할때 매도, 10틱 이익이면 청산, 10틱손실이면 손절할수 있게 수식을 분단위 기준으로 부탁드립니다. var : 이평1(0),이평2(0),t(0); var : hh(0),hd(0),ht(0),hh1(0),hd1(0),ht1(0),고점추세선(0); var : ll(0),ld(0),lt(0),ll1(0),ld1(0),lt1(0),저점추세선(0); 이평1 = ma(C,20); 이평2 = ma(C,60); Plot1(이평1); Plot2(이평2); If crossup(이평1,이평2) Then { t = 1; hh = h; hd = sDate; ht = sTime; hh1 = hh[1]; hd1 = hd[1]; ht1 = ht[1]; if hh1 > 0 Then { TL_SetExtRight(고점추세선,False); 고점추세선 = TL_New(hd1,ht1,hh1,hd,ht,hh); TL_SetColor(고점추세선,RED); TL_SetExtRight(고점추세선,true); } } If crossdown(이평1,이평2) Then { t = -1; ll = l; ld = sDate; lt = sTime; ll1 = ll[1]; ld1 = ld[1]; lt1 = lt[1]; if ll1 > 0 Then { TL_SetExtRight(저점추세선,False); 저점추세선 = TL_New(ld1,lt1,ll1,ld,lt,ll); TL_SetColor(저점추세선,BLUE); TL_SetExtRight(저점추세선,true); } } if t == 1 Then { if h > hh Then { hh = h; hd = sDate; ht = sTime; TL_SetEnd(고점추세선,hd,ht,hh); } } if t == -1 Then { if l < ll Then { ll = l; ld = sDate; lt = sTime; TL_SetEnd(저점추세선,ld,lt,ll); } } If c > TL_GetValue(고점추세선,sDate,sTime) and C[1] < TL_GetValue(고점추세선,sDate[1],sTime[1]) Then { plot3(L-0.5,"돌파",BLUe); } If c > TL_GetValue(저점추세선,sDate,sTime) and C[1] < TL_GetValue(저점추세선,sDate[1],sTime[1]) Then { plot3(L-0.5,"돌파",REd); } If c < TL_GetValue(고점추세선,sDate,sTime) and C[1] > TL_GetValue(고점추세선,sDate[1],sTime[1]) Then { plot4(H+0.5,"붕괴",BLUe); } If c < TL_GetValue(저점추세선,sDate,sTime) and C[1] > TL_GetValue(저점추세선,sDate[1],sTime[1]) Then { plot4(H+0.5,"붕괴",REd); }
프로필 이미지
미완
2020-12-30
842
글번호 145032
시스템
답변완료

아래 70458 재질문 답변 부탁드립니다 (내용 무)

.
프로필 이미지
골드드래곤
2020-12-30
772
글번호 145031
지표
답변완료

수식 문의

안녕하세요? 수식 정정 부탁 드립니다. 감사드리며, 멋진 2021 되길 기원합니다.
프로필 이미지
에구머니
2021-01-04
779
글번호 145030
시스템
답변완료

오류수정 부탁드립니다. 감사합니다.

Inputs: Length(NumericSimple),TargetUpLevel(NumericSimple),TargetDnLevel(NumericSimple), NxtYn(NumericSimple), // 다음 봉의 값을 구하려면 1을 아니면 0을 넣어준다. oUpBand(NumericRef), // 주소전달방식임을 선언 oDnBand(NumericRef), // 값을 입력받는게 아니라 여기에 결과값을 채워서 반환한다. oMidLine(NumericRef); // 변수명 앞에 소문자를 o를 붙인 것은 output 변수입을 나타냅니다. Variables: Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0),MidLevel(0); If CurrentBar == 1 AND Length > 0 Then Begin UpSum = 0; DownSum = 0; For Counter = 0 To Length - 1 Begin UpAmt = C[Counter] - C[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; End; UpAvg = UpSum / Length; DownAvg = DownSum / Length; End Else If CurrentBar > 1 AND Length > 0 Then Begin UpAmt = C[0] - C[1]; If UpAmt >= 0 Then DownAmt = 0; Else Begin DownAmt = -UpAmt; UpAmt = 0; End; UpAvg = (UpAvg[1] * (Length - 1) + UpAmt) / Length; DownAvg = (DownAvg[1] * (Length - 1) + DownAmt) / Length; End; If UpAvg + DownAvg <> 0 Then Value1 = 100 * UpAvg / (UpAvg + DownAvg); Else Value1 = 0; If nxtYn == 1 Then // 다음 봉 여부가 1일 경우 { If Value1 > TargetUpLevel Then // 상단밴드 oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg) - UpAvg) * (Length - 1) + C; If Value1 > TargetDnLevel Then // 하단밴드 oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg) - UpAvg) * (Length - 1) + C; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; // 중간라인 If Value1 > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg) + DownAvg) * (Length - 1) + C; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg) - UpAvg) * (Length - 1) + C; } Else // 다음 봉 여부가 0인 경우 { If Value1[1] > TargetUpLevel Then oUpBand = (((TargetUpLevel - 100) / TargetUpLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oUpBand = ((TargetUpLevel / (100 - TargetUpLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; If Value1[1] > TargetDnLevel Then oDnBand = (((TargetDnLevel - 100) / TargetDnLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oDnBand = ((TargetDnLevel / (100 - TargetDnLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; MidLevel = (TargetUpLevel + TargetDnLevel) / 2; If Value1[1] > MidLevel Then oMidLine = (((MidLevel - 100) / MidLevel * UpAvg[1]) + DownAvg[1]) * (Length - 1) + C[1]; Else oMidline = ((MidLevel / (100 - MidLevel) * DownAvg[1]) - UpAvg[1]) * (Length - 1) + C[1]; } RSI_BAND = 1; //사용자함수는 반환값이 있어야 한다고 했습니다. // oUpBand, oDnBand, oMidLine 는 메모리 주소이지 반환값이 아닙니다. // 그래서 마지막에 아무 값이나 넘겨 줘야 하기 때문에 그냥 1을 넣어 줬습니다.
프로필 이미지
매버릭
2020-12-30
953
글번호 145029
사용자 함수

골드드래곤 님에 의해서 삭제되었습니다.

프로필 이미지
골드드래곤
2020-12-30
1
글번호 145028
지표