커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

질문 있습니다.

질문의 핵심: 1분봉 이동평균선 색상 변경 시 딜레이 적용 방법 문의 (파란색 미표시 문제)안녕하세요.1분봉 차트에서 이동평균선의 방향에 따라 색상을 다르게 표시하고, 색상 변경 시 딜레이를 주고 싶습니다.현재 코드:input : P(120);var1 = ma(C,P);if var1 > var1[1] Then var2 = 1; if var1 < var1[1] Then var2 = -1; if var2 == 1 Then plot1(var1,"이평",RED,DEF,4);Else plot1(var1,"이평",BLUE,DEF,4);이 코드는 정상 작동하지만, 횡보 구간에서 빨강<->파랑이 너무 자주 바뀝니다.원하는 기능은 아래와 같습니다. 색상이 변경될 때 즉시 바꾸지 않고, 20분(20봉) 동안 새로운 방향이 유지되면 그때 색상을 변경하고 싶습니다.예를 들어서 파,빨 파,빨 들쑥날쑥 색이 변하는 것 대신 파에서 빨 변하는 상황이 오면 바로 변하지 않고 20분or20봉 딜레이 주면서 끝나면 빨이 맞다면 빨, 파 맞다면 계속 파 이렇게 하는 것입니다.시도한 코드:input : P(120), DelayBars(20);vars: var1(0), var2(0), NewSignal(0), PrevSignal(0), BarCounter(0), FirstRun(True);var1 = ma(C,P);If var1 > var1[1] Then NewSignal = 1Else If var1 < var1[1] Then NewSignal = -1Else NewSignal = PrevSignal;If FirstRun = True Then Begin var2 = NewSignal; PrevSignal = NewSignal; FirstRun = False;End;If NewSignal <> 0 and NewSignal <> var2 Then Begin BarCounter = BarCounter + 1; If BarCounter >= DelayBars Then Begin var2 = NewSignal; BarCounter = 0; End;EndElse Begin BarCounter = 0;End;PrevSignal = NewSignal;If var2 = 1 Then plot1(var1, "이평", RED, DEF, 4)Else plot1(var1, "이평", BLUE, DEF, 4);문제:위 코드를 실행하면 파란색이 전혀 표시되지 않고 빨간색만 표시됩니다. ㅠㅠ (첨부 이미지 참조)이동평균선이 하락할 때는 파란색으로 표시되어야 하는데, 색상 변경이 제대로 작동하지 않습니다.1분봉 환경에서 이동평균선 방향 변경 시 N봉 딜레이를 주는 올바른 방법을 알려주시면 감사하겠습니다.P.S. var2 변수의 초기값이나 방향 전환 로직에 문제가 있는 것 같은데, 어떻게 수정해야 파란색(하락)도 제대로 표시될까요???사용한 차트 환경차트: 1분봉이동평균: 120일원하는 딜레이: 20분 (20봉)감사합니다!
프로필 이미지
스오어스
2025-10-30
105
글번호 227516
지표
답변완료

수식 문의

안녕하세요? 1. 분봉에서 사용할 daydiff(CC, n, per)이라는 사용자 함수를 원합니다. CC = C, Data2(C), ... 등이 될 수 있습니다. 물론 그들을 이리 저리 짬뽕으로 만들어진 녀석이 될 수도 있습니다. 이 함수는 abs(CC - CC[n]) 들의 평균인 ma(abs(CC - CC[n]) ,per)를 리턴 합니다. 날짜가 바뀔 때의 갭을 반영하지 않기 위해서 이 함수를 만듭니다!!! 예컨대 n=3이고, per = 5, CC = data2(C)인 경우, CC와 CC[3]이 모두 같은 날짜여야 합니다. 즉, 우리의 함수는 CC와 CC[n]이 나오는 날짜가 다르면 그냥 0 값을 리턴하고, 즉, dayindex가 2 이하면 계속 0을 리턴 dayindex가 3 이상이 되면 이때부터 진짜 값들을 리턴하는데, 이 때도dayindex가 3이면: CC-CC[3]을 리턴 dayindex가 4이면: ma( CC-CC[3],2)를 리턴 dayindex가 5이면: ma( CC-CC[3],3)를 리턴 dayindex가 6이면: ma( CC-CC[3],4)를 리턴 dayindex가 7 이상이면: 계속 오늘장이 끝날 때까지 주구장창 ma( CC-CC[3],5)를 리턴 예컨대 선물은 8시 45분부터 나오지만, 어떤 참조 데이터는 9시 부터 나오는데, 위의 dayindex는 이 경우 해당 참조 데이터가 나오는 시점을 카운트 하는게 맞지요? 말이 어려워지는데, 그러니까 abs(CC-CC[3]) 들의 평균을 구하고 싶은데, 이게 날짜가 변해서 갭이 왕창 생겨서 평균을 망치는 것을 피하는 것이 목표입니다. 2. 혹시 data2 등에서도 적용이 가능한, 분봉에서 사용할 일종의 Atr 함수를 dayatr(CC, per) 이란 이름으로 만들어 주시면 감사하겠습니다. 이 친구를 만들 때, 날짜가 바뀌어서 발생하는 갭들은 계산에서 제외하고 만들 수 있으면 정말 좋겠습니다. 보통 Atr 계산할 때, H,L,O,C 등이 사용되지만, 우리는 특별히 HLOC가 없다면 그냥 H=L=O=C 로 해서 비슷하게 만드시면 됩니다. 즉, 이 경우에는 말하자면 C-C[1] 들의 평균이면 될 것 같은데, 한가지 C와 C[1] 이 날짜가 달라지면, 이 녀석은 제외하고, 기존의 값을 계속 리턴하거나, 평균 구할 때, 그런 쌍은 제외하도록 하면 좋겠습니다. 감사합니다.
프로필 이미지
에구머니
2025-10-30
96
글번호 227515
사용자 함수
답변완료

