커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

조건 만족 이후 매매 금지

안녕하세요, 조건을 만족하는 경우가 발생하면, 발생 시점 이후 매매를 금지시키고 싶습니다. 예를 들면, 참조지표(Data2)에서 5이평선이 20이평선을 데드크로스 한 경우, 혹은 차트 내 "A"라는 청산신호가 발생했을 경우, 해당 시점 이후 매수 진입 금지 매번 도움 많이 받고 있습니다. 감사합니다.
프로필 이미지
김예스
2022-02-01
1205
글번호 155944
시스템
답변완료

문의드립니다

분봉 차트 상에서 종목의 일일 등락률(전일 종가와 오늘의 종가로 계산되는)의 평균과 표준편차를 표현하고자 합니다. ma(일일 등락률,20); std(일일 등락률,20); 말하자면 이렇게 수식을 이용하고자 할때 분봉차트 상에서 일일등락률에 해당되는 부분을 어떻게 표현할지 문의 드립니다. 항상 감사드립니다.
프로필 이미지
시고르시고르
2022-01-31
1321
글번호 155943
시스템
답변완료

옵션 매도 진입 및 청산 함수를 알려주세요

옵션 풋매도 가격이 만약 0.35이면 진입하는 함수를 어떻게 구현 해야 되나요?
프로필 이미지
리키로마88
2022-01-31
1338
글번호 155942
사용자 함수
답변완료

수식변경

늘 감사합니다. 아래의 수식은 data2만 있는데 이 수식에 data3부터 data11 까지 수식을 추가해 주세요. 즉, 3번부터 11번 까지 추가입니다. 지금도 잘 쓰고 있습니다. 거듭 감사합니다. var : month(0,data2),nday(0,data2),week(0,data2),X(false,data2),T(0,data2); var : D1(0,data2),L1(0,data2),MH(0,data2),ML(0,data2); month = data2(int(date/100)-int(date/10000)*100); nday = data2(date - int(date/100)*100); week = data2(DayOfWeek(date)); if nday >= 8 and nday <= 14 and week == 4 then X = true; Else X = false; if data2(bdate != bdate[1] and X == false and X[1] == true) Then { D1 = data2(sdate); MH = data2(H); ML = data2(L); } if D1 > 0 then { if data2(Sdate == D1) Then L1 = data2(lowD(0)); if data2(H) > MH Then MH = data2(H); if data2(L) < ML Then ML = data2(L); plot1(L1); plot2(MH, "2고"); plot3(ML, "2저"); }
프로필 이미지
상암동
2022-01-31
1092
글번호 155941
지표
답변완료

선부탁 드립니다.

* 항상 많은 도움에 고맙습니다. * 아래 기준 수평선 요청 드립니다. 1. 당일 시작봉을 기준 으로 시작 하여 2. 1 ~ 100봉 까지 최고가와 최저가 수평선 101 ~ 200봉 까지 최고가 수평선 한줄 최저가 수평선 한줄 201 ~ 300봉 까지 최고가 수평선 한줄 최저가 수평선 한줄 계속 100봉단위로 수평선 표시 * 고맙습니다. 수고하십시요
프로필 이미지
요타
2022-01-31
962
글번호 155940
시스템
답변완료

나스닥100 선물 60분봉으로 아래와 같이 했는데 수식이 반영이 안되서요

나스닥100 선물 60분봉으로 아래와 같이 했는데 수식이 반영이 안되서요 무슨 오류인지 알려주시면 감사하겠습니다. # 100분봉이내에서 최고점에서 -5% 이하로 떨어질때 조건이 반영되려고 하는것인데 Y를 변수로 하였는데 모든 변수가 같은 값이 나옴니다.( 결국 해당 조건이 반영이 안되는 것으로 결과가 나옴니다.) 무슨 오류가 있는건가요? input : MFI기간(25),MFI값(20),추가매수하락퍼센트(3),급락매수하락퍼센트(7); input : MFI청산기간(8),MFI청산값(82); input : 청산요일(5); input : 추가매수횟수(4),X(100),Y(-5); #X는 적용봉수 Y는 적용봉수 내에 최고점에서 하락폭(%) var : MoneyFlow(0),MoneyFlow1(0); MoneyFlow = MFI(MFI기간); MoneyFlow1 = MFI(MFI청산기간); if MarketPosition == 0 and MoneyFlow <= MFI값 and C <= Highest(H,X)+(1+Y/100) Then Buy("b",OnClose,DEf,1); if MarketPosition == 1 and MaxEntries < 추가매수횟수 Then Buy("-3% 하락추가매수",AtLimit,LatestEntryPrice(0)*(1-추가매수하락퍼센트/100)); if MarketPosition == 1 Then Buy("-7%하락 추가매수",AtLimit,LatestEntryPrice(0)*(1-급락매수하락퍼센트/100)); if MarketPosition == 1 and MoneyFlow1 > MFI청산값 Then ExitLong("MFI청산",atlimit,AvgEntryPrice*1.003);
프로필 이미지
이형지
2022-01-31
1230
글번호 155939
시스템
답변완료

