커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

문의드립니다.

다음 수식을 종목검색식으로 부탁드립니다. 기준봉조건 = C > C(1) * 종가등락률 && H > C(1) * 고가등락률 && (V > 거래량기준 or 거래대금 > 거래대금기준) && C > O; 기준봉V = Valuewhen(1, 기준봉조건, V); Sv = sum(V); K1 = Sv - Valuewhen(1, 기준봉조건, Sv(1)) - 기준봉V; K = Valuewhen(1, 기준봉조건, V); CrossUp(k, k1)
프로필 이미지
redcon
2024-02-15
673
글번호 176659
종목검색
답변완료

항셍 분봉 관련 문의

1. 항셍 3분봉을 예로 들면 오전 10시12분으로 표기되는 봉에 동시호가 체결가가 차트에 점으로 찍히고, (240215 기준 15918) 다음 봉이 10시15분 봉으로 표기되어 시/고/저/종가가 나오는데요, (240215 기준 시/고/저/종가 15927/15927/15757/15806) 1-1. 수식에 dayOpen은 15918원일까요? 15927원일까요? 1-2. dayindex==0 의 종가는 15918원일까요? 15806원일까요? 2. 제가 2003년도 예스트레이더로 작업하면서 사용자함수를 많이 만들었었는데 하도 오래되서 기억이 잘 안나는 부분이 있어서 문의드려요. ABC=accumN(iff(L<dayLow(1) && dayindex()==2,1,0),dayindex()+1); 3분봉으로 설명을 하면, 전일 저가보다 dayindex()==2의 저가[10시18분봉_10시18분~21분 거래 결과 (또는 21분봉_10시21분~24분 거래결과)]가 작으면 1, 크면 0 -> 여기까지는 알겠는데 뒤에 dayindex()+1 -->> 이 부분은 어떻게 이해하면 될까요? 늘 감사합니다^^
프로필 이미지
sysking
2024-02-15
638
글번호 176648
시스템
답변완료

나스닥 시뮬레이션을 위한 썸머타임, 거래시간, 매매횟수

안녕하세요. 지난번 항셍 거래시간 수식 관련 명쾌한 답변 주셔서 많은 진척이 있었습니다. 깊은 감사드립니다!^^ 아래의 조건으로 나스닥 수식 적용 중인데 막히는 부분이 있어 문의 올립니다! - 3분봉 - 당일청산 - 5년이상 시뮬레이션 예정 수식 문의사항 - 매년 썸머타임 적용 수식 - 거래시간 23시30분~07시 썸머타임 기간에는 (22시30분~06시) - 매수진입, 매도진입 1일 각 3회까지만 허용 위 수식만 있으면 진입,청산 대입하여 시뮬레이션 돌릴 수 있는 상황입니다! 항상 감사합니다^^ P.S : 회신 주실 때 각 수식에 대해 간단하게 설명해주시면 나중에 조금 변경하거나 응용을 제 스스로 하는데 많은 도움이 될 것 같아요^^
프로필 이미지
sysking
2024-02-15
684
글번호 176647
시스템
답변완료

문의 드립니다.

아래 식에서 MACD를 추가하고자 합니다. 매수 때 30분봉에서 MACD 12 26 9 선이 시그널선 위에 있을 때 아래 식을 적용하여 매수 매도 때 30분봉 에서 MACD 12 26 9 선이 시그널선 아래에 있을 때 아래 식을 적용하여 매도 부탁드립니다. input : ntime(30); var : S1(0),D1(0),TM(0),TF(0),OO(0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { OO = O; } if MarketPosition <= 0 and OO > 0 and C > OO and C > O and C[1] < O[1] Then Buy(); if MarketPosition == 1 and C < O Then ExitLong(); } ------------------------------------------------------------------------------- input : ntime(30); var : S1(0),D1(0),TM(0),TF(0),OO(0); if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and TF < TF[1]) or (Bdate == Bdate[1] and ntime > 1 and TM >= TM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and TM > TM[1]) Then { OO = O; } if MarketPosition >= 0 and OO > 0 and C < OO and C < O and C[1] > O[1] Then Sell(); if MarketPosition == -1 and C > O Then ExitShort(); }
프로필 이미지
선물대장
2024-02-15
751
글번호 176646
시스템
답변완료

