커뮤니티

문의합니다..

프로필 이미지
wscamtk
2025-11-18 04:02:12
61
글번호 228138
답변완료
아래 수식  지표식으로
캔들차트에서 사용하던 지표값들을 계산하여
포지션 시스템 요청드립니다..
감사합니다..

input:renkoSize(0.5);

var:j(0),k(0),renkoCnt(0),gubun(0),
    printOK(False),         //데이터 검증을 위해 출력해보고 싶으면 true로 바꿔주면 됨
    filename("renko.txt");  //파일은 C:\예스트레이더\YesLang\  폴더에 생긴다.

array:OO[50](0),HH[50](0),LL[50](0),CC[50](0);

If DayIndex == 0 Then {       //break on session에 해당, 즉 일자가 바뀌면 새로 계산
   gubun = 0;                 //방향을 초기화한다. 이후 형성되는 가격에 의해 방향이 계산
   For j = 49 DownTo 1 {      //금일 시가봉을 신규 추가
       OO[j] = OO[j-1];
       HH[j] = HH[j-1];
       LL[j] = LL[j-1];
       CC[j] = CC[j-1];
   }
   OO[0] = C;      //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
   HH[0] = C;
   LL[0] = C;
   CC[0] = C;
}
Else {
   If gubun == 0 and CC[0] > 0 Then {   //일 첫봉이 완성되지 않은 시점
      If OO[0] - renkoSize >= C Then {  //위 루틴에서 1개봉을 추가했으므로 여기서는 추가없이
         gubun = -1;                    //상방향,하방향에 따라 값만 세팅
         CC[0] = OO[0] - renkoSize;
         HH[0] = OO[0];
         LL[0] = CC[0];
         j = 0;   //마지막 1봉만 출력
         if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
            j,gubun,OO[j],HH[j],LL[j],CC[j]);
      }
      Else If OO[0] + renkoSize <= C Then {
         gubun = 1;
         CC[0] = OO[0] + renkoSize;
         HH[0] = CC[0];
         LL[0] = OO[0];
         j = 0;
         if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
            j,gubun,OO[j],HH[j],LL[j],CC[j]);
      }
   }

   If LL[0] - renkoSize >= C Then {   //아래 방향으로 렌코 형성
      gubun = -1;  
      renkoCnt = Int(Round((LL[0]-C)/renkoSize,9));  //추가될 렌코 개수
      if renkoCnt > 49 then renkoCnt = 49;           //오류방지를 위한 방어코드 
      For j = 49 DownTo renkoCnt {
          OO[j] = OO[j-renkoCnt];
          HH[j] = HH[j-renkoCnt];
          LL[j] = LL[j-renkoCnt];
          CC[j] = CC[j-renkoCnt];
      }
      For j = renkoCnt-1 DownTo 0 {
          OO[j] = LL[j+1];
          CC[j] = LL[j+1] - renkoSize;
          HH[j] = OO[j];
          LL[j] = CC[j];
          if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
             j,gubun,OO[j],HH[j],LL[j],CC[j]);  //봉이 생길 때마다 출력
      }
   }
   Else If HH[0] + renkoSize <= C Then {   //위 방향으로 렌코 형성
      gubun = 1;
      renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
      if renkoCnt > 49 then renkoCnt = 49;
      For j = 49 DownTo renkoCnt {
          OO[j] = OO[j-renkoCnt];
          HH[j] = HH[j-renkoCnt];
          LL[j] = LL[j-renkoCnt];
          CC[j] = CC[j-renkoCnt];
      }
      For j = renkoCnt-1 DownTo 0 {
          OO[j] = HH[j+1];
          CC[j] = HH[j+1] + renkoSize;
          HH[j] = CC[j];
          LL[j] = OO[j];
          if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
             j,gubun,OO[j],HH[j],LL[j],CC[j]);  //봉이 생길 때마다 출력
      }
   }
   Else If Time >= 151500 Then {  //당일 종가봉에서, 
      For j = 49 DownTo 1 {
          OO[j] = OO[j-1];
          HH[j] = HH[j-1];
          LL[j] = LL[j-1];
          CC[j] = CC[j-1];
      }
      If LL[1] > C Then {        //종가가 이전 봉보다 아래 형성
         OO[0] = LL[1];
         CC[0] = C;
         HH[0] = OO[0];
         LL[0] = CC[0];
      } Else If HH[1] < C Then {  //종가가 이전 봉보다 위에 형성  
         OO[0] = HH[1];
         CC[0] = C;
         HH[0] = CC[0];
         LL[0] = OO[0];
      } Else {                    //종가가 이전 봉의 중간에 형성
         OO[0] = C;
         CC[0] = C;
         HH[0] = C;
         LL[0] = C;
      }
      j = 0; //마지막 1봉만 출력
      if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
         j,gubun,OO[j],HH[j],LL[j],CC[j]);
   }    
}

If OO[0] > 0 Then Plot1(OO[0],"OO");
If CC[0] > 0 Then Plot2(CC[0],"CC");

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

예스스탁 예스스탁 답변

2025-11-18 15:59:10

안녕하세요 예스스탁입니다. 진입청산 조건 내용을 올려주시기 바랍니다. 해당 지표식만으로는 저희가 어떤 내용으로 진입청산하고자 하시는지 알수 없습니다. 지표식을 시스템식으로 변경하고자 하시면 항상 조건내용을 같이 올려주셔야 합니다. 즐거운 하루되세요