커뮤니티

수식 수정 부탁드립니다.

프로필 이미지
착한이
2025-05-18 09:41:49
194
글번호 190919
답변완료
안녕하세요. 수고 많으십니다. 특정날짜에 시가 진입해서 특정날짜 시가에 청산하는 전략을 만들고 있습니다. 일봉을 사용하다보니 시가(장시작직후)에만 진입하도록 되어 있는데 10시(장시작 1시간후)에도 분할 매수매도 할 수 있도록 수식 수정 부탁드립니다. (일봉에서 구현이 어렵다면 한시간봉으로 전략을 만들어 주셔도 됩니다.) 또한 진입 청산 날짜가 계속 추가되다 보면 과거 시뮬레이션을 하려면 라인수가 너무 많아지는 단점이 있습니다. 시뮬레이션 및 실전전략으로 사용하기 위해서 라인 수를 줄여서 컴팩트하게 만들어 주시면 감사하겠습니다. Input : EntryDate1(20250331), EntryDate2(20250430); Input : ExitDate1(20250429), ExitDate2(20250528); Input : EntryTime1(90000), EntryTime2(100000); Input : ExitTime1(140000), ExitTime2(150000); If Date == EntryDate1 Then { Buy("BUY1", AtStop, NextBarOpen, int(1000000/C)); } If Date == ExitDate1 Then { ExitLong("Sell1", Atstop, NextBarOpen, "BUY1"); } If Date == EntryDate2 Then { Buy("BUY2", AtStop, NextBarOpen, int(1000000/C)); } If Date == ExitDate2 Then { ExitLong("Sell2", Atstop, NextBarOpen, "BUY1"); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-05-19 13:20:33

안녕하세요 예스스탁입니다. 일봉에서는 시간지정 불가합니다. 분봉주기에서 적용하셔야 합니다. 1 날짜를 기존과 같이 input변수로 처리하면 방법이 없습니다. 수식 내부에서 배열로 지정하셔야 합니다. 2 기존에는 날짜를 지정해 다음날 시가에 신호가 발생하게 되어 있었는데 10시이면 기존날짜가 아닌 다음날 날짜를 지정하셔야 합니다. 3 var : E(False),X(False),cnt(0); Array : EDate[100](0),XDate[100](0); EDate[0] = 20250331; EDate[1] = 20250430; XDate[0] = 20250429; XDate[1] = 20250528; E = False; X = False; for cnt = 0 to 99 { if sDate == EDate[cnt] Then E = true; if sDate == XDate[cnt] Then X = true; } If E == true and NextBarStime >= 100000 and sTime < 100000 Then { Buy("BUY", AtStop, NextBarOpen, int(1000000/C)); } If X == true and NextBarStime >= 100000 and sTime < 100000 Then { ExitLong("Sell", Atstop, NextBarOpen); } 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 수식 수정 부탁드립니다. > 안녕하세요. 수고 많으십니다. 특정날짜에 시가 진입해서 특정날짜 시가에 청산하는 전략을 만들고 있습니다. 일봉을 사용하다보니 시가(장시작직후)에만 진입하도록 되어 있는데 10시(장시작 1시간후)에도 분할 매수매도 할 수 있도록 수식 수정 부탁드립니다. (일봉에서 구현이 어렵다면 한시간봉으로 전략을 만들어 주셔도 됩니다.) 또한 진입 청산 날짜가 계속 추가되다 보면 과거 시뮬레이션을 하려면 라인수가 너무 많아지는 단점이 있습니다. 시뮬레이션 및 실전전략으로 사용하기 위해서 라인 수를 줄여서 컴팩트하게 만들어 주시면 감사하겠습니다. Input : EntryDate1(20250331), EntryDate2(20250430); Input : ExitDate1(20250429), ExitDate2(20250528); Input : EntryTime1(90000), EntryTime2(100000); Input : ExitTime1(140000), ExitTime2(150000); If Date == EntryDate1 Then { Buy("BUY1", AtStop, NextBarOpen, int(1000000/C)); } If Date == ExitDate1 Then { ExitLong("Sell1", Atstop, NextBarOpen, "BUY1"); } If Date == EntryDate2 Then { Buy("BUY2", AtStop, NextBarOpen, int(1000000/C)); } If Date == ExitDate2 Then { ExitLong("Sell2", Atstop, NextBarOpen, "BUY1"); }