커뮤니티

수식 완성 부탁드립니다.

프로필 이미지
행복사랑채
2025-07-31 21:46:15
175
글번호 192911
답변완료
INPUT: Period(20), // 장기 이동평균 기간 Period1(5), // 단기 이동평균 기간 Period2(20), // 중기 이동평균 기간 A(0); // 이격률 기준값 VAR: maShort(0), // 단기 이동평균 maMid(0), // 중기 이동평균 maLong(0), // 장기 이동평균 Disparity(0), // 이격률 EntryPrice(0), // 매수 가격 저장 TradeOpen(FALSE), // 포지션 보유 여부 CurrTime(0), // 현재 시간 (HHMM) ProfitRate(0), // 현재 수익률 (%) ProfitPreserveActive(FALSE); // 수익보존 활성화 여부 // 이동평균 계산 maShort = MA(C, Period1); maMid = MA(C, Period2); maLong = MA(C, Period); // 이격률 계산 Disparity = (maShort - maMid) / C * 100; // 현재 시간 구하기 (HHMM) CurrTime = TIME; // --- 매수 조건 (09:00 ~ 11:40) --- IF (CurrTime >= 900) AND (CurrTime <= 1140) THEN BEGIN IF (TradeOpen = FALSE) AND // 이동평균 조건 (골든크로스 예시) (C > maLong) AND (C[1] <= maLong[1]) AND (maMid > maMid[1]) AND (maMid[1] < maMid[2]) AND // 이격률 조건 (Disparity > A) AND (Disparity[1] <= A) THEN BEGIN BUY; EntryPrice = C; // 진입가 기록 TradeOpen = TRUE; ProfitPreserveActive = FALSE; // 새 거래 시작 시 초기화 END; END; // --- 포지션 오픈 상태에서 익절 / 손절 / 수익보존 / 강제매도 체크 --- IF TradeOpen = TRUE THEN BEGIN ProfitRate = (C - EntryPrice) / EntryPrice * 100; // 익절: +5% 이상 도달 시 매도 IF ProfitRate >= 5 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END // 손절: -3% 이하 도달 시 매도 ELSE IF ProfitRate <= -3 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END ELSE BEGIN // 수익보존 활성화 조건: 수익률이 1.2% 이상 도달한 경우 IF ProfitPreserveActive = FALSE AND ProfitRate >= 1.2 THEN BEGIN ProfitPreserveActive = TRUE; END; // 수익보존 조건: 수익보존 활성화 후 수익률이 1.2% 미만으로 떨어지면 매도 IF (ProfitPreserveActive = TRUE) AND (ProfitRate < 1.2) THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; // 강제 매도: 15:10에 무조건 매도 IF CurrTime = 1510 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; END; END;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-08-01 10:09:03

