커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

수식 좀 가르쳐 주세요ㅠㅠ

60일 신고가 이면서 후행스팬이 볼린저 밴드(20.2) 상단 돌파 수식이 알고 싶습니다!!! 부탁 드려요~~~
프로필 이미지
별을쏘다
2021-03-03
939
글번호 146759
검색
답변완료

함수변환 요청

안녕하세요? 아래 전략은 시그널메이커로 작성된 스크립트입니다. NH증권에서 사용할 수 있도록 함수 변환 요청드립니다. 감사합니다. ---------------------------------------------------------------------------------------- //매수: 당일의 시가가 상승 출발하면 (1분봉 완성 후 2분봉 시가 진입) If DayClose(1) < DayOpen(0) Then Buy("B", AtMarket); //매도: 당일의 시가가 하락 출발하면 (1분봉 완성 후 2분봉 시가 진입) If DayClose(1) > DayOpen(0) Then Sell("S", AtMarket); //목표치 청산: 전일의 시가와 당일의 시가를 차이만큼 수익실현 (장중 목표치값이 완성되고 익봉 시가 청산) var : oPrice(0), cnt(0); cnt = DayOpen(0) - DayClose(1); oPrice = Abs(cnt); SetStopProfitTarget(oPrice, PointStop); //시간청산: 당일 종가 청산 SetStopEndOfday(153000);
프로필 이미지
흰둥이아빠
2021-03-03
1067
글번호 146756
시스템
답변완료

문의드립니다.

주식 거래 시 특정 조건 만족 시 미리 매수/매도를 걸어놓는 형태로 매매를 하려고 하는데 수식 부탁드려 봅니다. 감사합니다. 예) 1분봉 거래 시 시가에서 가격이 하락하다가 9시 30분에 5500원까지 하락할 때, 5000원 및 4500원에 분할로 미리 매수를 걸어 놓는 방법. (조건 만족 시점에는 매수 가격에 도달하지 않고 미래 시점(10시에 5000원, 10시 30분에 4500원 등) 도달한다고 가정)
프로필 이미지
깜피
2021-03-03
888
글번호 146749
시스템
답변완료

alert 정수형 출력

alert("%.2f ",C); C=102.24 일때 102로 출력되게 하려면 어떻게 하면 되나요 ? 수고하세요
프로필 이미지
thrupass
2021-03-03
774
글번호 146746
지표
답변완료

수정부탁드립니다

안녕하세요. 아래식에서 파동의시작을 국내선물 장시작시간부터 계산되고 종료후에는 초기화되어 익일장은 또 새롭게 계산되는식으로 수정하면 좋겠습니다, 도움 부탁드립니다. input : af(0.02), maxAF(0.2),크기(0); input : 텍스트출력(1); var : T(0),HH(0),LL(0),HD(0),HT(0),LD(0),LT(0),TL1(0),TL2(0),cnt(0),count(0); var : HH1(0),LL1(0),HD1(0),HT1(0),LD1(0),LT1(0),DarkGray(0); var : ni(0),nP(0),nN(0),tx1(0),tx2(0),hi(0),li(0); var1 = CSar(af,maxAF); if crossup(c,var1) Then { T = 1; HH = H; HD = sdate; HT = stime; Hi = Index; HH1 = HH[1]; HD1 = HD[1]; HT1 = HT[1]; if LL > 0 Then { ni = Hi-Li+1; nP = CountIf(C>O,ni); nN = CountIf(C<O,ni); if 텍스트출력 == 1 then { Tx1 = Text_New(HD,HT,HH,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")"); Text_SetStyle(tx1,2,1); Text_SetColor(tx1,MAGENTA); Text_SetSize(tx1,크기); } } } if CrossDown(c,var1) Then { T = -1; LL = L; LD = sdate; LT = stime; Li = Index; LL1 = LL[1]; LD1 = LD[1]; LT1 = LT[1]; if HH > 0 Then { ni = Li-Hi+1; nP = CountIf(C>O,ni); nN = CountIf(C<O,ni); if 텍스트출력 == 1 then { Tx2 = Text_New(LD,LT,LL,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")"); Text_SetStyle(tx2,2,0); Text_SetColor(tx2,BLUE); Text_SetSize(tx2,크기); } } } if T == 1 then { if H > HH Then { HH = H; HD = sdate; HT = stime; HI = Index; ni = Hi-Li+1; nP = CountIf(C>O,ni); nN = CountIf(C<O,ni); if 텍스트출력 == 1 then { Text_Delete(tx1); Tx1 = Text_New(HD,HT,HH,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")"); Text_SetStyle(tx1,2,1); Text_SetColor(tx1,MAGENTA); Text_SetSize(tx1,크기); } } } if T == -1 then { if L < LL Then { LL = L; LD = sdate; LT = stime; Li = Index; ni = Li-Hi+1; nP = CountIf(C>O,ni); nN = CountIf(C<O,ni); if 텍스트출력 == 1 then { Text_Delete(tx2); Tx2 = Text_New(LD,LT,LL,NumToStr(ni,0)+"("+NumToStr(nP,0)+","+NumToStr(nN,0)+")"); Text_SetStyle(tx2,2,0); Text_SetColor(tx2,BLUE); Text_SetSize(tx2,크기); } } }
프로필 이미지
크라켄
2021-03-03
805
글번호 146744
지표
답변완료

