커뮤니티

예스랭귀지 Q&A

글쓰기

국악부 님에 의해서 삭제되었습니다.

프로필 이미지
국악부
2023-05-15
12
글번호 168977
시스템
답변완료

부탁드립니다.

data2의 전일종가를 표시하는 지표식 부탁드립니다.
프로필 이미지
예시
2023-05-15
1336
글번호 168976
지표
답변완료

지표 및 시스템 문의드립니다

수고많으십니다~~ 번거롭게 해드렸네요... 간단하게 작성법을 알고, 응용하면 될줄알았는데 쉽지가않네요 다시한번 재문의 드립니다. ================================= 키움에서 쓰던 1. 시스템 매매를 예스트레이더에 맞게 변경하고 싶습니다. 2. 매수식을 이용한 검색 도 부탁드립니다 ================================ 1. 시스템 트레이딩 > 제목 : 매매식 및 매수매도 조건 설정 문의 조건설정 1차매수 : 2000주 2차매수 : 500주 ... 2차까지만 매수하고 싶습니다. 매도는 1차매도 : 평단대비 3.5% 상승시 비중의 30%만 매도 (최초 3.5%상승시 1번만 매도) 2차매도 : 평단대비 10% 상승시 비중의 50% 매도 나머지 전량매도 : 1. 매도조건 달성시 2. 평단대비 50% 달성시 (목표가) 3. 평단대비 -15% 하락시 손절 시간설정 1. 오전 09:10 부터 매수시작 2. 오후 02:30 부터는 신규매수 중지 3. 오후 03:15 보유종목 모두 청산 이렇게 하고 싶은데 어떻게 설정을 해야할까요?? (아래 매매식) period = 10 multiple = 3 기본 base = (h + l) /2; 상단선 upper_band=base + atr(period)*multiple; downtrend=valuewhen(1,lowest(upper_band(1),period)>upper_band,upper_band); 하단선 lower_band=base - atr(period)*multiple; uptrend=valuewhen(1,highest(lower_band(1),period)<lower_band,lower_band); 매수 crossup( c(1), downtrend(1)) && c > downtrend 매도 crossdown( c(1), uptrend(1) ) && c < uptrend ======================================== 3. 위 매수식을 이용한 "검색" 도 부탁드립니다 (아래조건에 해당하는 종목을 검색하고 싶은데 어떻게 하느지를 모르겠네요??) period = 10 multiple = 3 기본 base = (h + l) /2; 상단선 upper_band=base + atr(period)*multiple; downtrend=valuewhen(1,lowest(upper_band(1),period)>upper_band,upper_band); 하단선 lower_band=base - atr(period)*multiple; uptrend=valuewhen(1,highest(lower_band(1),period)<lower_band,lower_band); 매수 crossup( c(1), downtrend(1) ) && c > downtrend
프로필 이미지
spar
2023-05-15
1672
글번호 168975
지표
답변완료

수식확인 요청 드립니다.

