커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

문의 드립니다.~

수고하십니다~ 아래와 같이 시간설정을 하였는데 질문1 다른 시간데는 정상적으로 돌아가는데 input : StartTime3(003000),EndTime3(010000); 에서는 0시 30분 부터가 아니고 00시 부터 시작됩니다. 왜 그런지요? 질문2 1분봉 차트에서는 전체시간이 돌아가는데 틱봉에서는 input : StartTime1(183000),EndTime1(193000); 부분만 돌아가고 다른 시간대는 실행되지 않는데 틱봉에서도 설정된 전체시간이 실행되게 하려면 어떻게 해야 하나요? input : StartTime1(183000),EndTime1(193000); input : StartTime2(220000),EndTime2(223000); input : StartTime3(003000),EndTime3(010000); input : StartTime4(010000),EndTime4(013000); input : ntime(100000),n(10); var : Tcond(false); var : OO(0),HH(0),LL(0); if (sdate != sdate[1] and stime >= EndTime1) or (sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime1) or (sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then { Tcond = true; SetStopEndofday(EndTime1); } if (sdate != sdate[1] and stime >= EndTime2) or (sdate == sdate[1] and stime >= EndTime2 and stime[1] < EndTime2) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime2) or (sdate == sdate[1] and stime >= StartTime2 and stime[1] < StartTime2) Then { Tcond = true; SetStopEndofday(EndTime2); } if (sdate != sdate[1] and stime >= EndTime3) or (sdate == sdate[1] and stime >= EndTime3 and stime[1] < EndTime3) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime3) or (sdate == sdate[1] and stime >= StartTime3 and stime[1] < StartTime3) Then { Tcond = true; SetStopEndofday(EndTime3); } if (sdate != sdate[1] and stime >= EndTime4) or (sdate == sdate[1] and stime >= EndTime4 and stime[1] < EndTime4) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime4) or (sdate == sdate[1] and stime >= StartTime4 and stime[1] < StartTime4) Then { Tcond = true; SetStopEndofday(EndTime4); } Tcond = true; OO = O; HH = H; LL = L; if Tcond == true Then { if TotalTrades > TotalTrades[1] Then { OO = O; HH = H; LL = L; } if HH > 0 and H > HH Then HH = H; if LL > 0 and L < LL Then LL = L; if MarketPosition == 0 and OO > 0 and LL > OO-PriceScale*n Then Sell("s",AtLimit,LL+PriceScale*n); if MarketPosition == 0 and OO > 0 and HH < OO+PriceScale*n Then Buy("b",AtLimit,HH-PriceScale*n);
프로필 이미지
예스요
2021-10-26
847
글번호 153163
시스템

신대륙발견 님에 의해서 삭제되었습니다.

프로필 이미지
신대륙발견
2021-10-26
17
글번호 153162
시스템
답변완료

수치 범위에 관해서 질문드립니다

안녕하세요 분봉상에서 일봉 이동평균선을 표현하는데 키움에서는 범위지정 방법이 없어서 일일이 수치를 입력해줘야 하는데 예스에서는 간단하게 표현할 수 있는 방법이 있을까요? 예로 20일 이평을 구하려는데 모든 수치를 작성해야되서요 sv1=(npredayclose(4)+npredayclose(3)+npredayclose(2)+ npredayclose(1)+dayclose())/5; sv2=(npredayclose(19)+npredayclose(18)+npredayclose(17)+ npredayclose(16)+npredayclose(15)+npredayclose(14)+ npredayclose(13)+npredayclose(12)+npredayclose(11)+npredayclose(10) +npredayclose(9)+npredayclose(8)+npredayclose(7)+ npredayclose(6)+npredayclose(5)+npredayclose(4)+ npredayclose(3)+npredayclose(2)+ npredayclose(1)+dayclose())/20;
프로필 이미지
yamu
2021-10-26
903
글번호 153161
검색
답변완료

시스템 이상 검토의뢰

안녕하세요 예스스탁입니다. Input : Period1(1), Period2(15), Period3(30), Period4(60), Period5(120),period6(240),Period7(480), Period8(960), Period9(1920), Period10(3840),period11(7680); var : T(0); var3 = ma(C,Period3); var4 = ma(C,Period4); var8 = ma(C,Period8); var10 = ma(C,Period10); if CrossUp(var8,Var10) Then T = 1; if CrossDown(var8,Var10) Then T = -1; if T == -1 and CrossUp(Var3,Var4) Then Buy(); if T == 1 and CrossDown(Var3,Var4) Then Sell(); 즐거운 하루되세요 > tnsflwls 님이 쓴 글입니다. > 제목 : 시스템 작성 의뢰 > 수고 하십니다 ! Input : Period1(1), Period2(15), Period3(30), Period4(60), Period5(120),period6(240),Period7(480), Period8(960), Period9(1920), Period10(3840),period11(7680); 이동평균선 8선 이 이동평균선 10선 을 크로스다운 하고 난 다음에 이동평균선 3선이 이동평균선 4선 을 크로스업 할때는 매수 를 , 이동평균선 8선 이 이동평균선 10선 을 크로스업 하고 난 다음에 이동평균선 3선이 이동평균선 4선 을 크로스다운 할때는 매도 를 할수있는 수식을 부탁 드립니다. ##### 수식을 적용하였으나 매매 체결이 안되는데요 , 우선 먼저 이평8 선과 10선이 크로즈를 하고 난 다음 , 한참 진행이 된 후에 이평3 선과 4선이 크로즈될때 매매 체결이 되는수식으로 작성을 다시 한번 부탁 드립니다. *** 수고 하세요 ***
프로필 이미지
tnsflwls
2021-10-26
876
글번호 153157
시스템
답변완료

문의 드립니다.

안녕하세요. 시스템 구현에 있어서 어려움을 겪고 있어서 문의 드립니다. [1]은 지표 구현에 관련된 질문입니다. [2]은 [1]을 활용한 시스템 설정입니다. 만약 구현이 가능하지 않는다면 몇번 항목이 안되는지, 그리고 대체 방안을 알려 주시면 감사하겠습니다. [1] 새로운 하루가 시작되었을 시 변수를 모두 초기화를 시키고 해당 조건을 만족한 시점부터 지표를 생성한다. 예) 장 시작 후 양봉이 연속해서 6개 발생 할 경우 6개 봉의 최고점 값과 최저점 값을 표시하는 지표(화면 표시)를 생성. 이후, 새로운 6연속 양봉 생성시 지표 값을 갱신. 다음날 장 시작 시, 어제의 지표 값은 초기화. 양봉 6개 연속해서 발생 시 다시 지표 생성 [2] A : 최초로 발생한 6연속 양봉의 (최고점) B : 최초로 발생한 6연속 양봉의 최저점 C : 두번째로 발생한 6연속 양봉의 (최고점) D : 두번째로 발생한 6연속 양봉의 최저점 거래시간: [진입시간: 금일 오전 11시부터 익일 오전 1:00, 청산시간: 금일 오전 11시부터, 익일 오전 5:30분 (장종료 30분전까지)] 1. 지표 값이 생성(최초로 발생한 6연속 양봉) 된 이후 -> A 돌파 시 한번의 매수 기회 / B 돌파 시 한번의 매도 기회가 주어진다. 예) A돌파 후 B에서 손절 -> B 스위칭 -> A도달시 손절 후 스위칭을 하지 않는다. 예) A돌파 후 목표가 청산 - > B돌파 이후 목표가 청산 - > A 또는 B 다시 돌파시 거래하지 않는다. 목표가: 1) 매수 진입 시: A+ (A-B) / 매도 진입시: B - (A-B) 2) 매수 진입(A 돌파) 시 손절 또는 수익 발생 후 다시 A를 돌파 하여도 거래하지 않는다. 매도 진입(B 돌파) 시 손절 또는 수익 발생 후 다시 B를 돌파 하여도 거래하지 않는다. 손절가: 1) A 돌파 시, B 값에 손절 후 스위칭(최초 B값 진입 시 스위칭 진행) / B 돌파 시, A 값에 손절 후 스위칭(최초 A값 진입 시 스위칭 진행) *목표가 및 손절가에 도달하지 못하고 지표 값이 갱신 될 경우 2번으로 넘어간다. 2. 지표 값이 갱신(새로운 6연속 양봉 발생) 된 이후 A) 보유하고 있는 포지션이 없을 경우 -> C 돌파 시 한번의 매수 기회 / D 돌파 시 한번의 매도 기회가 주어진다. 예) C돌파 후 B에서 손절 -> D 스위칭 -> C도달시 손절 후 스위칭을 하지 않는다. 예) C돌파 후 목표가 청산 - > D돌파 이후 목표가 청산 - > C 또는 D 다시 돌파시 거래하지 않는다. 목표가: 1) 매수 진입 시: C + (C-D) / 매도 진입시: D - (C-D) 2) 매수 진입(C 돌파) 시 손절 또는 수익 발생 후 다시 C를 돌파 하여도 거래하지 않는다. 매도 진입(D 돌파) 시 손절 또는 수익 발생 후 다시 D를 돌파 하여도 거래하지 않는다. 손절가: 1) C 돌파 시, D 값에 손절 후 스위칭(최초 D값 진입 시 스위칭 진행) / D 돌파 시, C 값에 손절 후 스위칭(최초 C값 진입 시 스위칭 진행) B) 포지션을 보유하고 있을 경우 (A 또는 B에서 진입한 경우) -> 매수 또는 매도를 이미 진입한 경우 C, D를 이용하여 목표 값 및 손절 값을 새롭게 갱신한다. 목표가: 1) 매수 진입 시: C + (C-D) / 매도 진입시: D - (C-D) 2) 매수 포지션을 손절 또는 수익 발생 후 C를 돌파하는 경우 단 한번 거래를 진행한다. 매도 포지션을 손절 또는 수익 발생 후 D를 돌파하는 경우 단 한번 거래를 진행한다. 손절가: 1) C 돌파 시, D 값에 손절 후 스위칭(최초 D값 진입 시 스위칭 진행) / D 돌파 시, C 값에 손절 후 스위칭(최초 C값 진입 시 스위칭 진행) 3. 지표 값이 지속적으로 갱신 될 경우 (E,F / G,H / I,J ....) -> 2번을 반복한다. 4. 목표 값 및 손절 값을 도달 못할 시 익일 오전 5:30분 (장 종료 30분전)에 보유 중인 모든 포지션을 자동 청산한다. 감사합니다.
프로필 이미지
7out
2021-10-26
735
글번호 153156
시스템
답변완료