문의

리버스거래 수식이며 피라미딩은 max 3개입니다. 문의1) b1-b2-b3-s1-s2-s3-b1-b2-b3...이런 패턴을 예상했으나 이러한 패턴을 포함하여 b1-b2-b3-s2-s3-s3-b3-b1-b2...처럼 뒤집을 때 s1보다 s2가 먼저 진입하며 피라미딩도 s2-s3-s3 처럼 s3가 중복되는 진입도 있으며 피라미딩 순서도 b3-b1-b2 처럼 순차적이 아닌 경우도 있습니다. 요청내용 첫째, 포지션을 뒤집을 때는 b1이나 s1부터 시작되고 둘째, s2-s3-s3 에서 s3 가 두번 들어가는데 동일 진입명은 피라미딩에서 제외하고 셋째, b1-b2-b3나 s1-s2-s3 처럼 순차적으로 피라미딩이 되게 수식을 수정하여 주십시요. ************************************************************************************ input:이평1(35),이평2(105),이평3(75),이평4(95); input:이평5(15),이평6(10),이평7(70),이평8(10); input:이평9(5),이평10(10),이평11(55),이평12(30); var : v1(0,data2),v2(0,data2); var : v3(0,data3),v4(0,data3); var : v5(0,data2),v6(0,data2); var : v7(0,data3),v8(0,data3); var : v9(0,data2),v10(0,data2); var : v11(0,data3),v12(0,data3); v1 = data2(ma(C,이평1)); v2 = data2(ma(C,이평2)); v3 = data3(ma(C,이평3)); v4 = data3(ma(C,이평4)); v5 = data2(ma(C,이평5)); v6 = data2(ma(C,이평6)); v7 = data3(ma(C,이평7)); v8 = data3(ma(C,이평8)); v9 = data2(ma(C,이평9)); v10 = data2(ma(C,이평10)); v11 = data3(ma(C,이평11)); v12 = data3(ma(C,이평12)); if MarketPosition <= 0 and CrossUp(v1,v2) or CrossUp(v3,v4) Then BuY("b1"); if MarketPosition == 1 and MaxEntries == 1 and CrossUp(v5,v6) or CrossUp(v7,v8) Then BuY("b2"); if MarketPosition == 1 and MaxEntries == 2 and CrossUp(v9,v10) or CrossUp(v11,v12) Then buy("b3"); if MarketPosition >= 0 and CrossDown(v1,v2) or CrossDown(v3,v4) Then Sell("s1"); if MarketPosition == -1 and MaxEntries == 1 and CrossDown(v5,v6) or CrossDown(v7,v8) Then Sell("s2"); if MarketPosition == -1 and MaxEntries == 2 and CrossDown(v9,v10) or CrossDown(v11,v12) Then Sell("s3");
프로필 이미지
목마와숙녀
2021-03-03
793
글번호 146743
시스템
답변완료

청산식 설명좀 부탁합니다