nr12 nr7로 테스트 했는데 1봉전께 나오는거 같습니다. 번거로우시겠지만 확인 부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 지표 및 종목검색식 부탁드립니다. > 안녕하세요 예스스탁입니다. 1. 지표(속성에서 막대그래프로 지정하고 보시기 바랍니다.) input : length_NR(7); var : sOpen(0),sHigh(0),sLow(0),sClose(0); var : range_NR_Prep(0),range_NR(0),range_ATR(0); var : range_isCurrentLowest(False),range_isLowest(False); var : range_Break_Direction(0),range_Volume_Surge(0); sOpen = open; sHigh = high; sLow = low; sClose = close; #NR_Check(range) => range < lowest(range, length_NR - 1)[1] ? true : false // Calculations range_NR_Prep = sHigh - sLow; range_NR = sHigh[1] - sLow[1]; range_ATR = atr(length_NR); if range_NR_Prep < lowest(range_NR_Prep,length_NR-1)[1] Then range_isCurrentLowest = true; Else range_isCurrentLowest = False; if range_NR < lowest(range_NR,length_NR-1)[1] Then range_isLowest = true; Else range_isLowest = False; range_Break_Direction = iff(range_isLowest == true , IFf(sClose > sHigh[1] and range_ATR > range_ATR[1] , 1 ,IFf(sClose < sLow[1] and range_ATR < range_ATR[1] , -1 , 0)),0); range_Volume_Surge = iff(volume > ma(volume, length_NR)[1] , 1 , 0); range_Break_Direction = iff(range_Break_Direction == 1 , range_Break_Direction + range_Volume_Surge ,IFf(range_Break_Direction == -1 , range_Break_Direction + range_Volume_Surge , 0)); if range_isLowest then plot1(range_Break_Direction,"검색",green); Else NoPlot(1); 2 종목검색 input : length_NR(7); var : sOpen(0),sHigh(0),sLow(0),sClose(0); var : range_NR_Prep(0),range_NR(0),range_ATR(0); var : range_isCurrentLowest(False),range_isLowest(False); var : range_Break_Direction(0),range_Volume_Surge(0); sOpen = open; sHigh = high; sLow = low; sClose = close; #NR_Check(range) => range < lowest(range, length_NR - 1)[1] ? true : false // Calculations range_NR_Prep = sHigh - sLow; range_NR = sHigh[1] - sLow[1]; range_ATR = atr(length_NR); if range_NR_Prep < lowest(range_NR_Prep,length_NR-1)[1] Then range_isCurrentLowest = true; Else range_isCurrentLowest = False; if range_NR < lowest(range_NR,length_NR-1)[1] Then range_isLowest = true; Else range_isLowest = False; range_Break_Direction = iff(range_isLowest == true , IFf(sClose > sHigh[1] and range_ATR > range_ATR[1] , 1 ,IFf(sClose < sLow[1] and range_ATR < range_ATR[1] , -1 , 0)),0); range_Volume_Surge = iff(volume > ma(volume, length_NR)[1] , 1 , 0); range_Break_Direction = iff(range_Break_Direction == 1 , range_Break_Direction + range_Volume_Surge ,IFf(range_Break_Direction == -1 , range_Break_Direction + range_Volume_Surge , 0)); if range_isLowest then Find(1); 즐거운 하루되세요 > 신데렐라맨 님이 쓴 글입니다. > 제목 : 지표 및 종목검색식 부탁드립니다. > 종목검색식 + 지표요청입니다. nr(x) 인디케이터라는 지표입니다. 기본은 12일이고 날짜지정이 가능하면 좋겠습니다. 제가 설명이 부족할듯 하여 원본 링크 첨부드립니다. https://kr.tradingview.com/v/OWa0Thc7/ 브레이크 업다운 같은건 없어도 되고요 nr(x) 종목 검색식과 지표 부탁드립니다. 미리 감사드려요. 꾸벅~ //@version=2 study("NR(X) Indicator", overlay = true) // Pull traditional data sOpen = security(tickerid, period, open) sHigh = security(tickerid, period, high) sLow = security(tickerid, period, low) sClose = security(tickerid, period, close) // Inputs length_NR = input(defval = 7, title = "Period length of days for Narrow Range", type = integer) NR_Check(range) => range < lowest(range, length_NR - 1)[1] ? true : false // Calculations range_NR_Prep = sHigh - sLow range_NR = sHigh[1] - sLow[1] range_ATR = atr(length_NR) range_isCurrentLowest = NR_Check(range_NR_Prep) range_isLowest = NR_Check(range_NR) range_Break_Direction = range_isLowest == true ? sClose > sHigh[1] and range_ATR > range_ATR[1] ? 1 : sClose < sLow[1] and range_ATR < range_ATR[1] ? -1 : 0 : 0 range_Volume_Surge = volume > sma(volume, length_NR)[1] ? 1 : 0 range_Break_Direction := range_Break_Direction == 1 ? range_Break_Direction + range_Volume_Surge : range_Break_Direction == -1 ? range_Break_Direction + range_Volume_Surge : 0 // Draw out //plot(range_isLowest == true ? range_Break_Direction : na, color = green, style = histogram, transp = 0) plotshape(range_isCurrentLowest == true ? low : na, style = shape.diamond, color = white, transp = 0) plotshape(range_Break_Direction > 0 ? low : na, style = shape.labeldown, color = green, transp = 0, text = "Break ₩nUP", textcolor = white, location = location.abovebar) plotshape(range_Break_Direction < 0 ? high : na, style = shape.labelup, color = red, transp = 0, text = "Break ₩nDOWN", textcolor = white, location = location.belowbar)
프로필 이미지
신데렐라맨
2023-05-15
1522
글번호 168974
종목검색

비리번 님에 의해서 삭제되었습니다.

프로필 이미지
비리번
2023-05-15
7
글번호 168973
검색
답변완료

함수요청

안녕하세요? 국내선물을 거래하고자합니다. 아래 전략에 대해 스크립트 작성 부탁들비니다. 수요일의 종가가 전주 금요일 종가대비 상승하고 월요일 시가보다 크면 목요일 시가 매수, 15시 20분 청산 수요일의 종가가 전주 금요일 종가대비 하락하고 월요일 시가보다 작으면 목요일 시가 매도, 15시 20분 청산
프로필 이미지
흰둥이아빠
2023-05-15
1367
글번호 168971
시스템
답변완료

수식문의드립니다.