옵션 차익 청산

성실한 답변 늘 감사드립니다. 콜 행사가 360 를 3.0을 1개 매수 콜 행사가 362.5를 2.5을 1개 매도 두 행사가 차익이 100,000원발생 했을때 자동청산 수식 부탁드립니다.
프로필 이미지
노블레스
2024-02-15
743
글번호 176644
시스템
답변완료

문의드립니다:)

안녕하세요:) 답변해주신 시스템에 대해 추가하고 싶은 부분이 있어 문의드립니다. 역사적 신고가나 6년 신고가 가격을 돌파시 진입을 하게 되는 전략인데요:) 제주반도체가 1월25일 진입 조건에 해당하긴 했는데 신고가 갱신이 안된 것인지 전일 신고가 돌파시 진입을 하게 되어서요 해당 부분이 개선될 수 있는지 문의드립니다 ----------------------------------------------------------------- input : 금액(2000000); var : HisH(0,Data2),cnt(0),YH6(0,Data2),trade(False),dm(0,Data1),entry(0); var : Rebuy(False,Data1),NegCnt(0,Data1); Array : YH[20](0,Data2); #역사적 신고가(참조데이터의 전체봉 중 최고가) if HisH == 0 or (HisH > 0 and Data2(H) > HisH) Then HisH = data2(H); #연간 최고가 계산 if data2(Bdate > Bdate[1]+1000) Then { For cnt = 19 DownTo 1 { YH[cnt] = YH[cnt-1]; } YH[0] = Data2(H); } if YH[0] > 0 and Data2(H) > YH[0] Then YH[0] = Data2(H); if Bdate != Bdate[1] Then { trade = true; entry = 0; dm = 0; } dm = dm + m; if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; if TotalTrades > TotalTrades[1] Then { if IsExitName("bl1",1) == true or IsExitName("bl2",1) == true Then trade = False; ReBuy = False; NegCnt = 0; } if Bdate == Bdate[1] Then { if h > DayHigh(0)[1] Then { rebuy = true; NegCnt = 0; } if rebuy == true and C < O Then NegCnt = NegCnt+1; } if MarketPosition == 0 and trade == true and sTime >= 91000 and sTime < 150000 and dm >= 80000000000 Then { #역사적 신고가+1틱이상이면 매수 if entry == 0 Then Buy("b1",AtStop,HisH+PriceScale*1,Floor(금액/max(NextBarOpen,HisH+PriceScale*1))); if YH[5] > 0 and entry == 0 Then { #6년 최고가 계산 YH6 = 0; For cnt = 0 to 5 { if YH6 == 0 or (YH6 > 0 and YH[cnt] > YH6) Then YH6 = YH[cnt]; } #6년 최고가 +1틱이면 매수 if YH6 > 0 Then Buy("b2",AtStop,YH6+PriceScale*1,Floor(금액/max(NextBarOpen,YH6+PriceScale*1))); } if entry >= 1 and reBuy == true and NegCnt >= 3 Then { Buy("b3",AtStop,DayHigh+PriceScale*1,Floor(금액/max(NextBarOpen,DayHigh+PriceScale*1))); } } if MarketPosition == 1 Then { if IsEntryName("b1") == true Then var1 = HisH[BarsSinceEntry]; if IsEntryName("b2") == true Then var1 = YH6[BarsSinceEntry]; if IsEntryName("b3") == true Then var1 = dayhigh[BarsSinceEntry]; if CurrentContracts == MaxContracts Then ExitLong("bx1",AtLimit,var1*1.02,"",Floor(MaxContracts*0.5),1); Else ExitLong("bx2",AtLimit,var1*1.04); ExitLong("bl1",AtStop,var1*0.985); ExitLong("bl2",AtStop,EntryPrice*0.96); }
프로필 이미지
노아
2024-02-15
1141
글번호 176642
시스템
답변완료

문의 드립니다