변동성 지수 vkospi 문의

변동성 지수 vkospi 를 보려고 하는데 어디서 보나요? (예스트레이더를 사용하고 있습니다.) 시스템식에서 어떻게 사용해야 되나요?
프로필 이미지
아키라
2022-01-30
1168
글번호 155938
시스템
답변완료

함수문의 드립니다

안녕하세요~~ 설날은 잘 쉬셨는지요~ 1. cme 나스닥자료를 datamanager로 입력시 미국시간으로 시뮬레이션해도 섬머타임을 고려해야 하는지요? 2. highest와 lowest의 봉시간을 알수 있나요? 3. 아래 식중 if D1 > 0 then 의 용도를 알려주세요. 감사합니다~ //썸머타임체크 if bdate != bdate[1] Then { Year = Floor(sdate/10000); V1 = (10000 * Year) + (100 * 3) + 1; V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜 v3 = (10000 * Year) + (100 * 11) + 1; v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜 Summer = bdate > (10000 * Year) + (100 * 3) + v2 And bdate < (10000 * Year) + (100 * 11) + v4; if summer == true Then { ST = 223500; ET = 050000; } Else { ST = 233500; ET = 060000; } S1 = TimeToMinutes(stime); #섬머타임시 07시=420, 평시 8시=480 입력 D1 = Sdate;//0시직후 변경된 첫봉의 날자를 입력, 다음영업일 변경 직전봉까지 유지 } } if D1 > 0 then { if sdate == D1 Then //시작시간 23시35분을 0시 기준으로 변경 TM = TimeToMinutes(stime)-S1; //해당시간(23시35분~24)-1415 Else TM = TimeToMinutes(stime)+1440-S1; //해당시간(0~07시)+1445(24시간)-1415 if (sdate != sdate[1] and stime >= ST) or (sdate == sdate[1] and stime >= ST and stime[1] < ST) Then { Tcond = true; T1 = TM; } #진입청산식
프로필 이미지
코퍼
2022-02-01
1466
글번호 155937
시스템
답변완료

문의 드립니다.~~~~

새해 복 많이 받으세요~ 해외선물 모든 종목 모든 시간대에서 또는 국선 모든 시간대에서 1 매수진입 : 1분봉(변수처리) 3연속(변수처리) 양봉이고 3개 양봉의 첫 양봉 저점과 3번째 양봉 고점의 틱합이 50틱(변수처리)일 때 매수 2 매도진입 : 1분봉(변수처리)3연속(변수처리) 음봉이고 3개 음봉의 첫 음봉 고점과 3번째 음봉 저점의 틱합이 50틱(변수처리)일 때 매도 위의 진입과 청산이 영업일 내내 반복되는 수식을 부탁 드립니다 수고하세요~
프로필 이미지
예스요
2022-01-31
1192
글번호 155936
시스템
답변완료

문의 드립니다.

삼성전자 등 종목들 30분 차트, 일 차트에도 사이즈를 늘려서 해보면, 이 지표가 안 나옵니다. 나오는 경우라도, 지수 차트처럼 나오는게 아니라, 알 수 없는 선으로 나옵니다. 다시 한번 검토 부탁드립니다. 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 드립니다. > 안녕하세요 예스스탁입니다. renkoSize를 조절하셔야 합니다. 현재 renkoSize의 기본값이 0.5로 선물에서 0.5포인트 변경을 기준으로 되어 있습니다. 지정한 값이상의 가격변화를 기준으로 하므로 종목에 맞게 해당값을 지정하셔야 합니다. 즐거운 명절 되시길 바랍니다. > alltoone 님이 쓴 글입니다. > 제목 : 문의 드립니다. > 아래 렌코차트는 선물에서는 제대로 작동하는데, 일반 주식에서는 종가선 비슷하게 나옵니다. 그 이유가 뭘까요... 선물처럼 주식차트에서도 나오게 할 방법은 없을까요? 답변 감사합니다. 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-30
1055
글번호 155935
지표