안녕하세요 예스스탁입니다. INPUT: Period(20), // 장기 이동평균 기간 Period1(5), // 단기 이동평균 기간 Period2(20), // 중기 이동평균 기간 A(0); // 이격률 기준값 VAR: maShort(0), // 단기 이동평균 maMid(0), // 중기 이동평균 maLong(0), // 장기 이동평균 Disparity(0), // 이격률 EntryPrice(0), // 매수 가격 저장 TradeOpen(FALSE), // 포지션 보유 여부 CurrTime(0), // 현재 시간 (HHMM) ProfitRate(0), // 현재 수익률 (%) ProfitPreserveActive(FALSE); // 수익보존 활성화 여부 // 이동평균 계산 maShort = MA(C, Period1); maMid = MA(C, Period2); maLong = MA(C, Period); // 이격률 계산 Disparity = (maShort - maMid) / C * 100; // 현재 시간 구하기 (HHMM) CurrTime = sTime; // --- 매수 조건 (09:00 ~ 11:40) --- IF (CurrTime >= 90000) AND (CurrTime <= 114000) THEN BEGIN IF (TradeOpen == FALSE) AND // 이동평균 조건 (골든크로스 예시) (C > maLong) AND (C[1] <= maLong[1]) AND (maMid > maMid[1]) AND (maMid[1] < maMid[2]) AND // 이격률 조건 (Disparity > A) AND (Disparity[1] <= A) THEN BEGIN BUY(); EntryPrice = C; // 진입가 기록 TradeOpen = TRUE; ProfitPreserveActive = FALSE; // 새 거래 시작 시 초기화 END; END; // --- 포지션 오픈 상태에서 익절 / 손절 / 수익보존 / 강제매도 체크 --- IF TradeOpen == TRUE THEN BEGIN ProfitRate = (C - EntryPrice) / EntryPrice * 100; // 익절: +5% 이상 도달 시 매도 IF ProfitRate >= 5 THEN BEGIN SELL(); TradeOpen = FALSE; ProfitPreserveActive = FALSE; END // 손절: -3% 이하 도달 시 매도 ELSE IF ProfitRate <= -3 THEN BEGIN SELL(); TradeOpen = FALSE; ProfitPreserveActive = FALSE; END ELSE BEGIN // 수익보존 활성화 조건: 수익률이 1.2% 이상 도달한 경우 IF ProfitPreserveActive == FALSE AND ProfitRate >= 1.2 THEN BEGIN ProfitPreserveActive = TRUE; END; // 수익보존 조건: 수익보존 활성화 후 수익률이 1.2% 미만으로 떨어지면 매도 IF (ProfitPreserveActive == TRUE) AND (ProfitRate < 1.2) THEN BEGIN SELL(); TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; // 강제 매도: 15:10에 무조건 매도 IF CurrTime == 151000 THEN BEGIN SELL(); TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; END; END; 즐거운 하루되세요 > 행복사랑채 님이 쓴 글입니다. > 제목 : 수식 완성 부탁드립니다. > INPUT: Period(20), // 장기 이동평균 기간 Period1(5), // 단기 이동평균 기간 Period2(20), // 중기 이동평균 기간 A(0); // 이격률 기준값 VAR: maShort(0), // 단기 이동평균 maMid(0), // 중기 이동평균 maLong(0), // 장기 이동평균 Disparity(0), // 이격률 EntryPrice(0), // 매수 가격 저장 TradeOpen(FALSE), // 포지션 보유 여부 CurrTime(0), // 현재 시간 (HHMM) ProfitRate(0), // 현재 수익률 (%) ProfitPreserveActive(FALSE); // 수익보존 활성화 여부 // 이동평균 계산 maShort = MA(C, Period1); maMid = MA(C, Period2); maLong = MA(C, Period); // 이격률 계산 Disparity = (maShort - maMid) / C * 100; // 현재 시간 구하기 (HHMM) CurrTime = TIME; // --- 매수 조건 (09:00 ~ 11:40) --- IF (CurrTime >= 900) AND (CurrTime <= 1140) THEN BEGIN IF (TradeOpen = FALSE) AND // 이동평균 조건 (골든크로스 예시) (C > maLong) AND (C[1] <= maLong[1]) AND (maMid > maMid[1]) AND (maMid[1] < maMid[2]) AND // 이격률 조건 (Disparity > A) AND (Disparity[1] <= A) THEN BEGIN BUY; EntryPrice = C; // 진입가 기록 TradeOpen = TRUE; ProfitPreserveActive = FALSE; // 새 거래 시작 시 초기화 END; END; // --- 포지션 오픈 상태에서 익절 / 손절 / 수익보존 / 강제매도 체크 --- IF TradeOpen = TRUE THEN BEGIN ProfitRate = (C - EntryPrice) / EntryPrice * 100; // 익절: +5% 이상 도달 시 매도 IF ProfitRate >= 5 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END // 손절: -3% 이하 도달 시 매도 ELSE IF ProfitRate <= -3 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END ELSE BEGIN // 수익보존 활성화 조건: 수익률이 1.2% 이상 도달한 경우 IF ProfitPreserveActive = FALSE AND ProfitRate >= 1.2 THEN BEGIN ProfitPreserveActive = TRUE; END; // 수익보존 조건: 수익보존 활성화 후 수익률이 1.2% 미만으로 떨어지면 매도 IF (ProfitPreserveActive = TRUE) AND (ProfitRate < 1.2) THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; // 강제 매도: 15:10에 무조건 매도 IF CurrTime = 1510 THEN BEGIN SELL; TradeOpen = FALSE; ProfitPreserveActive = FALSE; END; END; END;