커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

문의 드립니다.

매수 조건 당일 시가를 기준으로 주가가 시가 위에 있고 MACD오실레이터 12 26 9가 0선 아래서 위로 돌파 시 매수 진입 청산은 오실레이터 막대가 전 막대보다 짧아지면 매도 청산하고 손절은 0선 아래로 돌파 시 매도 청산완료 매도 조건 당일 시가를 기준으로 주가가 시가 아래에 있고 MACD오실레이터 12 26 9가 0선 위에서 아래로 돌파 시 매도 진입 청산은 오실레이터 막대가 전 막대보다 길어지면 매수 청산하고 손절은 0선 위로 돌파 시 매수 청산완료 부탁드립니다.
프로필 이미지
선물대장
2022-03-22
847
글번호 157375
시스템
답변완료

수식 문의 드립니다.

질문번호 76457 관련입나다. 아래 수식을 적용하여 보니 지그재그챠트 고점에서 가격과 진폭(고저차)수치가 캔들과 겹쳐 잘 안보여서 캔들 고점위에서 가격은 안보이게 하고 진폭(고저차)수치만 보이게 하는 수식을 부탁드립니다. . nput:length(12),글자크기(20); Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0), Text1(0),처리구분(""); Array:고점[10,2](0),저점[10,2](0); //가격,위치 처리구분 = ""; If Highest(H,length) == H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal <> L Then { If 저점[1,1] > L Then 처리구분 = "저점처리"; If 고점[1,1] < H Then 처리구분 = "고점처리"; } Else If Highest(H,length) == H and lastHiVal <> H Then 처리구분 = "고점처리"; Else If Lowest(L,length) == L and lastLoVal <> L Then 처리구분 = "저점처리"; If 처리구분 == "고점처리" Then { lastHiVal = H; If 고점[1,2] < 저점[1,2] Then { For j = 10 DownTo 2 { 고점[j,1] = 고점[j-1,1]; 고점[j,2] = 고점[j-1,2]; } } If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then { 고점[1,1] = H; 고점[1,2] = Index; sBar = Index - 저점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1], sDate[eBar],sTime[eBar],고점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2) +NewLine+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 3, 3); Text_SetSize(text1,글자크기); } } If 처리구분 == "저점처리" Then { lastLoVal = L; If 저점[1,2] < 고점[1,2] then { For j = 10 DownTo 2 { 저점[j,1] = 저점[j-1,1]; 저점[j,2] = 저점[j-1,2]; } } If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then { 저점[1,1] = L; 저점[1,2] = Index; sBar = Index - 고점[1,2]; eBar = 0; If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then { TL_Delete(TL1); Text_Delete(Text1); } TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1], sDate[eBar],sTime[eBar],저점[1,1]); Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2) +NewLine+NumToStr((고점[1,1]-저점[1,1]),2)); Text_SetStyle(Text1, 3, 3); Text_SetSize(text1,글자크기); } } TL_SetSize(TL1,3); TL_SetColor(TL1,lgreen);
프로필 이미지
한림
2022-03-22
923
글번호 157374
지표
답변완료

알람 선을 마우스로 조정할 수 있는 지 여쭙니다

반갑습니다. 전문가 님. 현재 예스 트레이더 차트에 조악하게 자작한 알람을 사용하고 있는데요 숫자를 일일이 입력해 알람 선을 조정하는 방식이라 다소 번거롭습니다. 그냥 차트에서 알람 선을 마우스로 드래그(끌기)해서 위 아래로 조정할 수 있는지, 조정할 수 있다면 어떻게 해야 하는 지 궁금합니다. 미리 감사하다는 말 드리고 싶습니다.
프로필 이미지
buja
2022-03-22
917
글번호 157373
지표
답변완료

수식 문의 드립니다.

