커뮤니티

수식 검증 및 문의

프로필 이미지
sewzie
2025-05-30 00:02:36
167
글번호 191279
답변완료
안녕하세요, 아래 문의사항 확인 부탁드립니다 1. 아래 로직대로 코드가 짜였는지 검증 부탁드립니다. - 장 오픈 후 5분~30분(변수로 테스트) 봉의 High and Low를 파악 (8시~익일 7시 운영 거래소) - 첫 봉이 양봉이었으면 매수만 가능. 종가가 High를 돌파하면 매수 진입 - 첫 봉이 음봉이었으면 매도만 가능, 종가가 Low를 돌파하면 매도 진입 - 스탑로스는 14일 ATR * XX% - 당일청산 (익일 7시 전) 2. 14일 ATR을 사용하고 싶은데 코드는 봉수 기준이라 14일만 따로 적용할 수 있는 방법이 있을까요? 3. SetStopEndofDay는 한국시간 익일에 장 마감하는 미국장에도 적용이 올바르게 된건가요? 감사합니다 [코드] Input: NMin(5); // Step 1 until 30 Vars: FirstNHigh(0), FirstNLow(0), FirstNOpen(0), FirstNClose(0); Vars: ATR14(0), StopLoss(0); // N분 단위 첫 봉의 종료시간 계산 Vars: FirstEndTime(0); FirstEndTime = 80000 + NMin * 100; // 1. 첫 5분봉 High/Low/Open/Close 파악 (5분봉 기준) If Date <> Date[1] Then { FirstNHigh = TimeHigh(80000, FirstEndTime); FirstNLow = TimeLow(80000, FirstEndTime); FirstNOpen = TimeOpen(80000, FirstEndTime); FirstNClose = TimeClose(80000, FirstEndTime); } // 2. ATR(14) 계산 및 스탑로스 설정 Input: ATRFactor(10); // Step 10 until 100 ATR14 = ATR(14); StopLoss = ATR14 * ATRFactor / 100; // 3. 매수 조건: 첫 5분봉 양봉 & High 돌파 If FirstNClose > FirstNOpen and Close > FirstNHigh Then { If MarketPosition == 0 Then Buy("ORBLong",AtMarket,DEf,1); } // 4. 매도 조건: 첫 5분봉 음봉 & Low 돌파 If FirstNClose < FirstNOpen and Close < FirstNLow Then { If MarketPosition == 0 Then Sell("ORBShort",AtMarket,DEf,1); } // 5. 스탑로스 (ATR 10% 이탈 시) If MarketPosition == 1 Then ExitLong("A1",AtStop,EntryPrice - StopLoss); If MarketPosition == -1 Then ExitShort("B1",AtStop,EntryPrice + StopLoss); // 6. 당일 청산 If MarketPosition <> 0 Then SetStopEndofday(065500);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-30 11:08:34

