커뮤니티

변형된 grid방식의 매매법 수식 부탁드림니다.

프로필 이미지
이형지
2026-07-04 15:17:24
129
글번호 232683
답변완료

제가 봐도 이전 글은 설명을 잘못해서 다시 정리해서 질문 올림니다.. 잘 검토되어 실전에 투입되는 전략으로 유용하게 쓰겠습니다.





–물린 국내주식 청산 수식 (예스트레이더 예스스팟)—수식 문의 건


1. 적용 품목: tiger200 (102110)

2. 적용분봉: 10분봉

3. 적용증권사: IM증권

4. 수식



안녕하세요. 국내 지수형 ETF(예: tiger200 (102110))에 적용할 변형 그리드(계단식) 분할 매매 시스템식 구현을 요청합니다.


본 로직은 차트의 기술적 지표를 보지 않고, 오직 '진입 가격 대비 하락률'과 '개별 계단별 수익률'만을 기준으로 기계적으로 반복 매매하는 구조입니다. 담당자님께서 로직을 명확히 이해하실 수 있도록 매수/매도 조건을 데이터 및 함수 설계 관점에서 정리해 드립니다.


1. 기본 설정 변수 (Input)

Grid_Step (계단 간격 %): 기본값 2.0% (가변 설정 가능하게)


Target_Profit (익절 폭 %): 기본값 2.0% (가변 설정 가능하게)


Max_Stages (최대 계단 수): 20단계 (가변 설정 가능하게)


Base_Amount (1단계 진입 금액): 최초 진입 일자  및 수량  지정  예 2026년 1월 3일    최초 주식 투입수량  1000주  (가변 설정 가능하게)- 날짜 / 수량

  

매매별 투입 및 청산 금액 : 투입금액 200만원   (가변 설정 가능하게)

                                                 청산금액 200만원   (가변 설정 가능하게)



2. 진입 및 매수 로직 (Buy 규칙)

1단계 (최초 진입): 시스템 가동 즉시 현재가로 최초 1단계(Base_Amount 금액만큼) 매수를 집행합니다. 이때의 체결 가격을 [1단계 매수가]로 저장합니다.


2단계 ~ Max_Stages (추가 매수):


직전 단계의 실제 매수가 대비 주가가 Grid_Step(-2%) 이상 하락할 때마다 다음 단계 계단의 매수를 집행합니다.


예시: 1단계 매수가가 10,000원이라면, 9,800원에 2단계 매수, 9,604원에 3단계 매수를 수행합니다.


핵심 (변형 그리드): 모든 계단은 각각 독립된 진입 가격과 수량을 가집니다. (전체 평단가 기준이 아님)


3. 청산 및 매도 로직 (Exit 규칙 - 가장 중요)

독립적 개별 익절 (FIFO 또는 진입별 매칭 청산):


각 계단(Stage)별로 매수된 물량은 '해당 계단의 실제 매수가' 대비 Target_Profit(+2%) 이상 상승하면 해당 물량만 개별적으로 청산(익절)합니다.


예시: 주가가 9,604원(3단계)까지 떨어졌다가 다시 9,800원으로 반등하면, 3단계에 샀던 물량만 정확히 지정하여 선별 청산되어야 합니다. 이때 1단계와 2단계 물량은 여전히 계좌에 유지되어야 합니다.


재진입 규칙: 특정 단계의 물량이 익절 청산된 후, 주가가 다시 하락하여 해당 단계의 매수 조건(직전 상위 단계 가격 대비 -2%)을 터치하면 해당 단계는 다시 매수(재진입)가 가능해야 합니다. 즉, 박스권에서 해당 가격대를 오르내릴 때 무한 반복 매매가 일어나야 합니다.


참고로 최초 매수가보다  (2%)위로 올를때도  설정된 청산금액(200만원) 청산되게 설계 해주세요 ( 최초 투입 수량이 1000주이기 때문에)  위로 올라갈수록 리미트 없이 2%마다 청산되게 해주세요 ( 수량이 부족시 최초 투입수량을 조정하면 되므로)




4. 구현 시 주의 요청사항

일반적인 시스템식처럼 '전체 포지션의 평균단가 대비 2% 익절'로 구현하시면 안 됩니다. 반드시 각 진입 차수별(계단별)로 매수가를 기억(배열 또는 독립 변수 처리)하고 있다가, 개별적으로 +2% 터치 시 해당 차수의 수량만큼만 매도 매칭(ExitPosition)이 되도록 로직을 짜주셔야 본 매매법이 정상 작동합니다.


계단식으로 그물을 촘촘히 쳐놓고 오르내리는 변동성을 반복해서 먹는 구조입니다. 예스랭귀지나 예스스폿 중 어떤 방식으로 구현하는 것이 이 '개별 차수별 매도 매칭'에 가장 안정적이고 유리한지 판단하셔서 최적의 수식으로 작성해 주시면 감사하겠습니다. 수식 내에 주석도 상세히 달아주시면 큰 도움이 되겠습니다. 감사합니다.


시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-07-06 14:17:13

안녕하세요 예스스탁입니다. 스팟은 동작중에만 변수에 값이 저장되고 과거 히스토리가 별도로 없습니다. 필요한 값은 내부파일이나 엑셀등에 저장해서 다음 접속시 사용해야 하는데 올리신 내용을 구현하기에는 차트를 기반으로 하는 예스랭귀지 시스템이 더 접합해 보입니다. 시스템은 신호가 발생하면 신호가격이 자동으로 저장되고 강제청산함수가 각 진입별로 동작하게 이미 되어 있으므로 첫진입 이하에서 추가진입은 SetStopProfittarget으로 청산하게 하고 첫진입가 이상에서는 일반청산함수로 일정% 상승시마다 일정금액에 해당하는 수량을 청산하게 하시면 됩니다. 피라미딩은 모든진입신호 허용으로 설정하고 적용하시면 됩니다. input : Grid_Step(2.0); input : Target_Profit (2.0); input : Max_Stages(20); input : Base_date(20260102),Base_time(100000),Base_Amount(1000); input : 투입금액(2000000); input : 청산금액(2000000); var : PP(0),cnt(0); if MarketPosition == 0 and sDate == Base_date and sTime == Base_time Then Buy("b1",OnClose,Def,Base_Amount); if MarketPosition == 1 Then { PP = EntryPrice*(1-(Grid_Step*CurrentEntries)/100); Buy("b",AtLimit,PP,Floor(투입금액/min(PP,NextBarOpen))); if CurrentContracts< CurrentContracts[1] and LatestExitName(0) == "bx" Then cnt = cnt+1; if CurrentContracts > Base_Amount Then { SetStopProfittarget(Target_Profit,PercentStop); } Else { SetStopProfittarget(0); ExitLong("bx",AtLimit,EntryPrice*(1+(Target_Profit+(Target_Profit*cnt))/100),def,Floor(청산금액/min(PP,NextBarOpen)),2); } } Else { SetStopProfittarget(0); cnt = 0; } 즐거운 하루되세요