커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

수식요청

아래 수식의 변환을 요청드립니다. =========================================================================== A=MA(C,5); B=MA(C,20); 골든=Crossup(A,B); 최고=HighestSince(1,골든,H); 최고가=ValueWhen(1,최고==최고(1) && 최고>H,최고); 최저=if(B>L,1,0); 최저가=sum(최저); 결론=최저가-ValueWhen(1,골든,최저가(1)); 조건=Crossup(C,최고가) && 결론>0; 카운트=CountSince(골든,조건)==1; 카운트&&!카운트(1) 이면서 0봉전 RSI(20)>60 1봉전 " <59.9 이 경우를 검색코자 합니다.
프로필 이미지
ksks
2024-11-20
647
글번호 185474
종목검색
답변완료

1주에서

예스랭귀지는 실주문가격을 수식에서 지정할 수 없습니다. 시스템 트레이딩 설정창에 매매가격을 시장가로 지정하시면 됩니다. 1주 매매단위를 50만원으로 변경부탁드립니다 var : 가(0),나(0),다(0),라(0),마(0); 가=MA(C,5); 나=(highest(high,9)+lowest(low,9))/2; 다=(highest(high,6)+lowest(low,6))/2; 라=(highest(high,5)+lowest(low,5))/2; 마=MA(C,6); if C>가&& C>나&& C>다&& C>라 Then Buy("b",onclose,def,1); if C<나 or C<마 Then ExitLong();
프로필 이미지
박셰프
2024-11-20
583
글번호 185473
시스템
답변완료

문의드립니다.

data1과 data2를 사용중인데 사진1 2사이에는 빈 간격이 많고 data2는 간격이 촘촘합니다. 이 참조데이터를 이용해 조건 만족시 var1과 var2에 데이터를 저장하는데요. 참조데이터 var1의 수치는 1인데 갑자기 var2나 var3에 2나 3이 저장되는 경우가 발생합니다. 이런 경우 어떻게 작성해야 하나요? 예로 if data2(c) > data2(c) then var1 = data2(c) - data2(c[1]); if var4 == 0 then var2 = var2 + var1; if var4 == 1 then var3 = var3 + var1; 2에서 var1은 5였는데 var2에 var2 + 10(알수없는수치)으로 저장되거나 2에서 var4 == 0 인데 var2와 var3에 같이 var1수치인 5가 아닌 알수없는 값이 저장되는 경우가 발생합니다. var : var1(0,Data2),var2(0,Data2); 이렇게 해줘도 발생합니다.조건이 만족하지 않는데 값이 저장되고 다른값이 저장되요. 중복으로 var2와 var3에...plot1(var4);로 현재값을 확인해줘도 var4는 0에 var1은 5가 맞는데도 말이죠.사진에서 2번째라고 체크된 봉에서... 어떻게 해결해야 될까요? 답변부탁드립니다.
프로필 이미지
아싸가오리
2024-11-21
686
글번호 185472
지표
답변완료

참조종목의 정보

안녕하세요. 차트의 주종목의 정보에 대해서는 symbolcode() 등의 함수가 있어 해당 종목의 코드를 가져올수 있는데, 참조차트(data2,3,4 .....)의 정보(종목명, 종목코드 등)를 알 수 있는 함수는 없는 건가요?
프로필 이미지
건곤대
2024-11-20
645
글번호 185471
지표
답변완료

청산 관련 수식 요청드립니다.

안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 진입과는 별개로 청산 관련된 수식만을 따로 작성 중인데, 수식 검토 및 2번 부분 수식을 요청드립니다. 청산 기준을 상황에 따라 다르게 적용되는 수식이 필요한데, 구현하고자 하는 내용은 다음과 같습니다. 1) 기본 청산 : ATR의 n배수 Trailing stop 2) 1개봉에서 내 포지션에 반대되는 과도하게 큰 움직임(ATR*2)이 나왔을 때, 청산 3) 일정 수익 이상 발생한 뒤에는, 청산 라인을 더 가깝게 변경한다. (ATR*k배수) 위 내용을 토대로 구현한 수식은 아래와 같습니다. input : AtrP(20), AtrMult(3), BigProfit(100), BigAtrMult(1.6); var : AtrV1(0), AtrV2(0), posHigh(0), posLow(0); # 기본청산 AtrV1 = ATR(AtrP) * AtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If MarketPosition() == 1 Then { If High > PosHigh Then PosHigh = High; ExitLong("EL1", AtStop, PosHigh - AtrV1); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; ExitShort("ES1", AtStop, PosLow + AtrV1); } # 1개봉 사이 내 포지션과 움직임이 나왔을 때 청산 -> 이 부분을 수식으로 구현하기가 어렵게 느껴져서, 도움 부탁드립니다..! # 수익이 커졌을 때 청산 라인 변경(ATR*1.6) AtrV2 = ATR(AtrP) * BigAtrMult; If BarsSinceEntry() == 0 Then PosHigh = High; If Marketposition == 1 Then { If High > PosHigh Then PosHigh = High; if PosHigh > entryPrice(0)+bigProfit Then exitlong("BigEL", atstop, PosHigh - AtrV2); } If BarsSinceEntry() == 0 Then PosLow = Low; If MarketPosition() == -1 Then { If Low < PosLow Then PosLow = Low; if PosLow < entryPrice(0)-bigProfit Then exitshort("BigES", atstop, PosLow + AtrV2); } ---------------------------------------------------------- 현재까지 작성 내용은 위와 같은데, 수식에 겹치는 군더더기 부분들도 있고, 청산조건 2번의 경우 Atstop 주문으로 코딩하려면 어떤식으로 작성이 가능한지 헷갈리는 상황입니다. 전체 내용이 반영된 다중청산 수식(여러 다른 진입전략에 붙여넣기 가능한)을 구현해주시면 정말 감사하겠습니다.
프로필 이미지
penfold
2024-11-20
877
글번호 185470
시스템
답변완료