안녕하세요 키움 수식입니다. 예스스팟으로 변환 한번 해보려고 하는데 아직 실력이 없어서 변환이 무리 인것 같아 도움요청 드립니다. 볼린저 상하단 돌파시 매수 매도 1차 진입 하고 Ntick 떨어지거나 오를경우 하나더 진입하는 수식입니다. 2차 진입 후 더 떨어지거나 오를 경우 추가로 3차진입을 하나 더 변수로 추가 하고 싶습니다. 더불어 주문수량을 2개이든 3개이든 변수로 넣고 싶습니다. 바쁘시겠지만 수식 작성 부탁드립니다. 감사합니다. // 매수진입 [BuyA : Bolinger Band[20,2] 저가<=하한밴드, ] [IOG = True] param : BuyA_Leng(20) // 이동평균기간 , BuyA_DV(2) // 표준편차 , BuyA_ChoiceType(2) // 상한, 중간, 하한밴드 선택 , BB_Back(0) , Ntick(100) ; Var : TickSize( 0 ); TickSize = OneTick * PriceScale; // 호가 단위 if MarketPosition > 0 And c < EntryPrice - TickSize * Ntick And EntryPrice>0 Then Buy("B2"); if MarketPosition < 0 And c > EntryPrice + TickSize * Ntick And EntryPrice>0 Then Sell("S2"); var : BuyA_PriceVar(0), BuyA_Price1(0), BuyA_Price2(0), BuyA_Price3(0), BuyA_V3(0), BuyA_Result(FALSE); BuyA_PriceVar = (High+Low+Open)/3; BuyA_Price1 = BollBandUpUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV); BuyA_Price2 = SMA(BuyA_PriceVar, BuyA_Leng); BuyA_Price3 = BollBandDownUser(BuyA_PriceVar, BuyA_Leng, BuyA_DV); If BuyA_ChoiceType = 0 Then // 상한밴드 선택 Begin BuyA_V3 = BuyA_Price1; End Else If BuyA_ChoiceType = 1 Then // 중간밴드 선택 Begin BuyA_V3 = BuyA_Price2; End Else // 하한밴드 선택 Begin BuyA_V3 = BuyA_Price3; End; BuyA_Result = FALSE; IF C <= BuyA_V3 Then BuyA_Result = TRUE; if ( BuyA_Result[BB_Back] ) And !IsEntryName("B1") Then Begin Buy("B1"); End; ///////////////////////////////////////////////////////////////////////////// // 매도진입 [SellA : Bolinger Band[20,2] 고가>=상한밴드, ] [IOG = True] param : SellA_Leng(20) // 이동평균기간 , SellA_DV(2) // 표준편차 , SellA_ChoiceType(0) // 상한, 중간, 하한밴드 선택 ; var : SellA_PriceVar(0), SellA_Price1(0), SellA_Price2(0), SellA_Price3(0), SellA_V3(0), SellA_Result(FALSE); SellA_PriceVar = (High+Low+Open)/3; SellA_Price1 = BollBandUpUser(SellA_PriceVar, SellA_Leng, SellA_DV); SellA_Price2 = SMA(SellA_PriceVar, SellA_Leng); SellA_Price3 = BollBandDownUser(SellA_PriceVar, SellA_Leng, SellA_DV); If SellA_ChoiceType = 0 Then // 상한밴드 선택 Begin SellA_V3 = SellA_Price1; End Else If SellA_ChoiceType = 1 Then // 중간밴드 선택 Begin SellA_V3 = SellA_Price2; End Else // 하한밴드 선택 Begin SellA_V3 = SellA_Price3; End; SellA_Result = FALSE; IF C >= SellA_V3 Then SellA_Result = TRUE; if ( SellA_Result[BB_Back] ) And !IsEntryName("S1") Then Begin Sell("S1"); End;
프로필 이미지
hong0848
2022-03-22
1284
글번호 157367
시스템
답변완료

재문의드립니다.

식이 복잡하므로 조금씩 부탁드립니다. 차트에 3분봉을 띄우고 3분봉으로 매수매도를 합니다. 3분봉에서 기준선을 2개 만드는데요. 일봉기준으로 기준선을 만듭니다. 일봉에서 가장 최근에 음봉이 발생하면 이 때의 최근 음봉을 음봉1 이라 하고 종가를 b 라 하고 가장 최근 음봉 보다 이전에 발생한 음봉들을 관찰하고 최근 음봉 종가 b < 이전에 발생한 음봉2의 종가 동시에 최근 음봉 시가 < 이전에 발생한 음봉2의 시가 를 만족하는 이전의 음봉2을 찾는 것입니다 . 그 음봉을 찾았으면 대음봉을 만드는데요. 종가는 당연히 최근 음봉 종가 b 가 되고요 시가는 음봉2의 시가가 대음봉 시가가 됩니다. 이렇게 대음봉 몸통이 만들어 졌으면 몸통의 1/2 즉 몸통의 절반가격을 대음봉 기준선B 라고 합니다 기준선 B 까지 수식을 부탁드립니다. 제가 일봉과 분봉을 결합시키는 것을 모르겠어요. 수고에 감사드립니다.
프로필 이미지
종호
2022-03-22
972
글번호 157366
시스템

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2022-03-23
141
글번호 157365
시스템
답변완료

