커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

전역 변수 같은게 있을까요??

매 봉마다 새로 리셋되는 로컬 변수말고 한번의 시뮬 전체에서 모든 봉이 공유해서 접근할 수 있고 다음 봉이 이전봉이 저장해놓은 광역변수에 접근해서 데이터를 가져다 쓸수있는 전역변수같은게 있을까요?
프로필 이미지
JTH
2022-01-28
1181
글번호 155882
시스템
답변완료

수식문의드립니다

1. 변수 초기치 설정 돌파가격 HB, LB의 초기치를 지정가로 정해놓고 지정가 돌파시 매수, 청산시 진입 이후 고가로 HB, LB 업데이트해 업데이트된 가격으로 다시 조건이 되면 재진입 이렇게 구현하고 싶은데 아래와 같이 만들면 초기치가 설정이 안됩니다 var : HB(13990), LB(13985), e60(0); e60 = Ema(C,5); if CrossUp(C, HB) Then Buy() ; if CrossDown(C, LB) Then Sell() ; if CrossDown(HB, e60) Then Begin ExitLong(); HB = Highest(H, BarsSinceEntry) ; End; if CrossUp(LB, e60) Then Begin ExitShort(); LB = Lowest(L, BarsSinceEntry); End; messagelog로 확인해보면 HB, LB 값이 안뜨고 1.#QNAN00000 이런게 뜨네요 어떤 부분이 잘못된건지 확인 부탁드립니다 2. marketposition initial value 시스템을 실행하면 실행 이전에 차트상의 조건 때문인지 marketposition이 처음엔 -1, 1로 잡혀있고 한번 체결되고 나면 그때부터 제대로 잡히는데 실제 진입 이전의 marketposition 초기치를 0으로 만들고, 이후 업데이트 하도록 하려면 어떻게 해야할까요? 3. 이전 도와주셨던 식 질문 HB 상향돌파시 매수진입, HB -10이면 손절 LB 하향돌파시 매도진입, LB + 10이면 손절 이 조건에서 청산을 봉 완성 이전 현재가가 손절가에 도달했을 때 바로 청산되도록 만들고 싶다 요청드렸고 아래와 같이 작성해 주셨고, 작성해주신 부분에 대해 질문이 있습니다 input : HB(14230), LB(14220) ; if MarketPosition <= 0 Then Buy("b",AtStop,HB); if MarketPosition >= 0 Then Sell("s",AtStop,LB); if MarketPosition == 1 Then ExitLong("bx1",AtStop,HB-10); if MarketPosition == -1 Then ExitShort("sx1",AtStop,HB+10); 진입시 marketposition이 매수일땐 0이하, 매도일땐 0이상인 이유가 무엇인가요? 그리고 이 조건에선 진입이 정확이 어떻게 되는건가요? HB, LB에 매수매도가 걸려있는건가요? 4. "최근 100봉 ATR(14)의 최대값"을 쓰고 싶은데 어떻게 구할 수 있는지 부탁드립니다
프로필 이미지
jshwang2
2022-01-28
1192
글번호 155881
시스템
답변완료

수식 부탁드립니다.

매수 진입 1. data 1에서 a) MACD >= 0 이고 b) MACD SIGANL >= -15 이고 c) MACD SIGNAL의 기울기가 우상향(+)이고 d) RSI의 값이 45보다 크고 e) C 가 20일선 보다 크며 f) C 의 20일선 기울기가 우상향(+)이고 2. data 2 에서 a) RSI 10일평균의 기울기가 우상향(+)이고 b) RSI 의 기울기가 우상향(+)이고 c) MACD 기울기가 우상향(+)이고 d) MACD SIGNAL의 기울기가 우상향(+)이고 e) MACD > MACD SIGNAL 일 경우 매수 진입 청산 a) 진입후 50틱 수익이면 data 1의 30일선 하향 돌파시 청산 b) 진입후 50틱에 도달하지 못하고 손실이면 -30틱에서 청산 매도 진입과 청산은 반대 입니다. 추가로 2의 배수분 (2분, 4분, 6분...)과 5의 배수분(5분, 10분, 15분....)에서 30초전에 알람을 울리게 해 주세요 항상 수고해주셔서 감사합니다.
프로필 이미지
에헤라디야
2022-01-28
1179
글번호 155880
시스템
답변완료

부탁드립니다

수고하십니다 1.주식챠트에서 9시 첫5분봉 고가선,저가선,중심선 과 그대로고,저,중심가선의폭을 상,하로 수식부탁드립니다
프로필 이미지
파생돌이
2022-01-28
1209
글번호 155879
지표
답변완료

수식 문의합니다.