수식 작성 도움 부탁드립니다

안녕하세요, 수식 작성에 늘 도움주셔서 감사합니다. 이동평균 크로스 전략에 직전거래손실 확인 필터(가상으로 진입, 청산)를 추가하고자 합니다. 기본 로직은 이평선 4개 (20, 60, 120, 200)을 활용해서 a) 120ma > 200ma 일 때, 20ma가 60ma를 상향돌파 시 매수 진입(청산은 20ma가 60ma 하향돌파) b) 120ma < 200ma 일 때, 20ma가 60ma를 하향돌파 시 매도 진입(청산은 20ma가 60ma 하향돌파) 하는 간단한 로직입니다. 다만 여기서, 가상으로 진입 후 청산한 뒤, 직전 가상거래가 손실일 경우에만 진입하는 방식의 수식을 구현 부탁드리겠습니다. (아래는 손실필터를 검색하던 중, 다른 전략에서 손실필터가 적용된 사례가 있어 첨부합니다. 해당 로직의 필터 방식을 위의 이평 전략에 적용만 부탁드리겠습니다.직접해보려했으나 아직 어려움이 많아 부득이하게 부탁드려봅니다...) [ 필터 참고 수식 ] Input: shortPeriod(20),exitperiod(10); var : trade(true),mp(0),ep(0),xp(0); Value1 = Highest(high, shortPeriod); Value2 = Lowest(Low, shortPeriod); Value3 = Lowest(Low, exitperiod); Value4 = Highest(High, exitperiod); if TotalTrades > TotalTrades[1] Then { if PositionProfit(1) < 0 Then trade = true; Else { trade = False; mp = 0; } } if MarketPosition == 0 and trade == False Then { If mp == 0 and CrossUP(Close, Value1[1]) Then { ep = c; mp = 1; } If mp == 0 and CrossDown(Close, Value2[1]) Then { ep = c; mp = -1; } If mp == 1 and CrossDown(Close, Value3[1]) Then { mp = 0; xp = c; if xp < ep Then trade = true; } If mp == -1 and CrossUp(Close, Value4[1]) Then { mp = 0; xp = c; if xp > ep Then trade = true; } } if trade == true Then { If MarketPosition == 0 and CrossUP(Close, Value1[1]) Then Buy("LE1"); If MarketPosition ==0 and CrossDown(Close, Value2[1]) Then Sell("SE1"); } If entryname=="LE1" and CrossDown(Close, Value3[1]) Then Exitlong("Lx"); If entryname == "SE1" and CrossUp(Close, Value4[1]) Then ExitShort("Sx"); 감사합니다.
프로필 이미지
penfold
2024-11-20
673
글번호 185469
시스템
답변완료

해외 선물 등락율 계산이 다르게 나옵니다.

당일 등락율을 계산하는데 예스 트레이더의 나오는 등락율 변동폭과 등락율 비율이 다릅니다. var : 당일등락율(0), 전일등락율(0), 등락값(0), 시초가(0) ; 시초가 = DayOpen(); 등락값 = (c-DayOpen()); // 이유는 모름 5.5차이 당일등락율 = (등락값)*100/시초가; 당일등락율 = Floor(당일등락율*100)/100; // 소숫점 2자리 버리기 이렇게 하는 경우 들락폭이 5.5 정도 차이가 생깁니다. 11/20일 기준 나스닥 해외 선물의 경우 시초가를 다르게 적용해야 하는지요 ? 값을 찍어서 디버깅 해봐도 예스트레이더에서 나오는 등락폭과 시초가 기준 현재가의 등락폭의 값이 다릅니다. <첨부 사진 설명> - 시초가가 20762.25 이므로 현재가 20803 이므로 변동폭은 40.75 인데 트레이더에서는 35.25 ( 5.5의 차이가 발생 ??? ) 답변 부탁 드립니다.
프로필 이미지
머니겜
2024-11-20
672
글번호 185468
시스템
답변완료

표준편차 사용예시 부탁드립니다.