76429 글 다시 확인 좀 요청 드립니다.

* 전일 해주신 수식 작성했으나 별표가 안 찍힙니다. 아래 내용 문법에 맞는지 확인 좀 부탁 드립니다. ##매수통합 Condition1 = CrossUp(var55-0.6, mid ) ; Condition2 = CrossUp(var55-0.6, Lmav) and c > ma(L,5) ; Condition3 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) and value17 < -20 ; Condition4 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*14) AND value8 < -0.001 ; Condition5 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) ; Condition6 = CrossUp(LRLv1 - PriceScale*23 ,var93 - PriceScale*16) AND L < MA(C,230) and value17 < -28 ; Condition7 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*11) AND StoD2<30 AND LRLv92-PriceScale*23 > LRLv91-PriceScale*23 AND StoD4 < 30 AND Value65 > -0.008 ; Condition8 = CrossUp(LRLv - PriceScale*20 ,var81 - PriceScale*14) AND value8 < -0.001 and value17 < -28 ; if //dayindex() >= 2 and CountIf(Condition1==true,bw) >= 1 and CountIf(Condition2==true,bw) >= 1 and CountIf(Condition3==true,bw) >= 1 and CountIf(Condition4==true,bw) >= 1 and CountIf(Condition5==true,bw) >= 1 and CountIf(Condition6==true,bw) >= 1 and CountIf(Condition7==true,bw) >= 1 and CountIf(Condition8==true,bw) >= 1 and (Condition1 == true or Condition2 == true or Condition3 == true or Condition4 == true or Condition5 == true or Condition6 == true or Condition7 == true or Condition8 == true ) Then {Tx03 = Text_New(sdate,stime,MA(L,5)-3.0 ,"★"); Text_SetStyle(Tx03,2,2); Text_SetColor(Tx03, RGB(0,50,200) ); Text_SetSize(Tx03,26); } * 항상 고맙습니다. 수고하십시요.
프로필 이미지
요타
2022-03-22
902
글번호 157364
강조
답변완료

수식 수정 부탁드립니다.