당일 손실 거래가 3회 연속인 경우 당일 매매진입 금지
프로필 이미지
에이드
2022-01-28
1162
글번호 155878
시스템
답변완료

지표수식과 관련한 질문과 수정 부탁 드립니다.

담당자님, 안녕하세요. 지표 수식 활용에 큰 도움을 주셔서 매우 감사드립니다. 다음 지표 수식을 차트(분봉 차트)에서 실행한 후 지표속성창에서 Length 변수값 20을 다른 숫자로 지정해서 입력해도 지표 결과에 전혀 변화가 없는데 왜 그런 것인지 그 이유에 대해 질문드립니다. 분봉 차트에서도 적용되도록 하는 로직이 포함되지 않아서 그런 것인가요? 그리고, (분봉 차트에서) 변경된 외부입력 변수값을 지정하여 입력하면 그 변수값을 반영하여 변화된 지표 결과가 나올 수 있도록 아래 지표 수식의 수정을 부탁드립니다. cf. Yes Language에서 Length 변수값을 다른 수치로 변경해서 저장한 후 실행해도 지표 결과에 변화가 없습니다. -------------------------------------------------------------------- inputs : Length(20); var : Price(0),VSum(0),PVsum(0),VWMA(0); Price = (H+C)/2; if Bdate != bdate[1] Then { Vsum = 0; PVsum = 0; } VSum = Vsum + V; PVsum = PVsum + Price*V; VWMA = PVsum/VSum; plot1(Vwma); ----------------------------------------------------------------------- 담당자님 노고와 답변에 미리 감사드립니다. 설 명절 잘 보내시기 바랍니다.
프로필 이미지
원칙투자자
2022-01-28
1433
글번호 155877
지표
답변완료

수식 부탁드립니다

수식 부탁드립니다 10시에 2계약 매수, 10시 30분 기준으로 손실이면 즉시 전량매도청산, 수익이면 11시 1계약 청산, 12시 1계약 청산
프로필 이미지
시나리오
2022-01-28
1051
글번호 155876
시스템
답변완료

수식작성 부탁드립니다

안녕하십니까? 종종 귀찮게 해서 죄송합니다 아래의 조건 신호 꼭 부탁드립니다 1 5이평선이 20이평선 아래서 상승중이고 조건1 : 양봉의 몸통 2/3가 20이평선을 돌파하여 걸쳐있거나, 조건2 : 20이평 위에서 시작하는 첫 양봉이 만들어질 때 위의 2조건 중 먼저 발생하는 봉에서 매수신호 발생 2 5이평선이 20이평선 위에서 하락중이고 조건1 : 음봉의 몸통 2/3가 20이평선을 이탈하여 걸쳐있거나, 조건2 : 20이평 아래서 시작하는 첫 음봉이 만들어질 때 위의 2조건 중 먼저 발생하는 봉에서 매도신호 발생 감사합니다
프로필 이미지
까꾸리손
2022-01-27
1249
글번호 155875
시스템
답변완료

지표 부탁드립니다.

안녕하세요? 분봉 선물챠트에 참조데이터 3에 KP200을 넣고 양봉일 때 거래량 - 음봉일 때 거래량으로 순 거래량 변수를 구해서 그래프로 표현하고자 합니다. 부탁드립니다. 설 연휴 즐겁고 행복한 시간 보내시기 바랍니다. 감사합니다.
프로필 이미지
포보스
2022-01-27
1057
글번호 155874
지표
답변완료

문의 드립니다.

