답변완료
문의드립니다
오류가 많습니다 수정부탁드립니다Inputs: Left(2), Right(2), MinBarsGap(3), // 이전 피벗과 최소 바수 간격 MinTickGap(8), // 이전 피벗과 최소 틱 간격 (ES tick=0.25 → 8=2pt) WarmupBars(20), UseVWAPFilter(1), // 1/0 UseMAFilter(1), MALen(60), UseATR(1), ATRlen(14), SLmult(1.2), TPmult(2.0);Vars: hi1P(0), hi1Bar(0), hi2P(0), hi2Bar(0), lo1P(0), lo1Bar(0), lo2P(0), lo2Bar(0), T(0), isPH(0), isPL(0), tick(0.25), SumPV(0), SumV(0), VW(0), ma(0), atr(0), entryP(0);If CurrentBar == 1 Then Begin SumPV = Close * Volume; SumV = Volume;EndElse Begin SumPV = SumPV[1] + Close * Volume; SumV = SumV[1] + Volume;End;If SumV > 0 Then VW = SumPV / SumV;Else VW = Close;ma = Average(Close, MALen);atr = Average(TrueRange, ATRlen);isPH = 0; isPL = 0;If CurrentBar > Left + Right Then Begin If Highest(High, Left + Right + 1)[Right] = High[Right] Then isPH = 1; If Lowest (Low , Left + Right + 1)[Right] = Low [Right] Then isPL = 1;End;If isPH = 1 Then Begin If hi1Bar > 0 Then Begin If (CurrentBar - Right - hi1Bar) < MinBarsGap Then isPH = 0; If AbsValue((High[Right] - hi1P) / tick) < MinTickGap Then isPH = 0; End;End;If isPL = 1 Then Begin If lo1Bar > 0 Then Begin If (CurrentBar - Right - lo1Bar) < MinBarsGap Then isPL = 0; If AbsValue((lo1P - Low[Right]) / tick) < MinTickGap Then isPL = 0; End;End;If isPH = 1 Then Begin hi2P = hi1P; hi2Bar = hi1Bar; hi1P = High[Right]; hi1Bar = CurrentBar - Right; T = 1;End;If isPL = 1 Then Begin lo2P = lo1P; lo2Bar = lo1Bar; lo1P = Low[Right]; lo1Bar = CurrentBar - Right; T = -1;End;If CurrentBar < WarmupBars Then T = T[1];If (T = 1) and (T[1] <> 1) Then Begin If ( (UseVWAPFilter = 0) or (Close >= VW) ) and ( (UseMAFilter = 0) or (Close >= ma) ) Then Begin Buy next bar at market; If UseATR = 1 Then Begin entryP = EntryPrice; Sell next bar at entryP + TPmult * atr limit; Sell next bar at entryP - SLmult * atr stop; End; End;End;If (T = -1) and (T[1] <> -1) Then Begin If ( (UseVWAPFilter = 0) or (Close <= VW) ) and ( (UseMAFilter = 0) or (Close <= ma) ) Then Begin Sell Short next bar at market; If UseATR = 1 Then Begin entryP = EntryPrice; Buy to Cover next bar at entryP - TPmult * atr limit; Buy to Cover next bar at entryP + SLmult * atr stop; End; End;End;
답변완료
질문 있습니다.
질문 요점: 청산 후 NetProfit 체크 방식으로도 진입 차단 문제 발생안녕하세요.이전 질문에 대한 답변 감사합니다. (글번호 227784)"매 틱마다 체크하지 말고 청산 후에만 체크하라"는 조언을 참고하여 코드를 수정했는데, 여전히 같은 문제가 발생합니다.ㅜㅜ ===========================================구현하려는 기능===========================================주간 손실 제한 시스템:- 지난주 수익: 금요일 종가 까지 +200틱 벌었고- 이번주 월요일 시작하면서 최대 손실 허용: -200틱 입력 합니다.- 이번주 월~금 중에 누적 손실이 -200 도달 시: 강제 청산 + 이번 주 매매 종료예시:월요일 NetProfit: 200 → 210 → 160 → 90수요일 NetProfit: 90 → 0→ WeeklyProfit = 0 - 200 = -200→ 강제 청산 + 이번 주 매매 종료=========================================== 문제 상황===========================================UseWeeklyStop=0: 정상 작동 되지만...UseWeeklyStop=1: 차트 신호 전부 사라집니다. ㅠㅠ 차트에 아무것도 없습니다.===========================================핵심 코드===========================================// === Input ===Input : UseWeeklyStop(0); // 0=OFF, 1=ONInput : WeekStartProfit(0); // 이번 주 시작 수익 (틱)Input : MaxWeekLoss(-200); // 최대 허용 손실 (틱, 음수)// === 변수 ===Var : WeeklyProfit(0); // 이번 주 누적 수익Var : WeekStopTriggered(0); // 주간 손실 도달 플래그// === 진입 조건 (기존 조건 + WeekStopTriggered 체크) ===if MarketPosition == 0 and InWaitPeriod == 0 and (기타 진입 조건들...) and WeekStopTriggered == 0 Then { Buy("L", OnClose, Def, 1); // 진입 후 초기화...}// === 청산 후 주간 손실 체크 (손절 예시) ===if MarketPosition == 1 Then { // 손절 조건 if C <= StopPrice Then { ExitLong("U-"); LastExitDate = sDate; LastExitTime = CurrentTime; WaitMinutes = 1200; InWaitPeriod = 1; // 청산 직후 주간 손실 체크 if UseWeeklyStop == 1 and WeekStopTriggered == 0 Then { WeeklyProfit = NetProfit - WeekStartProfit; if WeeklyProfit <= MaxWeekLoss Then { WeekStopTriggered = 1; InWaitPeriod = 1; WaitMinutes = 99999; // 긴 대기시간으로 차단 } } } // 익절 조건 if H >= UpperBand Then { ExitLong("U+"); LastExitDate = sDate; LastExitTime = CurrentTime; WaitMinutes = 300; InWaitPeriod = 1; // 청산 직후 주간 손실 체크 if UseWeeklyStop == 1 and WeekStopTriggered == 0 Then { WeeklyProfit = NetProfit - WeekStartProfit; if WeeklyProfit <= MaxWeekLoss Then { WeekStopTriggered = 1; InWaitPeriod = 1; WaitMinutes = 99999; } } }}// 매도 포지션도 동일한 방식으로 구현=========================================== 디버깅 시도===========================================1. UseWeeklyStop=0으로 설정 했는데 정상 작동이 됩니다. 2. UseWeeklyStop=1, WeekStartProfit=0, MaxWeekLoss=-200 로 했더니 백테스트 시작부터 차트에 진입 신호 없고 아무것도 없습니다. 3. 백테스트 초기 상태는 아래와 같습니다. - NetProfit = 0 - WeekStartProfit = 0 - MaxWeekLoss = -200 - WeekStopTriggered = 0 - WeeklyProfit = 0 - 0 = 0 - 0 <= -200? → False (정상) 이론상 문제없어 보이는데 실제로는 진입 안됨4. WeekStopTriggered 관련 코드 전부 주석 처리 하니 정상 작동 됨 → WeekStopTriggered 변수 자체에 문제일가요?===========================================질문===========================================1. 청산 후에만 NetProfit를 체크하는데도 백테스트 초기에 진입이 차단되는 이유가 뭘까요?2. WeekStopTriggered 초기값이 0인데 진입 조건에서 WeekStopTriggered == 0 체크만으로 진입이 안 되는 이유가 있을까요?3. 변수 초기화 시점이나 스코프 문제일까요? - Var : WeekStopTriggered(0); 선언만으로 충분한가요? - 추가 초기화가 필요한가요?4. 이런 방식 대신 다른 방법을 사용해야 하나요? - NetProfit 대신 다른 함수? - 플래그 변수 대신 다른 방식?===========================================도움 요청===========================================주간 손실 제한 기능을 올바르게 구현하는 방법을 알려주시면 감사하겠습니다!- 청산 후 NetProfit 체크 방식이 맞나요?- 변수 초기화나 사용 방법에 문제가 있을까요?- 다른 접근 방법이 필요할까요?ㅜㅜ감사합니다!
답변완료
지표식 좀 부탁드립니다.
당일 18시 3분에 콜,풋 종목 양매수 했을 경우 다음날 15시45분까지의 손익값중 최저값을 구하고 싶습니다.// 당일 18시3분에 양매수 했을 경우의 손익값input : 콜매수갯수(10),풋매수갯수(10),starttime(180300),endtime(154500);var : Tcond(false);var: LL(0);if stime == 180300 Then { // 당일 18시3분에 양매수 했을 경우의 손익값var1= c;Var2=Data2(c);}Var3= (c-var1)*콜매수갯수*250000;Var4=(Data2(c)-Var2)*풋매수갯수*250000;Var5= Var3+Var4;여기서 부터 안됩니다.18시 부터 다음날 15시45분까지의 양매수 손익값(var5)의 최저값을 구하고 싶습니다.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; LL = Var5;}if Tcond == true then{ if Var5 < LL Then LL = Var5; Plot2(LL,"최저값");}plot1(Var5);
양합
양합손익
답변완료
종목검색식 부탁드립니다
1. 거래일 기준, 60일 동안 최대거래량 종목검색식 부탁드립니다. (60일 은 변수처리 해주세요) 2. 아래의 예스트레이더 수식에, "0봉전 ~10봉전까지의 모든종목" 을 추가하여 수정 부탁드려요. --아래-- input : P1(60),비율(1.95); var : cnt(0),count(0); var : sum1(0); var : mav1(0); Array : CC[300](0); if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{ for cnt = 1 to 223{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P1-1] > 0 Then{ sum1 = 0; for count = 0 to P1-1{ sum1 = sum1+CC[count]; } mav1 = sum1/P1; } IF mav1*비율>=L && C>O && C>=mav1 && mav1>mav1[1] TheN Find(1);3. 아래의 예스트레이더 수식에, "0봉전 ~10봉전까지의 모든종목" 을 추가하여 수정 부탁드려요. --아래-- input : 전환선기간(6); var : cnt(0); var : wH1(0), wL1(0); var : w전환선(0); Array : wH[100](0), wL[100](0); if DayOfWeek(Bdate) > DayOfWeek(Bdate[1]) Then { wH[0] = H; wL[0] = L; for cnt = 1 to 99 { wH[cnt] = wH[cnt-1][1]; wL[cnt] = wL[cnt-1][1]; } } if H > wH[0] Then wH[0] = H; if L < wL[0] Then wL[0] = L; if wH[전환선기간-1] < 0 and wL[전환선기간-1] > 0 then { wH1 = wH[0]; wL1 = wL[0]; for cnt = 0 to 전환선기간-1 { if wH[cnt] > wH1 Then wH1 = wH[cnt]; if wL[cnt] < wL1 Then wL1 = wL[cnt]; } w전환선 = (wH1 + wL1)/2; } input : P1(100); var : count(0),BB(0),BB1(0); var : sum1(0); var : mav1(0); Array : CC[300](0); if DayOfWeek(sdate) < DayOfWeek(sdate[1]) Then{ for cnt = 1 to 299{ CC[cnt] = CC[cnt-1][1]; } } CC[0] = C; if CC[P1-1] > 0 Then{ sum1 = 0; for count = 0 to P1-1{ sum1 = sum1+CC[count]; } mav1 = sum1/P1; } BB=MAX(w전환선,mav1); BB1=MIN(w전환선,mav1); IF BB1*1.01>=BB && C>O && CROSSUP(C,BB) TheN Find(1);
답변완료
조건검색문의드립니다
[1]지표명 : 앞당김단기선행 양운구름이 앞당김 장기음운상태일때 선행구름을 단기양운이 돌파 1)앞당김 단기선행구름 수식1 :앞당김 단기선행스팬1 선행1=(highest(high,shortPeriod)+lowest(low,shortPeriod)+highest (high,midPeriod)+lowest(low,midPeriod))/4 수식2 :앞당김 단기선행스팬2 선행2=(highest(high,longPeriod)+lowest(low,longPeriod))/2 지표조건설정 shortPeriod 5 midPeriod 10 longPeriod 25 2)앞당김 장기선행구름 수식1: 앞당김 장기선행스팬1 선행1=(highest(high,shortPeriod)+lowest(low,shortPeriod)+highest (high,midPeriod)+lowest(low,midPeriod))/4 수식2:앞당김 장기선행스팬2 선행2=(highest(high,longPeriod)+lowest(low,longPeriod))/2 지표조건설정 shortPeriod 40 midPeriod 125 longPeriod 250 (요청사항)앞당김 단기 양운구름대가 반드시 앞달김 장기 음운구름대를돌파후, 장기구름대가 양운으로 바뀌는 시점에 종목이 검색되게 예스트레이더 YesLanguage 문법에 맞게 변환해서 조건검색식을 만들어주세요. [2)지표명 : 위 수식에서 단기양운구름이 장기구름을(양운,음운 상관없이 관통되도 됨) 돌파시 검색되는 종목 조건검색식 부탁드립니다.