안녕하세요 예스스탁입니다. Input : NMin(5); // Step 1 until 30 Input: ATRperiod(14),ATRFactor(10); // Step 10 until 100 Vars: FirstNHigh(0), FirstNLow(0), FirstNOpen(0), FirstNClose(0); Vars: ATR14(0), StopLoss(0); var : s1(0),d1(0),tm(0); var : sumTR(0),TH(0),TL(0),cnt(0),ATRV(0); #일봉 ATR계산 sumTR = 0; for cnt = 0 to ATRperiod-1 { If DayClose(cnt+1) > DayHigh(cnt) then TH = DayClose(cnt+1); else TH = DayHigh(cnt); If DayClose(cnt+1) < daylow(cnt) then TL = DayClose(cnt+1); else TL = daylow(cnt); sumTR = sumTR + (TH-TL); } ATRV = sumTR/ATRperiod; StopLoss = ATRV * ATRFactor / 100; if Bdate != Bdate[1] Then { S1 = TimeToMinutes(stime); D1 = sdate; FirstNHigh = H; FirstNLow = L; FirstNOpen = O; FirstNClose = c; } if D1 > 0 then { if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; if TM < NMin Then { if h > FirstNHigh Then FirstNHigh = h; if l < FirstNLow Then FirstNLow = l; FirstNClose = c; } // 3. 매수 조건: 첫 5분봉 양봉 & High 돌파 If FirstNClose > FirstNOpen and Close > FirstNHigh and TM >= NMin Then { If MarketPosition == 0 Then Buy("ORBLong",AtMarket,DEf,1); } // 4. 매도 조건: 첫 5분봉 음봉 & Low 돌파 If FirstNClose < FirstNOpen and Close < FirstNLow and TM >= NMin Then { If MarketPosition == 0 Then Sell("ORBShort",AtMarket,DEf,1); } // 5. 스탑로스 (ATR 10% 이탈 시) If MarketPosition == 1 Then ExitLong("A1",AtStop,EntryPrice - StopLoss); If MarketPosition == -1 Then ExitShort("B1",AtStop,EntryPrice + StopLoss); } // 6. 당일 청산(해외선물 새벽시간) if sDate != sDate[1] Then SetStopEndofday(066600); if Bdate != Bdate[1] Then SetStopEndofday(0); 즐거운 하루되세요 > sewzie 님이 쓴 글입니다. > 제목 : 수식 검증 및 문의 > 안녕하세요, 아래 문의사항 확인 부탁드립니다 1. 아래 로직대로 코드가 짜였는지 검증 부탁드립니다. - 장 오픈 후 5분~30분(변수로 테스트) 봉의 High and Low를 파악 (8시~익일 7시 운영 거래소) - 첫 봉이 양봉이었으면 매수만 가능. 종가가 High를 돌파하면 매수 진입 - 첫 봉이 음봉이었으면 매도만 가능, 종가가 Low를 돌파하면 매도 진입 - 스탑로스는 14일 ATR * XX% - 당일청산 (익일 7시 전) 2. 14일 ATR을 사용하고 싶은데 코드는 봉수 기준이라 14일만 따로 적용할 수 있는 방법이 있을까요? 3. SetStopEndofDay는 한국시간 익일에 장 마감하는 미국장에도 적용이 올바르게 된건가요? 감사합니다 [코드] Input: NMin(5); // Step 1 until 30 Vars: FirstNHigh(0), FirstNLow(0), FirstNOpen(0), FirstNClose(0); Vars: ATR14(0), StopLoss(0); // N분 단위 첫 봉의 종료시간 계산 Vars: FirstEndTime(0); FirstEndTime = 80000 + NMin * 100; // 1. 첫 5분봉 High/Low/Open/Close 파악 (5분봉 기준) If Date <> Date[1] Then { FirstNHigh = TimeHigh(80000, FirstEndTime); FirstNLow = TimeLow(80000, FirstEndTime); FirstNOpen = TimeOpen(80000, FirstEndTime); FirstNClose = TimeClose(80000, FirstEndTime); } // 2. ATR(14) 계산 및 스탑로스 설정 Input: ATRFactor(10); // Step 10 until 100 ATR14 = ATR(14); StopLoss = ATR14 * ATRFactor / 100; // 3. 매수 조건: 첫 5분봉 양봉 & High 돌파 If FirstNClose > FirstNOpen and Close > FirstNHigh Then { If MarketPosition == 0 Then Buy("ORBLong",AtMarket,DEf,1); } // 4. 매도 조건: 첫 5분봉 음봉 & Low 돌파 If FirstNClose < FirstNOpen and Close < FirstNLow Then { If MarketPosition == 0 Then Sell("ORBShort",AtMarket,DEf,1); } // 5. 스탑로스 (ATR 10% 이탈 시) If MarketPosition == 1 Then ExitLong("A1",AtStop,EntryPrice - StopLoss); If MarketPosition == -1 Then ExitShort("B1",AtStop,EntryPrice + StopLoss); // 6. 당일 청산 If MarketPosition <> 0 Then SetStopEndofday(065500);