안녕하세요 매번 질문에 친절한 답변 정말 감사드립니다. 1. 오늘은 제목처럼, 표준편차 사용예시 코드를 부탁드리고자 합니다. 일반적인 표준편차 산출 식이 있음에도 불구하고, 가중 이동평균의 표준편차를 구하려고 합니다. 현재 시점에서, 각 시점의 편차(시점별 값 - 평균값)를 구하는 과정이 어려워 질문드립니다. 각 시점의 편차를 구하려고 할 때, '고정된 평균'값을 어떻게 산출해야 하는지 모르겠습니다. 가령, 종가 데이터의 편차의 제곱의 합을 먼저 구한다고 한다면, var1 = accumN(c,20)/20; var2 = accumN(Square(c - var1),20)/20; . . (이하생략) 으로 풀어나가려고 했으나 곰곰이 생각해보면 va1인 평균값은 var2에서 계산될 때 [0],[1],[2].. 순으로 이전 시점의 평균값을 뱉어내니 현재 시점의 평균과 다르게 됩니다. 이 부분을 어떻게 해결할지 모르겠습니다.. 2. 곁다리로, 함수 중 하나를 여쭤보고자 합니다. 메뉴얼에 있는함수중에, AvgDeviation(Price,Length) 라는 편차평균을 구하는 놈이 있는데, 얘는 용도가 뭔가요? 편차의 합은 항상 0이라서, 평균이 0일텐데 정확한 용도가 궁금합니다.. 항상 갑갑한 질문 죄송합니다....
프로필 이미지
아침식사됩니다
2024-11-20
653
글번호 185467
지표
답변완료

추가질문 드립니다.

앞질문(90070)에 대한 추가질문 첨부 파일에 보듯이 1>화살표가 너무커서..크기 조절하는 방법좀 가르쳐주세. 2>새로생긴 보조지표 어떠게 보는 건가요?
프로필 이미지
냠냠냠
2024-11-20
610
글번호 185466
지표
답변완료

수식 검토 부탁드리겠습니다

질문 몇가지 부탁드리겠습니다 질문1. ARRV 배열의 이동평균을 ARRMA 로 작성했는데요, 값이 제대로 (작게 나오네요) 안나오네요 어디서 잘못 작성한건지 검토 좀 부탁 드리겠습니다 작성한 수식대로라면 ARRV 배열에 포함된 값들로만 3이동평균 한게 맞지 않나요?? VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if harr == 0 or (harr > 0 and ARR[cnt] > harr) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 Then { ARRV[0] = HVI; } } # Plot11(ARR[0]); # Plot12(HARR[0]); Plot13(ARRV[0]); P1=3; IF ARRV[P1-1]>0 TheN { SUM1=0; FoR CNT= 0 TO P1-1; { SUM1= SUM1+ARRV[CNT]; } ARRMA=SUM1/P1; PLOT22(ARRMA); } } 질문2. 아래 수식에서 배열 ARR의 5일간 최고값을 HARR에 대입하고 그 값들로 "ARRH 라는 배열"로 만들고 난뒤에, ARR 배열에 ARRH값을 삽입하고자 (0번에 ARRH 값이 오고 그다음에 H값이 오도록) 아래와 같이 작성했는데 잘 안나오네요 어디서 잘못됐는지 한번 봐주셨으면 합니다 ARR[1]을 출력했을때 HIGH 값이 잘 나오는데 ARR[0]으로 하면 5일간 최고 고가 값이 안나오네요.. VAR : P1(0),SUM1(0),ARRMA(0); var : m1(0),m2(0),T(0),HH(0),HH1(0),LL(0),CNT(0),HARR(0),hvi(0); VAR:TLUP(0); ARRAY : ARR[100](0),VII[100](0),ARRV[100](0),ARRH [100](0); if H>L*1.11 Then { TLUP=TL_NEW(sDatE,sTimE,H,sDatE,sTimE,99999); TL_SetColoR(TLUP,CyaN); TL_SetSizE(TLUP,1); for cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; VII[CNT] = VII[CNT-1]; ARRV[CNT] = ARRV[CNT-1]; ARRH[CNT]= ARRH[CNT-1]; } ARR[0] = H; VII[0] = DayOpen*1.10; if ARR[4] > 0 Then { HARR = 0; HVI = 0; For cnt = 0 to 4 { if HARR == 0 or (HARR > 0 and ARR[cnt] > HARR) Then { HARR = ARR[cnt]; HVI = VII[cnt]; } } if HVI > 0 AND HARR>0 Then { ARRV[0] = HVI; ARRH[0]=HARR; } } FoR cnt = 99 downto 1 { ARR[CNT] = ARR[CNT-1]; } ARR[0]=HARR[0]; Plot12(HARR); # Plot11(ARR[0]); } 질문3. arr 배열의 값들을 보고자 디버그 수식을 작성했는데요 혹시 각 봉에서의 모든 배열 값들을 외부로 추출해서 쓰려면 (PRINT) MessageLoG("%.1f,%.1f,%.1f",ARR[0],ARR[1],ARR[2]); 예를들어 50번 까지 보려면 이런식으로 모두 나열해서 쓰는 방법 밖에 없나요?? 범위 지정 할 수 있는 수식이 있는지 궁금합니다
프로필 이미지
yamu
2024-11-20
714
글번호 185465
지표