도움을 부탁드리겠습니다.

안녕하세요...항상 감사합니다. 일봉에서 검색식 세가지 요청드립니다. 5ma 20ma 두이평 선이 .. 1> 1일차 골드크로스, 2일차 <음봉>, 3일차 오늘 검색 골드크로스 발생한날 거래량,시가,종가 2일차 음봉의 거래량, 시가,종가 3일차인 오늘 검색식을 써서, 2일차 음봉거래량이 1일차 골드크로스날보다 작고, 2일차 음봉종가가, 1일차 시가+종가의 중간이상인 종목 검색 2> 1일차 골드크로스, 2일차 양봉, 3일차 <음봉>, 4일차가 오늘 1일차 골드크로스 발생한날 거래량,시가,종가 2일차 양봉일것 3일차 음봉의 거래량 시가, 종가 를 변수에 담고 4일차인 오늘 검색식을 써서 3일차 음봉거래량이 1일차 골드크로스날보다 작았고, 3일차 음봉종가가, 1일차 시가+종가의 중간이상인 종목 검색 3> 혹시 위의 두식을 일반화 해서 골드크로스 이후 2일차 첫음봉발생, 또는 3일차 첫음봉발생, 또는 n일차에 "첫 음봉발생"하고, 음봉거래량이 골드크로스 날보다작고, 음봉종가는 골드크로스날의 중간이상...을 n일차 변수로 해서 작성할수 있을까요..
프로필 이미지
지스카드
2021-10-26
1016
글번호 153155
검색
답변완료