문의 드립니다.

안녕하세요 ~ 평소 도움 주심에 감사 드립니다.RSI(10)이 55이상 일때, 현재가격이 아래의 P선을 돌파/또는 우상향하는 종목의 검색식을 부탁 드립니다. P라인 ;(MA(가격, 기간1, 이평종류)+MA(가격, 기간2, 이평종류))/2지표조건 기간1 ; 5기간2 ; 8감사합니다.
프로필 이미지
ikksoo
2025-10-30
92
글번호 227512
종목검색
답변완료

문의

아래수식은 누적패수 5회에 도달할 때까지는 맥스 20회까지 거래를 허용 하는 수식입니다. 누적패수 5회에 도달하는 형태에 따라 거래횟수를 추가로 조절하고 싶습니다. 연속해서 3패를 하면(추세가 없는 장으로 판단하고) 누적패수는 4회로 조정되는 수식을 요청드립니다. 승 패 패 패 승 패 패 5패까지 하면 6회 거래함(현재 수식)승 패 패 패 승 패 4패까지 했으나 중간에 연속3패를 했으므로 거래 종료 5회 거래함 연속3패가 없으면 원래대로 5패까지 허용함. 항상 고맙습니다. *******************************************************************************************************************************************input : 진입시간(084500),진입제한시간(150000);input : 거래횟수(20),누적패수(5);input : b1(100),진입눌림1(18),진입돌파1(14),X1(999999),청산눌림1(0),청산돌파1(0);input : b2(100),진입눌림2(10),진입돌파2(10),X2(999999),청산눌림2(0),청산돌파2(0);var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);var : Tcond(false);var : loss(0); if bdate != bdate[1] Then loss = 0; if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then loss = loss+1; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then Tcond = true; if (sdate != sdate[1] and stime >= 진입제한시간) or (sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then Tcond = false; if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{ T1 = TotalTrades; E1 = 0; LL = L; } if stime >= 진입시간 then{ if L < LL Then LL = L; if MarketPosition == 0 Then entry = TotalTrades-T1; Else entry = (TotalTrades-T1)+1; if MarketPosition == 0 and entry == 0 Then{ if E1 == 0 and C >= LL+PriceScale*B1 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림1 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파1 and Tcond == true Then{ buy("b1"); } } if TotalTrades > TotalTrades[1] Then{ E1 = 0; LL = L; } if L < LL Then LL = L; if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{ if E1 == 0 and C >= LL+PriceScale*B2 Then{ E1 = 1; H1 = H; i1 = index; V1 = LL; //시작점 종가 } if E1 == 1 and index > i1 then{ if H > H1 Then H1 = H; #저가가 시작봉종가보다 클때만 눌림체크 if L >= V1 and L <= H1-PriceScale*진입눌림2 Then{ E1 = 2; i1 = index; S1 = H1; } } //시작점 종가보다 낮은 가격이 발생하면 초기화 if E1 >= 1 and L < V1 Then{ E1 = 0; LL = L; } if loss < 누적패수 and E1 == 2 and index > i1 and C >= S1+PriceScale*진입돌파2 and Tcond == true Then{ buy("b2"); } } if MarketPosition == 1 and IsEntryName("b1") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X1 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림1 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파1 Then{ exitlong("bx1"); E1 = 0; } } } if MarketPosition == 1 and IsEntryName("b2") == true Then{ if entry >= 1 then{ if CurrentContracts > CurrentContracts[1] Then{ EH = H; E1 = 0; } if H > EH Then{ EH = H; E1 = 0; } if E1 == 0 and C <= EH-PriceScale*X2 Then{ E1 = 1; L1 = L; i1 = index; } if E1 == 1 and index > i1 Then{ if L < L1 Then L1 = L; if H >= L1+PriceScale*청산눌림2 Then{ E1 = 2; I1 = index; S1 = L1; } } if E1 == 2 and index > i1 and C <= S1-PriceScale*청산돌파2 Then{ exitlong("bx2"); E1 = 0; } } } }
프로필 이미지
목마와숙녀
2025-10-30
98
글번호 227511
시스템

사공하늘 님에 의해서 삭제되었습니다.

프로필 이미지
사공하늘
2025-10-30
2
글번호 227509
검색

사공하늘 님에 의해서 삭제되었습니다.

프로필 이미지
사공하늘
2025-10-30
2
글번호 227508
검색
답변완료

갠들 종가선차트를 시스템식에서 구현하고자 합니다.

갠들의 종가선차트를 시스템식에서 구현하고자 합니다.구현하고자 하는 이유는 갠들이 이평과 만나고 헤어지고 하는 데, 갠들구현이 어려울 것 같아 종가선을 구현해서 비교하고자 합니다.단순한 것 같은데, 실마리가 풀리지 않아서 문의드립니다.
프로필 이미지
한발한발
2025-10-30
76
글번호 227507
시스템
답변완료

수식문의 입니다.

#Data6 : 선물매수호가총건수#Data7 : 선물매도호가총건수var : TL1(0,data1),TL2(0,data1),TL3(0,data1),TL4(0,data1);var : diff(0,data1),hh(0,data1),ll(0,data1);var : TX1(0,data1),TX2(0,data1),TX3(0,data1),TX4(0,data1);diff = data6(c)-data7(c);if bdate != bdate[1] Then{ hh = diff; ll = diff; TL_Delete(TL1); TL_Delete(TL2); TL_Delete(TL3); TL_Delete(TL4); TL1 = TL_New(sdate,stime,H,NextBarSdate,NextBarStime,H); TL2 = TL_New(sdate,stime,L,NextBarSdate,NextBarStime,L); TL3 = TL_New(sdate,stime,H,Sdate,Stime,H); TL4 = TL_New(sdate,stime,L,Sdate,Stime,L); Text_Delete(TX1); Text_Delete(TX2); Text_Delete(TX3); Text_Delete(TX4); TX1 = Text_New(NextBarSdate,NextBarStime,TL_GetValue(TL1,sdate,stime),NumToStr(HH,0)); TX2 = Text_New(NextBarSdate,NextBarStime,TL_GetValue(TL2,sdate,stime),NumToStr(LL,0)); TX3 = Text_New(NextBarSdate,NextBarStime,TL_GetValue(TL3,sdate,stime),NumToStr(HH,2)); TX4 = Text_New(NextBarSdate,NextBarStime,TL_GetValue(TL4,sdate,stime),NumToStr(LL,2)); Text_SetStyle(TX1,0,0); Text_SetStyle(TX2,0,0); Text_SetStyle(TX3,0,0); Text_SetStyle(TX4,0,0);}else{ if diff > hh Then { hh = diff; TL_SetBegin(TL3,sdate,stime,TL_GetValue(TL1,sdate,stime)); TL_Setend(TL3,NextBarSdate,NextBarStime,TL_GetValue(TL1,sdate,stime)); TL_SetBegin(TL1,sdate,stime,h); TL_Setend(TL1,NextBarSdate,NextBarStime,h); Text_SetString(TX3,NumToStr(HH[1],0)); Text_SetString(TX1,NumToStr(HH,0)); } if diff < ll Then { ll = diff; TL_SetBegin(TL4,sdate,stime,TL_GetValue(TL2,sdate,stime)); TL_Setend(TL4,NextBarSdate,NextBarStime,TL_GetValue(TL2,sdate,stime)); TL_SetBegin(TL2,sdate,stime,l); TL_Setend(TL2,NextBarSdate,NextBarStime,l); Text_SetString(TX4,NumToStr(LL[1],0)); Text_SetString(TX2,NumToStr(LL,0)); }}TL_SetExtRight(TL1,true);TL_SetExtLeft(TL1,true);TL_SetExtRight(TL2,true);TL_SetExtLeft(TL2,true); TL_SetSize(TL1,2);TL_SetSize(TL2,2);TL_SetColor(TL1,RED);TL_SetColor(TL2,BLUE);TL_SetExtRight(TL3,true);TL_SetExtLeft(TL3,true);TL_SetExtRight(TL4,true);TL_SetExtLeft(TL4,true); TL_SetSize(TL3,2);TL_SetSize(TL4,2);TL_SetColor(TL3,MAGENTA);TL_SetColor(TL4,CYAN);Text_SetLocation(TX1,NextBarSdate,NextBarStime,TL_GetValue(TL1,sdate,stime));Text_SetLocation(TX2,NextBarSdate,NextBarStime,TL_GetValue(TL2,sdate,stime));Text_SetLocation(TX3,NextBarSdate,NextBarStime,TL_GetValue(TL3,sdate,stime));Text_SetLocation(TX4,NextBarSdate,NextBarStime,TL_GetValue(TL4,sdate,stime));plot1(hh,"최고건수차",RED);plot2(ll,"최저건수차",blue);여기에 최고 에 2줄 최저에 2줄 나오는데 사이를 색으로 채울수 있나요
box
프로필 이미지
오늘도수익
2025-10-30
104
글번호 227501
지표
답변완료

수식 부탁드립니다

그림처럼 일봉차트에서 이전 볼밴(20,2) 상한선을 돌파하는 봉의 다음 봉이 음봉일 때 이 음봉의 시가를 돌파하는 첫 양봉을 검색하는 수식을 부탁드립니다.
프로필 이미지
고도산
2025-10-30
114
글번호 227496
종목검색
답변완료

수식작성 부탁 드립니다

아래의 수식에서 매수 기준에 1가지 더 추가하여 수식을 작성 부탁 드립니다 # 매수 If superTrend < data2(C) and data2 input : ntime(5),factor(3), AtrPeriod(10); 추가수식 data2 input : ntime(5),factor(5), AtrPeriod(20); 2개의 기준으로 매수 진입 하도록 수식 작성 부탁 드립니다.하루가 지난뒤 부터 챠트 시간이 다음날 0시부터 기록되어 나타납니다 정상 시간이 나타나도록 하는 방법을 알려 주세요. # Data1 Input : shortPeriod(5), longPeriod(20); value1 = ema(C, shortPeriod); value2 = ema(C, longPeriod); # Data2 input : ntime(5),factor(3), AtrPeriod(10); var : zS1(0,Data2),zD1(0,Data2),zTM(0,Data2),zTF(0,Data2),zHH(0,Data2),zLL(0,Data2),zC1(0,Data2); var : zsrc(0,Data2), AtrV(0,Data2),ATRv1(0,Data2),upperBand(0,Data2),lowerBand(0,Data2), prevLowerBand(0,Data2), prevUpperBand(0,Data2); var : prevSuperTrend(0,Data2), superTrend(0,Data2), direction(0,Data2),alpha(0,Data2),source(0,Data2); if data2(Bdate != Bdate[1]) Then { zS1 = data2(TimeToMinutes(stime)); zD1 = data2(sdate); } if zD1 > 0 then { if data2(sdate) == zD1 Then zTM = data2(TimeToMinutes(stime))-zS1; Else zTM = data2(TimeToMinutes(stime))+1440-zS1; zTF = zTM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and ntime > 1 and zTF < zTF[1]) or (Bdate == Bdate[1] and ntime > 1 and zTM >= zTM[1]+ntime) or (Bdate == Bdate[1] and ntime == 1 and zTM > zTM[1]) Then { zHH = data2(H); zLL = data2(L); zC1 = data2(C[1]); ATRV1 = ATRV[1]; prevSuperTrend = superTrend[1]; prevLowerBand = lowerBand[1]; prevUpperBand = upperBand[1]; } if data2(H) > zHH Then zHH = data2(H); if data2(L) < zLL Then zLL = data2(L); zsrc = (zHH+zLL)/2; if zC1 > 0 Then { alpha = 1 / AtrPeriod ; source = max(zHH - zLL, abs(zHH - zC1), abs(zLL - zC1)); ATrV = alpha * source + (1 - alpha) * ATrV1; upperBand = zsrc + factor * AtrV; lowerBand = zsrc - factor * AtrV; if lowerBand > prevLowerBand or zC1 < prevLowerBand Then lowerBand = lowerBand; Else lowerBand = prevLowerBand; if upperBand < prevUpperBand or zC1 > prevUpperBand Then upperBand = upperBand; Else upperBand = prevUpperBand; if prevSuperTrend == prevUpperBand Then { if C > upperBand Then direction = -1; Else direction = 1; } Else { if C < lowerBand Then direction = 1; Else direction = -1; } if direction == -1 Then superTrend = lowerBand; Else superTrend = upperBand; } } # 매수 If superTrend < data2(C) and CrossUP(value1, value2) Then { Buy(); } # 매수청산 If CrossDown(value1, value2) Then { Exitlong(); }
프로필 이미지
뎅이요
2025-10-30
107
글번호 227494
시스템