안녕하세요 아래는 제가 쓰는 매수청산식중에 하나인데요 얼마전에 "익일 3시15분이후까지 청산이 안되면 그이후 강제청산"식을 추가해 달라고했더니 if sDate > EntryDate and sTime >= 151500 Then ExitLong("bx"); 이렇게 넣어주셨더라고요 혹시 식 설명좀 부탁드려도될까요? 왜 저식이 매수당일이 아닌 익일 3시 15분까지 청산이 안되면 강제청산이 되는 식인지요 if MarketPosition == 0 and 진입조건 Then { Buy("A1.3"); #진입과 동시에 셋팅되서 진입봉 다음봉만 익절/손절감시해 신호 발생 ExitLong("A1.3.11",AtLimit,C*1.16,"A1.3"); ExitLong("A1.3.31",AtStop,C*0.99,"A1.3"); } if MarketPosition == 1 Then { #A1.3진입 if CurrentContrActs > CurrentContrActs[1] And LAtestEntryNAme(0) == "A1.3" Then { A1.3Price = LAtestEntryPrice(0); A1.3high = H; } if A1.3high > 0 And H > A1.3high Then A1.3high = H; if A1.3Price > 0 Then { ExitLong("A1.3.1",AtLimit,A1.3Price*1.16,"A1.3"); if A1.3high >= A1.3Price*1.01 Then ExitLong("A1.3.2",AtStop,A1.3high*0.93,"A1.3"); ExitLong("A1.3.3",AtStop,A1.3Price*0.99,"A1.3"); } if sDate > EntryDate and sTime >= 151500 Then ExitLong("bx"); }
프로필 이미지
말라
2021-03-03
743
글번호 146742
시스템
답변완료

지표

예를들어 10시 시가선 11시 시가선 12시 시가선 이런식으로 각 시간마다 시가선을 우측연장으로 표현하고 시가가 올라가면 올라가는 계단형식으로 표현하고 내려가면 반대로 표현이 가능한지요.(현재가도 추가 부탁합니다) 가능하다면 지표속성에서 변수로 시간을 조정할수 있게 해주시고요 차트표시에 나타나서 체우기를 할수 있게 부탁 드립니다.
프로필 이미지
야크
2021-03-03
803
글번호 146741
지표
답변완료

시그널메이커를 예스로요~

안녕하세요? 시그널메이커에서 예스로 이사중입니다.꼭좀 변환 부탁드립니다.^^ input : Exit_PT(200),Exit_LPT(200),BuyProfit(150),SellProfit(150),StopTick(100); var :SP(0); Params : TradingStartTime1(090000),TradingEndTime1(045400); var : Today_P( 0 ), Pre_NetProfit( 0 ), ProfitPoint( 0 ),LossPoint(0), myOpenProfit(0),TickPoint(0); Params : FastPeriod(92), SlowPeriod(109), SignalPeriod(85); SP = SignalPosition; TickPoint = OneTick * PriceScale; V0 = MACD(C, FastPeriod, SlowPeriod); V1 = XAverage(V0, SignalPeriod); if Time = 090000 Or (Time >= 090000 And (Time[1] < 090000 Or Date<>date[1])) Then Begin ProfitPoint = 0; Today_P = 0; Pre_NetProfit = NetProfit[1]; condition99 = false; condition88 = false; End; Today_P = NetProfit - Pre_NetProfit; // 하루 누적 수익 myOpenProfit = OpenPositionProfit; If (Today_P + myOpenProfit) >= (Exit_PT * TickPoint ) Then condition99 = true; If (Today_P + myOpenProfit) <= (-Exit_LPT * TickPoint) Then condition88 = true; if TradingStartTime1 < TradingEndTime1 Then Begin If TradingStartTIME1 <= TIME And TIME <= TradingEndTIME1 Then COND44 = True Else COND44 = False; End Else Begin If TradingStartTIME1 <= TIME Or TIME <= TradingEndTIME1 Then COND44 = True Else COND44 = False; End; If Cond44 = False Then Begin if SP <> 0 Then Begin ExitLong("마감 매수 청산",OnClose,def,def,CurrentContracts); ExitShort("마감 매도 청산",OnClose,def,def,CurrentContracts); End; Cond44 = False; End; ProfitPoint = Exit_PT * TickPoint? - Today_P - myOpenProfit; LossPoint = Exit_LPT * TickPoint + Today_P + myOpenProfit; if 1 = Sp then Begin ExitLong("매수 익절마감", Atlimit, close + ProfitPoint); ExitLong("매수 손절마감", AtStop, close - LossPoint); ExitLong("매수 청산", Atlimit, EntryPrice + BuyProfit * TickPoint ); End Else if -1 = Sp then Begin ExitShort("매도 익절마감", Atlimit, close - ProfitPoint); ExitShort("매도 손절마감", AtStop, close + LossPoint); ExitShort("매도 청산", Atlimit, EntryPrice - SellProfit * TickPoint ); End; //지정한 시간대에만 거래 if Cond44 And false = condition99 And false = condition88 Then Begin if CrossUp(V0,V1) Then Buy("매수") Else if CrossDown(V0,V1) Then Sell("매도"); End; SetStopLoss(StopTick * TickPoint * currentcontracts ,pointstop); //Trailing 적용하기 Params : up_price1(135), dn_price1(100), up_price2(100), dn_price2(80),up_price3(50), dn_price3(1); var : TickSize(0); TickSize = OneTick * PriceScale; If MaxContractProfit < TickSize * (up_price1 + 10) Then SetStopTrailing(TickSize * dn_price1, TickSize * up_price1) Else if MaxContractProfit < TickSize * (up_price2 + 10) Then setstopTrailing(TickSize * dn_price2, TickSize * up_price2) Else SetStopTrailing(TickSize * dn_price3, TickSize * up_price3);
프로필 이미지
jyck
2021-03-02
868
글번호 146740
시스템