종목 검색이 잘 되지 않아 다시 질문드립니다.

https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=153763&ref=153745&Sort=&KeyField=NickName&KeyWord=mhim30 위 링크는 저번에 질문드렸었던 링크입니다. 답변 잘 받았습니다. 다름이 아니라 답변해주시는대로 해보았으나, 검색되어야 될 종목이 검색이 되질 않아 다시 질문드려봅니다. 첨부 이미지를 보시면 초록색 선이 있는데 그 선은 일봉상 상한가 전날의 종가에 선을 그어 놨고, 그 선에 +5%~-10% 범위 안에 들어오는 종목을 검색하고자 합니다. 위 조건이라면 재영솔루텍 종목이 검색되어야되는데, 검색이 되질 않습니다. 다시 한번 봐주시면 감사하겠습니다. 감사합니다.
프로필 이미지
mhim30
2021-10-25
1465
글번호 153154
종목검색
답변완료

문의드립니다

1. 5일과20일크로스업 인 당일종목검색을 하고 전일종목검색을하고 전전일 검색을 하고싶은데 Input : Period(0) 를 이용하여 할수있는 방법이 있을까요? 아니면 다른 방식이 있으면 알려주세요 2. 당일 10분봉에서 평균거래량보다 2배이상거래봉 2번이상 나온종목을 찾고싶습니다
프로필 이미지
처음처럼22
2021-10-26
910
글번호 153153
종목검색
답변완료