input : starttime(140000),endtime(50000),n(30); var : Tcond(false),hh(0),h1(0),ll(0),l1(0); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; hh = h; ll = l; h1 = hh[1]; l1 = ll[1]; IF Endtime <= starttime Then { SetStopEndofday(0); } } input : 익절틱수(0),손절틱수(50); if NextBarSdate != sDate Then { if NextBarOpen != C Then { Buy("b",AtStop,NextBarOpen+PriceScale*5); } } ExitLong("bx",AtMarket); if NextBarOpen != C Then { Buy("b1",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx1",AtMarket); if NextBarOpen != C Then { Buy("b3",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx3",AtMarket); if NextBarOpen != C Then { Buy("b4",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx4",AtMarket); if NextBarOpen != C Then { Buy("b5",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx5",AtMarket); if NextBarOpen == C Then { Buy("b6",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx6",AtMarket); if NextBarOpen == C Then { Buy("b7",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx7",AtMarket); if NextBarOpen == C Then { Buy("b8",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx8",AtMarket); if NextBarOpen == C Then { Buy("b9",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx9",AtMarket); if NextBarOpen == C Then { Buy("b10",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx10",AtMarket); if NextBarOpen == C Then { Buy("b11",AtStop,NextBarOpen+PriceScale*5); } ExitLong("bx11",AtMarket); if NextBarSdate != sDate Then { if NextBarOpen != C Then { Sell("s",AtStop,NextBarOpen-PriceScale*5); } } ExitShort("sx",AtMarket); if NextBarOpen != C Then { Sell("s1",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx1",AtMarket); if NextBarOpen != C Then { Sell("s3",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx3",AtMarket); if NextBarOpen != C Then { Sell("s4",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx4",AtMarket); if NextBarOpen != C Then { Sell("s5",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx5",AtMarket); if NextBarOpen == C Then { Sell("s6",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx6",AtMarket); if NextBarOpen == C Then { Sell("s7",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx7",AtMarket); if NextBarOpen == C Then { Sell("s8",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx8",AtMarket); if NextBarOpen == C Then { Sell("s9",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx9",AtMarket); if NextBarOpen == C Then { Sell("s10",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx10",AtMarket); if NextBarOpen == C Then { Sell("s11",AtStop,NextBarOpen-PriceScale*5); } ExitShort("sx11",AtMarket); SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); ----------- 위 수식어의 매매시간이 14시부터 익일 5시까지이고 매매의 청산싯점도 5시이고 잔고도 없는것으로 보면 정확한지요?
프로필 이미지
푸른
2024-02-15
1027
글번호 176638
시스템
답변완료

선물거래식에서 2개의 챠트에 동시 발생한 신호의 청산시간이 다릅니다.

선물거래식에서 2개의 챠트에 각각 동시 발생한 신호의 청산시간이 다릅니다. 한 화면에 2개의 챠트를 띄우고 각각 시스템-01 과 시스템-02를 운영하고 있습니다. 예제 내용을 보시면 아시겠지만 계좌1 운영--시스템-01 과 계좌2 운영--시스템-02 는 반대로 진입합니다. 당연히 익절, 손절은 아래와같이 동일하게 되어 있구요 buy-stocro-01 --> $익절 +0.95 $손절 -0.95 sell-stocro-01--> $익절 +0.95 $손절 -0.95 buy-stocro-02 --> $익절 +1.05 $손절 -2.25 sell-stocro-02--> $익절 +1.05 $손절 -2.25 그런데 2024-02-06일자 성능보고서를 보면 시스템-01, 시스템-02 같은 시간 09:19:35 에 시스템신호 'sell-stocro-02' 가 발생했으나 청산된 시간이 시스템-01 ---> 12:19:54 에 시스템-02 ---> 09:26:20 입니다. 챠트설정 등 뭔가 다르게 설정되어 이렇게 된 것 같은데 무엇을 설정해야 할까요?
프로필 이미지
우후훗
2024-02-15
881
글번호 176637
시스템
답변완료

수고많습니다. 4가지 조건검색중 3가지 이상조건이 될때 검색되게 해주세요... 감사드립

input : sonarP(20),sonarsig(9),voscP1(5),voscP2(20),rsiP(14); Var21 = SONAR(sonarP); Var22 = ema(Var21,sonarsig); Var5 = OSCV(voscP1,voscP2); var6 = RSI(rsiP); if CrossUp(Var21,Var22) and Var21[1] < 0 and Var5 > 0 and var6[1]<=30 AND var6[1]<var6 Then Find(1); input : pd(22), bbl(20), mult(2.0), lb(50), ph(0.85),기간1(10),기간2(20); var : wvf(0), sDev(0), midLine(0), upperBand(0),rangeHigh(0), OverSold(0); var : ap(0),esa(0),d(0),ci(0),wt1(0),wt2(0); # williams vix fix 및 과매도권 밴드 계산 wvf = ((highest(close, pd) - low) / (highest(close, pd))) * 100; sDev = mult * std(wvf, bbl); midLine = ma(wvf, bbl); upperBand = midLine + sDev; rangeHigh = (highest(wvf, lb)) * ph; # 웨이브트렌드 ap = (HIGH+LOW+CLOSE)/3; esa = Ema(ap, 기간1); d = Ema(abs(ap - esa), 기간1); ci = (ap - esa) / (0.015 * d); wt1 = Ema(ci,기간2); wt2 = ma(wt1,4); if wt1[1]<=-53 && (wvf >= upperBand or wvf >= rangeHigh or wvf[1] >= upperBand or wvf[1] >= rangeHigh) && wvf[1]>wvf && Crossup(wt1,wt2) Then Find(1); input : 배분1(0.236),배분2(1.02); var : 중최고가(0),중최저가(0); var : 경계(0),경계1(False),경계2(False); var : 기준봉(0),기준봉1(False),기준봉2(False); var : 결과기준(0),결과기준1(False),결과기준2(False); var : 평균(0),평균라인(0); var : a(0), m5(0),m10(0),m20(0),m60(0),m120(0),m240(0),m480(0); var : bh(0),bc(0),b(0),aa(0); 중최고가=highest(h,20); 중최저가=lowest(l,20); 경계=(중최고가+중최저가)/2-(중최고가-중최저가)*배분1; 경계1=crossup(c, 경계)&& c>o*배분2; 경계2=crossdown(c, 경계); if 경계1 or 경계2 Then 기준봉 = O; 기준봉1=crossup(c, 기준봉); 기준봉2=crossdown(c, 기준봉); if 기준봉1 or 기준봉2 Then 결과기준=o; 결과기준1=crossup(c, 결과기준); 결과기준2=crossdown(c, 결과기준); if 결과기준1 or 결과기준2 Then A=o; M5=ema(C,5); M10=ema(C,10); M20=ema(C,20); M60=ema(C,60); M120=ema(C,120); M240=ema(C,240); M480=ema(C,480); BH=BollBandUp(20,2); BC=ma(c,20); 평균=((M5*2)+(M10*2)+(M20*3)+(M60*2)+(M120*3)+(M240*2)+(M480*2)+(BH*1)+(BC*1)) / 18; 평균라인=Ema(Ema(Ema(평균, 5), 5), 5); B=평균라인 + 20*std(평균라인,5); AA=sar(0.02,0.2); if C>=A && CROSSUP(C,B) && AA<=C Then Find(1); input : rsiLenghth(14); input : rsiOverBought(70); input : rsiOverSold(30); var : bullishCandle(False),bearishCandle(False); var : rsiValue(0),isRSIOB(False),isRSIOS(False),tradeSignal(False); var : tx1(0),tx2(0),조건(False); bullishCandle=close >= open[1] and close[1] < open[1]; //close[1] < open[1] && close[1] >= open && close >= open[1]; //high >= high[1] and low <= low[1] rsiValue=rsi(rsiLenghth); isRSIOB=rsiValue >= rsiOverBought and rsiValue; isRSIOS=rsiValue <= rsiOverSold and rsiValue; tradeSignal=((isRSIOS or isRSIOS[1] or isRSIOS[2]) and bullishCandle); if tradeSignal && bullishCandle && C>O Then Find(1);
프로필 이미지
그냥생각없슴
2024-02-15
838
글번호 176636
종목검색
답변완료

480 tjs

10분봉에서.... 1 ,주가가 480 선위에 있고 2 ,스톡해스틱 슬로우 12, 5, 5,=> (0 에서 20 사이ㄷ또는 (1 or 2 봉전) 20돌파) 3 ,볼린저밴드 period :20 , d1 : 2 의 하단선 맞고거나 or 돌파 (저가도 인정) 위세경우를 만족 하는 검색식과 종목검색식을 알고 싶습니다. 새해 복 많이 받의세요
프로필 이미지
전진
2024-02-15
674
글번호 176635
검색