아래 렌코차트는 선물에서는 제대로 작동하는데, 일반 주식에서는 종가선 비슷하게 나옵니다. 그 이유가 뭘까요... 선물처럼 주식차트에서도 나오게 할 방법은 없을까요? 답변 감사합니다. input:renkoSize(0.5),length(10),NumATRs(1.5); var:j(0),k(0),renkoCnt(0),gubun(0),Sum(0),trSum(0),atrV(0),time1(0),filename("renko3.txt"),printOK(False); array:OO[50](0),HH[50](0),LL[50](0),CC[50](0), TR[50](0), //True Range upperLine[50](0), //상단채널 lowerLine[50](0), //하단채널 maV[50](0); //이평선 If index == 0 or bdate != bdate[1] Then { //break on session에 해당, 즉 일자가 바뀌면 새로 계산 gubun = 0; //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산 For j = 49 DownTo 1 { //금일 시가봉을 신규 추가 OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다 HH[0] = C; LL[0] = C; CC[0] = C; } Else { If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않은 시점 If OO[0] - renkoSize >= C Then { gubun = -1; //하락 방향 CC[0] = OO[0] - renkoSize; //음봉 HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); //true range 계산식 참조 //macd 계산 당시와 마찬가지로 sum 값이 있을 때만 처리 If sum > 0 Then { sum = sum + CC[0] - CC[length]; //이평선 계산 원리 그대로, 현재가를 더하고 n봉전 가격 뺌 trSum = trSum + TR[0] - TR[length]; //true range의 합을 계산 maV[0] = Sum / length; //n개의 종가 합을 n으로 나누어 이동평균 계산 atrV = trSum / length; //ATR 계산식 참조 upperLine[0] = maV[0] + atrV * NumATRs; //상단 밴드 계산 lowerLine[0] = maV[0] - atrV * NumATRs; //하단 밴드 계산 } j = 0; if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } Else If OO[0] + renkoSize <= C Then { gubun = 1; //상승 방향 CC[0] = OO[0] + renkoSize; //양봉 HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); If sum > 0 Then { //계속 반복되는 공통 루틴이므로 if문 바깥으로 뺄까도 했으나 sum = sum + CC[0] - CC[length]; //더 복잡해지므로 copy & paste로 처리 trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } If LL[0] - renkoSize >= C Then { gubun = -1; renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = LL[j+1]; CC[j] = LL[j+1] - renkoSize; HH[j] = OO[j]; LL[j] = CC[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If HH[0] + renkoSize <= C Then { gubun = 1; renkoCnt = Int(Round((C-HH[0])/renkoSize,9)); if renkoCnt > 49 then renkoCnt = 49; For j = 49 DownTo renkoCnt { OO[j] = OO[j-renkoCnt]; HH[j] = HH[j-renkoCnt]; LL[j] = LL[j-renkoCnt]; CC[j] = CC[j-renkoCnt]; TR[j] = TR[j-renkoCnt]; maV[j] = maV[j-renkoCnt]; upperLine[j] = upperLine[j-renkoCnt]; lowerLine[j] = lowerLine[j-renkoCnt]; } For j = renkoCnt-1 DownTo 0 { OO[j] = HH[j+1]; CC[j] = HH[j+1] + renkoSize; HH[j] = CC[j]; LL[j] = OO[j]; TR[j] = max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); If sum > 0 Then { sum = sum + CC[j] - CC[j+length]; trSum = trSum + TR[j] - TR[j+length]; maV[j] = Sum / length; atrV = trSum / length; upperLine[j] = maV[j] + atrV * NumATRs; lowerLine[j] = maV[j] - atrV * NumATRs; } if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } Else If NextBarSdate > sdate Then { //당일 종가봉에서 For j = 49 DownTo 1 { OO[j] = OO[j-1]; HH[j] = HH[j-1]; LL[j] = LL[j-1]; CC[j] = CC[j-1]; TR[j] = TR[j-1]; maV[j] = maV[j-1]; upperLine[j] = upperLine[j-1]; lowerLine[j] = lowerLine[j-1]; } If LL[1] > C Then { //종가가 이전 봉보다 아래 형성 OO[0] = LL[1]; CC[0] = C; HH[0] = OO[0]; LL[0] = CC[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성 OO[0] = HH[1]; CC[0] = C; HH[0] = CC[0]; LL[0] = OO[0]; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } Else { //종가가 이전 봉의 중간에 형성 OO[0] = C; CC[0] = C; HH[0] = C; LL[0] = C; TR[0] = max(CC[1],HH[0]) - min(CC[1],LL[0]); } If sum > 0 Then { sum = sum + CC[0] - CC[length]; trSum = trSum + TR[0] - TR[length]; maV[0] = Sum / length; atrV = trSum / length; upperLine[0] = maV[0] + atrV * NumATRs; lowerLine[0] = maV[0] - atrV * NumATRs; } j = 0; //채널 값을 새로이 계산 if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",j,gubun,OO[j],HH[j],LL[j],CC[j]); } } if sum == 0 and CC[length] > 0 then { for j = 0 to length - 1 { sum = sum + CC[j]; trsum = trsum + max(CC[j+1],HH[j]) - min(CC[j+1],LL[j]); } } If OO[0] > 0 Then Plot1(OO[0],"OO",iff(OO[0] > CC[0],BLACK,MAGENTA)); //지표속성 -> 차트표시 -> 채우기 -> OO < CC 면 빨강 추가 If CC[0] > 0 Then Plot2(CC[0],"CC"); // OO > CC 면 파랑 추가 if upperLine[0] > 100 then plot3(upperLine[0],"UpperBand"); if lowerLine[0] > 100 then plot4(lowerLine[0],"LowerBand"); if maV[0] > 100 then plot5(maV[0],"MidLine");
프로필 이미지
alltoone
2022-01-27
920
글번호 155872
지표