지표 부탁 드립니다.

input : sto1(12),sto2(26),sto3(9); var : Stochasticsfast(0),Stochasticsslow(0),StochasticssOsc(0); StochasticsFast = (C-lowest(L,sto1))/(highest(H,sto1)-lowest(L,sto1))*100; Stochasticsslow = AccumN(C-lowest(L,sto1),sto2)/AccumN((highest(H,sto1)-lowest(L,sto1)),sto2)* 100; StochasticssOsc = ema(Stochasticsfast,sto2)-ema(Stochasticsslow,sto3); if StochasticssOsc > 0 Then plot1(StochasticssOsc,"osc",RED); Else plot1(StochasticssOsc,"osc",BLUE); PlotBaseLine1(0); PlotBaseLine2(20); PlotBaseLine3(-20); PlotBaseLine4(15); PlotBaseLine5(-15); PlotBaseLine6(5); PlotBaseLine7(-5); 직전봉보다 적을시 파랑 크면 빨강 부탁 드립니다. 수고하세요
프로필 이미지
와라바다
2021-10-25
944
글번호 153152
지표
답변완료

문의드립니다

수고많으십니다. 아래 내용을 수식으로 만들어 주셨는데요.. 실제에는 다르게 나타나서요. 1. 신호나올시 즉시 매수 매도하는 것도 가격이 차이가 많이 납니다. 2. 그리고 종가에 매수 매도하는 것하고 즉시 매수 매도하는 것이 거래 횟수가 5-6배 이상 차이가 나는 것도 이상한 거 같습니다. 두 경우에 신호가 나타난 차트 사진 올려 드립니다. 6분과 30분에 같은 방향 신호가 동시에 나올때 즉시 매수 매도 하는 것과 6분의 종가에 매수매도 하는 2가지 수식을 주셨습니다. 수동으로 복귀해보는 것과 차이가 많이 납니다. 확인 한번 부탁드립니다. 요청했던 부분 다시 남깁니다. 감사합니다. 6분봉과 30분봉, 매수 매도 신호가 나오도록 해주세요. 1. 현재 캔들이 10번째 이전 캔들의 고가를 돌파할때 매수 신호, 저가를 깰때 매도 신호가 나오도록 해주세요. 종가가 아닌 돌파나 깰때 바로 나오도록 해주세요. 2. 현재 캔들이 10번째 이전 캔들의 고가를 돌파하거나 저가를 깨는 일이 같이 일어날 때는 일어나는 그 시각에 해당되는 매수, 매도 신호가 나오도록 해주세요. 3. 10번째 이전 캔들의 고가 위에서 현재 캔들이 앞 캔들의 고가를 높이는 경우, 매수 신호가 나오도록 해주세요. 4. 10번째 이전 캔들의 저가 아래에서 현재 캔들이 앞 캔들의 저가를 깨는 경우 매도 신호가 나오도록 해주세요. * 위 사항에 대해 6분봉과 30분봉이 같은 방향으로 신호가 있을 때만 그 방향으로 매수, 매도 진입하도록 해주세요. 1 즉시진입 input : ntime1(6),ntime2(30),n(10); input : StartTime(222500),EndTime(010000); input : 익절틱수(50),손절틱수(50); var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0); Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0); var : Tcond(false); 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; 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; TF1 = TM%ntime1; TF2 = TM%ntime2; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or (Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or (Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then { H1[0] = H; L1[0] = L; For cnt = 1 to 49 { H1[cnt] = H1[cnt-1][1]; L1[cnt] = L1[cnt-1][1]; } } if H1[0] > 0 and H > H1[0] Then H1[0] = H; if L1[0] > 0 and L < L1[0] Then L1[0] = L; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or (Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or (Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then { H2[0] = H; L2[0] = L; For cnt = 1 to 49 { H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; } } if H2[0] > 0 and H > H2[0] Then H2[0] = H; if L2[0] > 0 and L < L2[0] Then L2[0] = L; if Tcond == true Then { if MarketPosition <= 0 and H1[n] > 0 and H2[n] > 0 and H < min(H1[n],H2[n])+PriceScale*1 Then Buy("b",AtStop,max(H1[n],H2[n]+PriceScale*1)); if MarketPosition >= 0 and L1[n] > 0 and L2[n] > 0 and L > max(L1[n],L2[n])-PriceScale*1 Then Sell("s",AtStop,min(L1[n],L2[n])-PriceScale*1); } } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { IF Endtime <= starttime Then { SetStopEndofday(0); } } 2. 종가진입 input : ntime1(6),ntime2(30),n(10); input : StartTime(222500),EndTime(010000); input : 익절틱수(50),손절틱수(50); var : S1(0),D1(0),TM(0),TF1(0),TF2(0),cnt(0); Array : H1[50](0),L1[50](0),H2[50](0),L2[50](0); var : Tcond(false); 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; 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; TF1 = TM%ntime1; TF2 = TM%ntime2; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime1 > 1 and TF1 < TF1[1]) or (Bdate == Bdate[1] and ntime1 > 1 and TM >= TM[1]+ntime1) or (Bdate == Bdate[1] and ntime1 == 1 and TM > TM[1]) Then { H1[0] = H; L1[0] = L; For cnt = 1 to 49 { H1[cnt] = H1[cnt-1][1]; L1[cnt] = L1[cnt-1][1]; } } if H1[0] > 0 and H > H1[0] Then H1[0] = H; if L1[0] > 0 and L < L1[0] Then L1[0] = L; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime2 > 1 and TF2 < TF2[1]) or (Bdate == Bdate[1] and ntime2 > 1 and TM >= TM[1]+ntime2) or (Bdate == Bdate[1] and ntime2 == 1 and TM > TM[1]) Then { H2[0] = H; L2[0] = L; For cnt = 1 to 49 { H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; } } if H2[0] > 0 and H > H2[0] Then H2[0] = H; if L2[0] > 0 and L < L2[0] Then L2[0] = L; if Tcond == true Then { if H1[n] > 0 and H2[n] > 0 and C > H1[n] and C > H2[n] and C > O Then Buy(); if L1[n] > 0 and L2[n] > 0 and C < L1[n] and C < L2[n] and C < O Then Sell(); } } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); IF Endtime > starttime Then SetStopEndofday(Endtime); Else { if sDate != sDate[1] Then SetStopEndofday(Endtime); } if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { IF Endtime <= starttime Then { SetStopEndofday(0); } }
프로필 이미지
jesten77
2021-10-25
793
글번호 153151
시스템