커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

문의 드립니다.

안녕하세요 하나 더 문의 드립니다. 아래의 신호 수식에 대한 종목 검색식 부탁 드립니다. x1 = crossup(c, eavg(c,con1)); x2 = v >= avg(v, 20) * con2;x3 = v >= con3;x4 = (c/c(1)-1)*100 >= con4;x5 = (c/o-1)*100 >= con5;x1 and x2 and x3 and x4 and x5지표변수 con1 240con2 3con3 50000con4 10con5 8감사합니다
프로필 이미지
ikksoo
2025-11-10
43
글번호 227816
종목검색
답변완료

지표질문입니다

음봉 연속+첫 양봉 일때 2캔들 저가(A) 표시양봉 연속후 첫 음봉일 때 2캔들 고가(B) 표시B*2-A 표시A*2-B 표시감사합니다
프로필 이미지
para
2025-11-10
61
글번호 227814
지표
답변완료

시스템매매 관련 문의합니다..^^*

아래수식에 보시면 시작일이 25년7월2일 설정이 되어있는데,추가적인 사항으로 한시간단위로는 설정이 가능한지요^^*한시간단위도 설정가능하면 변수로 지정해 주시면 고맙겠습니다..항상 감사드립니다...input : 시작일(20250702),갭상승(2),P(20),하락per(1),분할(20);input : starttime(91500),EndTime(151500);Var : value(0),mav(0);var : Tcond(False);if Bdate != Bdate[1] 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 (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False;Var1=rsi(14);mav = ma(c,p);value = 0;if sDate >= 시작일 and DayOpen <= DayClose(1)*(1+갭상승/100) and Tcond == true Then{ # 매수 / 매도청산 If CCI(9) > 0 Then value = 1; If MACD(12,26) > 0 Then value = value+1; If DIPlus(14) > DIMinus(14) Then value = value+1; If StochasticsK(12,5) > StochasticsD(12,5,5) Then value = value+1; # 매수/매도청산 If value >= 3 and mav > mav[1] Then { Buy("b1"); } value = 0; if MarketPosition == 1 and MaxEntries < 분할 OR MarketPosition <= 0 and value >= 3 and mav > mav[1] Then { Buy("b2",AtStop,EntryPrice(0)*(1-(하락per*MaxEntries)/100)); } if rsi(14)<32 Then buy("b3");}# 매도/매수청산If CCI(9) < 0 Then value = 1;If MACD(12,26) < 0 Then value = value+1;If DIPlus(14) < DIMinus(14) Then value = value+1;If StochasticsK(12,5) < StochasticsD(12,5,5) Then value = value+1;If value >= 3 Then{ SetStopProfittarget(7, PercentStop);}
프로필 이미지
서민순
2025-11-10
54
글번호 227811
시스템
답변완료

추가 부탁드립니다

var : Per(0.1); var : HD(0),HT(0),HH(0),HH2(0); var : LD(0),LT(0),LL(0),LL2(0); var : HTL(0),LTL(0),TL(0); var : tx1(0),tx2(0),HTx(0),Ltx(0); var : T(0); var : HB(0),LB(0); var1 = ma(c, 60); if var1 > var1[1] Then T = 1; if var1 < var1[1] Then T = -1; Plot1(var1,"이동평균선"); if T == 1 Then { if T != T[1] Then { HD = sDate; HT = sTime; HH = h; HH2 = HH[1]; HTL = tl_new(HD,HT,HH,NextBarSdate,NextBarStime,HH); TL_SetColor(HTL, Red); HTx = Text_New(NextBarSdate,NextBarStime,HH,NumToStr(HH,2)); Text_SetColor(HTx, Red); Text_SetStyle(HTx, 1, 1); HB = 0; } Else { if h > HH Then { HH = h; } HB = HB+1; } TL_SetBegin(HTL,HD,HT,HH); TL_SetEnd(HTL,NextBarSdate,NextBarStime,HH); Text_SetLocation(HTx,NextBarSdate,NextBarStime,HH); } if T == -1 Then { if T != T[1] Then { LD = sDate; LT = sTime; LL = l; LL2 = LL[1]; LTL = tl_new(LD,LT,LL,NextBarSdate,NextBarStime,LL); TL_SetColor(LTL, Blue); Ltx = Text_New(NextBarSdate,NextBarStime,LL,NumToStr(LL,2)); Text_SetColor(Ltx, Blue); Text_SetStyle(Ltx, 1, 0); LB = 0; } Else { if l < LL Then { LL = l; } LB = LB+1; } TL_SetBegin(LTL,LD,LT,LL); TL_SetEnd(LTL,NextBarSdate,NextBarStime,LL); Text_SetLocation(Ltx,NextBarSdate,NextBarStime,LL); }1. 위의 수식에서 직전 고점연결, 저점연결 추세선을 추가하고자 합니다. 단 추가시 직전 n개 연결로 부탁드립니다. 2. 1의 추세선이 되었다면 TL_SetExtRight(식별번호, False), TL_SetExtRight(식별번호, true), 이 수식을 쓰면 마지만 추세선만 우측 연결이 되는데 이또한 직전 추세선 n개 를 우측 연장으로 부탁드립니다.
프로필 이미지
와우리
2025-11-10
60
글번호 227805
지표
답변완료

문의드립니다.

아래 코드를 지표로 만들려면 어떻게 해야 하나요?Inputs: Length(20), // 채널 계산 기간 NumATRs(2); // ATR 배수 Vars: LowerBand(0), // 하단 밴드 UpperBand(0), // 상단 밴드 MiddleBand(0), tpusdc(10000), slUsdC(3000); LowerBand = keltnerchannel(Close, Length, -NumATRs); UpperBand = keltnerchannel(Close, Length, NumATRs); MiddleBand = KeltnerChannel(C, Length, 0); If marketposition == 0 and CrossUp(Close, upperBand) and adx(14) < 30 then Buy("L", AtMarket, Def, 1); If marketposition == 0 and CrossDown(Close, lowerBand) and adx(14) < 30 then Sell("S", AtMarket, Def, 1); //손절 If marketposition > 0 and barssinceentry >= 2 and Close <= EntryPrice - (slUsdC / BigPointValue) Then ExitLong("SL_L", AtMarket); If marketposition < 0 and barssinceentry >= 2 and Close >= EntryPrice + (slUsdC / BigPointValue) Then ExitShort("SL_S", AtMarket); if CrossDown(c, middleband) Then ExitLong("Exit_L",AtMarket); if CrossUp(c, middleband) Then ExitShort("Exit_S",AtMarket); //익절 If marketposition > 0 and barssinceentry >= 2 and Close >= EntryPrice + (tpUsdC / BigPointValue) Then ExitLong("PT_L", AtMarket); If marketposition < 0 and barssinceentry >= 2 and Close >= EntryPrice - (tpUsdC / BigPointValue) Then ExitShort("PT_S", AtMarket);아래가 제가 지표로 만든겁니다.1. 신호는 어떻게 표시하나요?2. 이대로 지표 삽입하면 캡쳐화면과 같이 이상하게 캔들과 따로 놉니다. 어떻게 해야 하나요?input: length(80), numatrs(2); vars: LowerBand(0), // 하단 밴드 UpperBand(0), // 상단 밴드 MiddleBand(0), // 중심 밴드 adxVal(0); // ADX 값 #-------------------------------------------------------- # 밴드 계산 #-------------------------------------------------------- LowerBand = KeltnerChannel(Close, Length, -NumATRs); UpperBand = KeltnerChannel(Close, Length, NumATRs); MiddleBand = KeltnerChannel(Close, Length, 0); adxVal = ADX(14); #-------------------------------------------------------- # Plot 출력 #-------------------------------------------------------- plot1(UpperBand, "UpperBand", RGB(255,0,0)); // 상단 밴드 plot2(MiddleBand, "MiddleBand", RGB(255,255,255)); // 중심 밴드 plot3(LowerBand, "LowerBand", RGB(0,255,0)); // 하단 밴드 plot4(adxVal, "ADX(14)", RGB(255,255,0)); // ADX 값 (참고용)
프로필 이미지
킹맨
2025-11-10
58
글번호 227796
지표
답변완료

문의 드립니다.

안녕하세요 ~ 수고 많으십니다. RSI(5)가 70 이상일때, 아래의 1라인이 2라인을 돌파하는 종목의 검색식을 부탁드립니다.1라인. A=Highest(V,기간);B=Valuewhen(1, V>A(1),(O+C+L+H+C)/5);B2라인. A=Highest(V,기간1); B=Valuewhen(1, V>A(1),(O+C+L+H+C)/5); B지표조건 기간 20 기간1 60감사합니다.
Valuewhen변환
프로필 이미지
ikksoo
2025-11-10
48
글번호 227795
종목검색
답변완료

종목검색식 부탁드려요.

키움증권수식입니다. 변환부탁드립니다. A=V<lowest(V(1),기간1);LV1=valuewhen(1,A,C);A1=crossup(C,LV1); D1=highest(h,D기간); D2=lowest(l,D기간); 중심2=D2+(D1-D2)/2; K1=highest(h,K기간); K2=lowest(l,K기간); 중심3=K2+(K1-K2)/2; G1=highest(h,G기간); G2=lowest(l,G기간); 중심4=G2+(G1-G2)/2; E10=(dayclose()+nP(1)+nP(2)+nP(3)+nP(4)+nP(5)+nP(6)+nP(7)+nP(8)+nP(9))/10; W5=(C+nPreWC(1)+nPreWC(2)+nPreWC(3)+nPreWC(4))/5; S=(O-avg(L,기간2))/stdev(L,기간2); BB=valuewhen(1,crossup(S,0),C); 조건1=(중심3<=C or E10<=C); 조건2=(W5<C and BB<=C); 조건3=(D2==G2 and E10<=C and BB<=C); (조건1 and 조건2 and A1) or (조건3 and A1) 지표변수 : 기간1 - 60 / D기간 - 30/ K기간 - 60 / G기간 - 120/ 기간2 -30 일봉함수:nP(n)------- n일전종가 주봉함수:nPreWC(n)------- n주전종가 180분봉으로 검색하고 싶은데 120분봉까지만 가능한가요?
프로필 이미지
딸바보07
2025-11-09
68
글번호 227794
종목검색
답변완료

파워검색 수식 부탁드립니다

주봉으로 부탁드립니다.M20=MA(C,20,지수); M60=MA(C,60,지수); M120=MA(C,120,지수); 조건1=M120>M60&&M60>M20; 조건2=V>MA(C,5)*3; 조건3=(H-C)>(L-O); G=조건1&&조건2&&조건3; !G&&G(1)
프로필 이미지
밤의선수
2025-11-09
63
글번호 227793
검색
답변완료

부탁드립니다

수고하십니다 아래수식을 오류 없게 수정부탁드립니다inputs: Length(15), ShowLevels(True), UpColor(Color.Green), DnColor(Color.Blue);variables: emaValue(0), correction(0), zlma(0), zlmaLag3(0), zlmaColor(0), emaColor(0), signalUp(False), signalDn(False), atrValue(0), topLevel(0), botLevel(0), lastBoxTop(0), lastBoxBot(0), lastSignal(0), barsSinceSignal(0);{Calculate Zero-Lag Moving Average}emaValue = Average(Close, Length);correction = Close + (Close - emaValue);zlma = Average(correction, Length);{Get previous ZLMA value (3 bars ago)}zlmaLag3 = zlma[3];{Determine ZLMA color based on direction}if zlma > zlmaLag3 then zlmaColor = UpColorelse if zlma < zlmaLag3 then zlmaColor = DnColorelse zlmaColor = RGB(128, 128, 128); {Gray for neutral}{Determine EMA color}if emaValue < zlma then emaColor = UpColorelse emaColor = DnColor;{Calculate signals}signalUp = CrossOver(zlma, emaValue);signalDn = CrossUnder(zlma, emaValue);{Calculate ATR for trend levels}atrValue = AvgTrueRange(200);{Plot the moving averages}Plot1(zlma, "ZLMA", zlmaColor);Plot2(emaValue, "EMA", emaColor);{Plot signals as diamonds}if signalUp then PlotPaint(zlma, "SignalUp", UpColor, 0, 3)else if signalDn then PlotPaint(zlma, "SignalDn", DnColor, 0, 3);{Handle trend levels (boxes)}if ShowLevels then begin if signalUp then begin topLevel = zlma; botLevel = zlma - atrValue; lastBoxTop = topLevel; lastBoxBot = botLevel; lastSignal = 1; {1 for up signal} barsSinceSignal = 0; end else if signalDn then begin topLevel = zlma + atrValue; botLevel = zlma; lastBoxTop = topLevel; lastBoxBot = botLevel; lastSignal = -1; {-1 for down signal} barsSinceSignal = 0; end; barsSinceSignal = barsSinceSignal + 1; {Draw trend level based on last signal} if lastSignal = 1 then begin {Draw horizontal line for bullish trend level} DrawLine("BullTrendTop", BarIndex-barsSinceSignal, lastBoxTop, BarIndex, lastBoxTop, UpColor); DrawLine("BullTrendBot", BarIndex-barsSinceSignal, lastBoxBot, BarIndex, lastBoxBot, UpColor); end else if lastSignal = -1 then begin {Draw horizontal line for bearish trend level} DrawLine("BearTrendTop", BarIndex-barsSinceSignal, lastBoxTop, BarIndex, lastBoxTop, DnColor); DrawLine("BearTrendBot", BarIndex-barsSinceSignal, lastBoxBot, BarIndex, lastBoxBot, DnColor); end; {Add labels when price crosses trend levels} if lastSignal = 1 and CrossUnder(High, lastBoxBot) and emaValue > zlma then DrawText("DownArrow", "▼", BarIndex, High, 0, DnColor); if lastSignal = -1 and CrossOver(Low, lastBoxTop) and emaValue < zlma then DrawText("UpArrow", "▲", BarIndex, Low, 0, UpColor);end;
프로필 이미지
파생돌이
2025-11-09
88
글번호 227792
지표
답변완료

수정부탁드립니다

수고 많으십니다.1계약으로 시작해서 수익나면 2계약으로 늘리고 또수익나면 3계으로 늘리고, 4번재 수익나면 다시 1계약으로 돌아오고 5번쨰 수익나면 2계약으로 느릴고 6번쨰 수익나면 3계약으로 늘리고..이렇게 반복하고 손실나면 바로 1계약으로 돌아오고.. 이런 전략을 쓰려고 하는데 코딩에 오류가 많네요..올바로 수정부탁드립니다. 감사드립니다.//-------------------------------------------------------------------------// [1] 입력 변수 (INPUTS)//-------------------------------------------------------------------------Input : Period(5), Period1(3), Period2(3);Input : InitialContracts(1); // 최초 베팅 계약 수 (1)//-------------------------------------------------------------------------// **[2] 초기화 로직 (오류 방지 필수)**//-------------------------------------------------------------------------If InitialEntry Then Begin G_Contracts = InitialContracts; // **Global Variable 창에 등록 필수** G_WinStreak = 0; // **Global Variable 창에 등록 필수**End;//-------------------------------------------------------------------------// [3] 배열 및 변수 선언//-------------------------------------------------------------------------Array : MonthO[99](0), MonthC[99](0); // 월봉 추적용Var : Cnt(0), StoK(0), StoD(0);Var : TicksToPoints(0); //-------------------------------------------------------------------------// [4] 지표 계산 (Stochastics)//-------------------------------------------------------------------------StoK = StochasticsK(Period, Period1);StoD = StochasticsD(Period, Period1, Period2);// TicksToPoints = 1 / MinTick; // MinTick 오류 방지를 위해 계산 줄 주석 처리 //-------------------------------------------------------------------------// [5] 월간 캔들 추적 로직 (추세 필터) - **Begin/End 및 Month() 함수 사용으로 오류 해결**//-------------------------------------------------------------------------// 월이 바뀌었을 때 (정확한 월 변경 감지)if Month() <> Month()[1] ThenBegin // Begin 블록 시작 For cnt = 99 DownTo 1 Begin MonthO[cnt] = MonthO[cnt-1]; MonthC[cnt] = MonthC[cnt-1]; End; MonthO[0] = O; // 새로운 월봉 시가 저장End; // End 블록 끝MonthC[0] = C; // 현재 월봉 종가 업데이트//-------------------------------------------------------------------------// [6] 계약 수 결정 함수 정의 (자금 관리) - **Begin/End 사용으로 오류 해결**//-------------------------------------------------------------------------Function GetContractSize()Begin // Begin 블록 시작 // 전역 변수에 저장된 현재 계약 수를 반환 return G_Contracts;End; // End 블록 끝//-------------------------------------------------------------------------// [7] 자금 관리 로직 (역마틴게일 업데이트) - **Begin/End 사용으로 오류 해결**//-------------------------------------------------------------------------If (MarketPosition == 0) Then // 포지션이 청산된 상태에서만 작동Begin // Begin 블록 시작 // 1. 승리 시 (직전 손익이 0 초과) if (MP_LossProfit(1) > 0) Then Begin G_WinStreak = G_WinStreak + 1; // 연속 승리 횟수 증가 // 3단계 역마틴게일 로직 if (G_WinStreak == 1) Then G_Contracts = 2; // 1단계 승리 후 2계약 else if (G_WinStreak == 2) Then G_Contracts = 3; // 2단계 승리 후 3계약 else if (G_WinStreak >= 3) Then // 3단계 승리 도달 시 초기화 Begin G_Contracts = InitialContracts; G_WinStreak = 0; End; End // 2. 패배 시 (직전 손익이 0 이하) else if (MP_LossProfit(1) <= 0) Then Begin G_Contracts = InitialContracts; G_WinStreak = 0; End;End; // End 블록 끝//-------------------------------------------------------------------------// [8] 진입 및 청산 신호 (수량 적용) - **Begin/End 사용으로 오류 해결**//-------------------------------------------------------------------------If (MarketPosition == 0) ThenBegin // 진입 로직 시작 // 매수 진입 조건 (월봉 양봉 & StoK > StoD 상향 돌파) If (MonthC[0] > MonthO[0] and CrossUp(StoK, StoD)) Then Begin Buy("LE", NextBar, Market, GetContractSize()); End; // 매도 진입 조건 (월봉 음봉 & StoK < StoD 하향 돌파) If (MonthC[0] < MonthO[0] and CrossDown(StoK, StoD)) Then Begin Sell("SE", NextBar, Market, GetContractSize()); End;End; // 진입 로직 끝// 청산 로직 (익절/손절) - **MinTick 오류 우회를 위해 포인트 값 그대로 사용**If (MarketPosition <> 0) ThenBegin // 청산 로직 시작 // 익절 청산 (Profit Target: 15포인트로 가정) SetProfitTarget(15); // 손절 청산 (Stop Loss: 10포인트로 가정) SetStopLoss(10);End; // 청산 로직 끝
프로필 이미지
사이버
2025-11-09
79
글번호 227791
시스템