페어트레이딩 관련 수식인데요, 예스랭귀지 편집기에서 검증을 해보니 수많은 오류가 뜨네요 오류가 뜨는 부분 수정 부탁드립니다. 수식은 아래와 같습니다. 감사합니다. ---아 래---- //===♠페어트레이딩_ INPUT : ※수량이음수이면_매도(0); INPUT : 진입_일자(20190325), 진입_시간(193000); INPUT : D1_진입가(2808.25), D2_진입가(25553); INPUT : D1_수량(1), D2_수량(-1.4); // 실재 매매시는 2개와 3개 INPUT : ※_수수료는_편도(5); INPUT : D1_수수료(5), D2_수수료(5), 환율(1180); INPUT : 손익원화환산1(1); // 달러 표시 손익일 경우 환산 여부 지정 INPUT : 손익_상단(1572), 손익_하단(-1914); //=== 변수 선언 === var : D1현재가(0), D2현재가(0); //=== 현재가 지정 === D1현재가 = Data1(c); D2현재가 = Data2(c); //=== 틱단위와 틱가치 대입 === var : D1틱단위(0), D1틱가치(0); var : D2틱단위(0), D2틱가치(0); D1틱단위 = data1(PriceScale); D2틱단위 = data2(PriceScale); D1틱가치 = data1(PointValue); D2틱가치 = data2(PointValue); //=== 손익 산출 === var : D1손익(0), D2손익(0), 손익소계(0), 순손익(0); var : D1수수료(0), D2수수료(0), 수수료소계(0); //==== _손익 산출 D1손익 = ((D1현재가 - D1_진입가) / D1틱단위 * D1틱가치 * D1_수량); D2손익 = ((D2현재가 - D2_진입가) / D2틱단위 * D2틱가치 * D2_수량); 손익소계 = D1손익 + D2손익; D1수수료 = abs(D1_수량 * D1_수수료 * 2); //왕복 D2수수료 = abs(D2_수량 * D2_수수료 * 2); 수수료소계 = D1수수료 + D2수수료; 순손익 = 손익소계 - 수수료소계; //===원화 환산. 금액 단위 천원 iF 손익원화환산1 == 1 Then 순손익 = (순손익 * 환율) / 1000; //===== 손익 이평선 ===== Input : 소이평값(5), 중이평값(20), 대이평값(60); var : 소이평(0), 중이평(0), 대이평(0); 소이평 = ma(순손익, 소이평값); 중이평 = ma(순손익, 중이평값); 대이평 = ma(순손익, 대이평값); //=== 손익의 10 구간 계산 var : 중간선(0), 십등분(0); var : 이부선(0), 사부선(0), 육부선(0), 팔부선(0), 방향색(0); 중간선 = (손익_상단 + 손익_하단) / 2; 십등분 = (손익_상단 - 손익_하단) / 10; 이부선 = 손익_하단 + 십등분*2; 사부선 = 손익_하단 + 십등분*4; 육부선 = 손익_하단 + 십등분*6; 팔부선 = 손익_하단 + 십등분*8; //==== 방향표시바 색지정 if 순손익 >= 손익_상단 then 방향색 = RGB(0, 0, 217); // 진청 if 순손익 < 손익_상단 and 순손익 >= 팔부선 then 방향색 = RGB(0, 128, 255); // 연청 if 순손익 < 팔부선 and 순손익 >= 육부선 then 방향색 = RGB(0, 230, 230); //하늘색 if 순손익 < 육부선 and 순손익 >= 사부선 then 방향색 = RGB(0, 204, 0); //녹색 if 순손익 < 사부선 and 순손익 >= 이부선 then 방향색 = RGB(255, 128, 0); //주황 if 순손익 < 이부선 and 순손익 >= 손익_하단 then 방향색 = RGB(255, 128, 192); //연핑크 if 순손익 < 손익_하단 then 방향색 = RGB(255, 0, 255); //진핑크 //========지표의 출력 ============== //--지정일 지정시간 이후 지표 출력을 위한 것 if Condition1 == false and sDate >= 진입_일자 and sTime >= 진입_시간 Then Condition1 = true; if Condition1 == true Then { plot13(순손익, "순손익"); plot16(소이평, "소이평"); plot17(중이평, "중이평"); plot18(대이평, "대이평"); } //==== 손익 상단 하단 출력 및 음성 안내 ========= Input : 음성안내ON1(1); If 손익_상단 <= 순손익 Then { plot21(손익_상단, "손익_상단선"); If 음성안내ON1 == 1 Then playsound("C:₩____Mysound₩11₩풀룻Flute.WAV"); } If 손익_하단 >= 순손익 Then { plot22(손익_하단, "손익_하단선"); If 음성안내ON1 == 1 Then playsound("C:₩____Mysound₩11₩풀룻Flute.WAV"); } if 순손익 >= 이부선 and 순손익 <= 사부선 Then plot23(중간선, "중간선"); //==== 방향바 출력 ======= plot24(0, "■방향바", 방향색); /* //==== 데이터 검증영역 ===== plot41(D1손익, "D1 손익"); plot42(D2손익, "D2 손익"); plot43(손익소계, "손익소계"); plot44(수수료소계, "수수료합계"); Plot51(D1틱단위, "D1틱단위"); Plot52(D1틱가치, "D1틱가치"); Plot53(D2틱단위, "D2틱단위"); Plot54(D2틱가치, "D2틱가치"); Plot61(D1_진입가, "●D1진입가"); Plot62(D2_진입가, "○D2진입가"); Plot63(D1_수량, "■D1수량"); Plot64(D2_수량, "□D2수량"); Plot65(D1_수수료, "▲D1_수수료"); Plot66(D2_수수료, "△D2_수수료"); plot67(손익_상단, "@@손익_상단"); plot68(손익_하단, "@@손익_하단");
프로필 이미지
브루펜
2022-03-22
1083
글번호 157363
사용자 함수
답변완료

함수

안녕하세요 가령 5일선 기준으로 max(SmaLL1, SmaHH1) min(SmaLL1, SmaHH1) 에서 max와 min는 무슨차이인가요? 수고하세요
프로필 이미지
달마7
2022-03-22
1067
글번호 157362
사용자 함수