항상 감사드립니다. 아래의 3 가지 수식에 이격도 (이평이 서로 너무 벌어지면 진입금지)를 추가해주시면 감사드리겠습니다, 저번처럼 외부변수로 해주시면 정말 감사드리겠습니다.(예 Input : p1(5), p2(20), Per(5);) [1번] Inputs: AvgLen1(10), AvgLen2(10), AvgLen3(10), AvgLen4(10), ARmult(4.5), Div(30); Vars: Avg1(0), Avg2(0), Avg3(0), Avg4(0), MP(0), StopPrice(0); Avg1 = ema(Close, AvgLen1); Avg2 = ema(Close, AvgLen2); Avg3 = ema(Close, AvgLen3); Avg4 = ema(Close, AvgLen4); If CrossUp(Avg1 , Avg2) AND (Avg2 > Avg3) AND (Avg3 > Avg4) then Buy("B",AtMarket); If CrossDown (Avg1 , Avg2) AND (Avg2 < Avg3) AND (Avg3 < Avg4) then Sell("S",AtMarket); If Avg1 < Avg2 then ExitLong("EL",AtMarket); If Avg1 > Avg2 then ExitShort("ES",AtMarket); MP = MarketPosition; if MP == 1 and MP[1] <> 1 then StopPrice = low - ma(range,40)*ARmult; if MP == -1 and MP[1] <> -1 then StopPrice = High + ma(range,40)*ARmult; If MP == 1 then { exitlong ("ExitLong", atstop, stopprice ); stopprice = stopprice + (low-stopprice)/Div; } If MP == -1 then { exitshort ("ExitShort",atstop, stopprice ); stopprice = stopprice - (stopprice-high)/Div; } [2번] Input: DMILen(70), ADXLen(20), entryPoint(0.2), ADXExit(30); Vars: BuySetup(false), SellSetup(false), BuyPrice(0), SellPrice(0), DPlus(0), DMin(0), ADXVal(0), ExitSPrc(0), ExitLPrc(0); DPlus = DIPlus(DMILen); DMin = DIMinus(DMILen); ADXVal = ADX(ADXLen); If DPlus > DMin AND CrossUp( ADXVal , DMin) and MarketPosition <> 1 then begin BuyPrice = High + entryPoint ; BuySetup = true; ExitLPrc = Low - entryPoint ; end; If ADXVal < DMin OR MarketPosition == 1 then BuySetup = False; If DPlus < DMin AND CrossUp( ADXVal , DPlus) and MarketPosition <> -1 then begin SellPrice = Low - entryPoint ; SellSetup = true; ExitSPrc = High + entryPoint ; end; If ADXVal < DPlus or MarketPosition == -1 then SellSetup = False; If BuySetup then Buy("B",atstop,BuyPrice); If SellSetup then Sell("S",atstop,SellPrice); /*If MarketPosition == 1 then Begin BuySetup = false; ExitLong("EL1",atstop,ExitLPrc); end; If MarketPosition == -1 then begin SellSetup = True; ExitShort("ES1",atstop,ExitSPrc); end; If ( ADXVal[1] >= ADXExit AND ADXVal < ADXVal[1] ) then Begin If MarketPosition == 1 and barssinceentry > 1 then ExitLong("EL2"); ; If MarketPosition == -1 and barssinceentry > 1 then ExitShort("ES2");; end; If DPlus < DMin and BarsSinceEntry > 1 then ExitLong("EL3"); If DPlus > Dmin and BarsSinceEntry > 1 then ExitShort("ES3");*/ [3번] Inputs: Length(300), Const(1.4), ChanPcnt(0.8), stopLen(40), stopper(1.0); Vars: KCU(0), KCL(0), ChanRng(0), AvgVal(0), AvgRange(0), SetBar(0), CountL(0), CountS(0); //Assignments of Keltner calculations AvgVal = ma(Close, Length); AvgRange = ma(TrueRange, Length); KCU = AvgVal + AvgRange * Const; KCL = AvgVal - AvgRange * Const; ChanRng = (KCU - KCL) / 2; //Accumulates to count the bars after the SetUps below CountL = CountL + 1; CountS = CountS + 1; //Buy Criteria Evaluation IF CrossUp(Close , KCU) Then Begin SetBar = High; CountL = 1; End; IF Close > KCU AND CountL <= 5 Then Buy("B",atstop,SetBar + (ChanRng * ChanPcnt)); //Sell Criteria Evaluation IF CrossDown(Close , KCL) Then Begin SetBar = Low; CountS = 1; End; IF Close < KCL AND CountS <= 5 Then Sell("S",atstop,SetBar - (ChanRng * ChanPcnt)); //System Stops IF CrossDown( Close , AvgVal) Then ExitLong(); IF CrossUP(Close , AvgVal) Then ExitShort(); //Trailing Stops ExitLong("EL2", atstop,Lowest(Low, StopLen) ); ExitShort("ES2", atstop,Highest(High, StopLen));
프로필 이미지
행복곰
2023-05-15
1666
글번호 168959
시스템
답변완료

문의 드립니다.

안녕하세요. 늘 감사드립니다. 30분봉, 60분봉등 큰봉을 씁니다. 봉의 시가에서 매수하여 (200)틱 익절 (-150)틱 손절 하는 단순한 매매인데, 시뮬레이션 차트로 검증을 해보니, 진입후 해당 진입봉의 꼬리가 (-150)틱 이하로 내려갔다가 (200)틱 이상으로 가도 익절로 계산되어서 아주 과대계산 이 됩니다. (큰시간봉에서는 한 봉내의 가격의 흐름 데이타가 없는 이유인듯) 실제 시스템 매매에는 적용하지 않더라도, 시뮬레이션 차트상에서만 이라도, 조건에 맞아 매수 진입한 해당봉의 꼬리가 input 으로 정한 손절(ex : -150) 이하이거나, 조건에 맞아 매도 진입한 해당봉의 꼬리가 input 으로 정한 손절(ex : 150) 이상이거나 진입하지 않은 다른봉의 꼬리는 상관없으나, 진입한 봉의 꼬리가 손절가이상에 해당하면 무조건 손절로 처리되어서 결과적으로는 손실로 결과 계산되어지게 하는 명령함수는 없을까요 ? 실제 매매시 실제 결과보다 시뮬레이션 결과가 과대 계산되어지는 오류를 막아보고자 합니다. 위의 사항을 구현할 수 없다면, 해당봉(진입한 봉의 꼬리가 손절가 이상) 의 갯수라도 차트상에 표기가 되었으면 좋겠는데요.. --------- 개발자님 곁에 늘 좋은일 가득하길 바랍니다. 감사합니다. ~~
프로필 이미지
하늘선물
2023-05-15
1078
글번호 168958
시스템
답변완료

시스템신호가 조건에 맞는 경우에도 나오지 않습니다.

시스템신호를 이용하여 자동매매 프로그램 모의테스트를 진행중입니다. 예스랭기지 조건식에 맞는 경우에 처음 1번은 신호가 나오는데 이후에는 신호가 나오지 않습니다. 주기는 30틱, 60틱, 1분 등 여러가지로 바꿔 테스트를 해도 실시간 조건에서 신호가 나오지 않습니다. 지나간 신호에 대해서는 조건에 맞는 시스템 매매신호가 나오는 것을 확인했습니다. 예를들어 아래와 비슷한 조건식을 사용하여 테스트를 하는 중입니다. - TSI가 0선 아래로 내려갈 경우 매도하고 - TSI가 0선 위로 올라갈 때 청산 실시간 매매신호가 정상적으로 나오게 하는 설정이 있는지 궁금하여 문의드립니다.
프로필 이미지
눈뜬사람
2023-05-15
1102
글번호 168956
시스템
답변완료

문의

답변 수식으로는 090300 첫봉에 진입하는 결과만 나옵니다. 체결가격도 다릅니다. 살펴주십시요. ***************************************************************************** 안녕하세요 예스스탁입니다. input : ntime(100000); var : T(0); #날짜변경되면 T는 0 if Bdate != Bdate[1] Then T = 0; #10시 이후이면 1 if (bDate != bDate[1] and sTime >= ntime) or (Bdate == Bdate[1] and sTime >= ntime and sTime[1] < ntime) Then T = 1; #10시 이후에 0.01까지 가격이 하락하면 T는 2 if T == 1 and L == 0.01 Then #(종가기준이면 C == 0.01) T = 2; #T는 2이고(0.01까지 하락후) 0.1이상 상승하면 즉시 매수 if T == 2 and H < 0.1 Then { Buy("b",AtStop,0.1); } 즐거운 하루되세요 > 목마와숙녀 님이 쓴 글입니다. > 제목 : Re : Re : 문의 > 수식을 그대로 콜atm+2단계에 적용했는데 가격대가 0.01과 0.10 이 아닙니다. 살펴주시기 바랍니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 > 안녕하세요 예스스탁입니다. input : ntime(100000); var : T(0); if Bdate != Bdate[1] Then T = 0; if (bDate != bDate[1] and sTime >= ntime) or (Bdate == Bdate[1] and sTime >= ntime and sTime[1] < ntime) Then { var1 = O; T = 1; } if T == 1 and C <= var1-0.01 Then T = 2; if T == 2 and C >= var1+0.1 Then { T = 3; Buy(); } 즐거운 하루되세요 > 목마와숙녀 님이 쓴 글입니다. > 제목 : 문의 > 국내선물 데이트레이딩 if 10시에 가격이 하락하여 0.01 을 체결한 후 다시 상승하여 0.10 을 돌파 then buy(); 입력시간부터 발생한 봉부터 계산하는 것을 반영하여 주십시요. 수식 완성 부탁드립니다.
프로필 이미지
목마와숙녀
2023-05-15
685
글번호 168948
시스템