10핍마다 참조선을 그리는 방법

 

여기 내가 항상 사용하는 편리한 스크립트가 있습니다. 시장의 움직임을 측정하는 데 도움이 되도록 10핍마다 기준선을 그립니다. 화면 오른쪽에 있는 가격을 보고 이것저것 알아보느라 정말 답답해서 스크립트를 만들었습니다. 스크립트는 초보자가 개체 그리기를 연습하는 데 유용할 수 있습니다.

 int start()
{  
     int nLines = 40 ;                                   // Number of total line to draw
     double lineInterval = 0.0010 ;                       // Interval between lines
     ObjectsDeleteAll ( 0 , OBJ_HLINE );                     // Clear all the lines from the window - CAREFUL!
     double normPrice = NormalizeDouble (Close[ 1 ], 3 );     // Current price is rounded to nearest "10"
     for ( int ix = 0 ; ix < nLines; ix++)                 // Loop span number of times
        {
             ObjectCreate ( "tensLines" +ix, OBJ_HLINE , 0 , 0 , normPrice+((ix-(nLines/ 2 ))*lineInterval));     // Place half above and half below the current price
             ObjectSet ( "tensLines" +ix, OBJPROP_COLOR , DarkSlateGray );       // Make the lines look better
        }
     return ( 0 ); //All done
}
 
MisterDog :

여기 내가 항상 사용하는 편리한 스크립트가 있습니다. 시장의 움직임을 측정하는 데 도움이 되도록 10핍마다 기준선을 그립니다. 화면 오른쪽에 있는 가격을 보고 이것저것 알아보느라 정말 답답해서 스크립트를 만들었습니다. 스크립트는 초보자가 개체 그리기를 연습하는 데 유용할 수 있습니다.

스크립트가 아닌 CI로 만들고, 종가가 아닌 0에서 계산하고, 차트의 보이는 부분(WinPriceMax() 및 그 자매)에만 그리기, 가격이 한도를 초과하면 업데이트(귀하의 경우 라인 간격 = 10핍) ), OBJ_HLINE 대신 OBJ_RECTANGLE을 사용합니다.

열려 있는 모든 차트에서 동기화됩니다.

:디

 

또는 . . . 지표로 만드십시오. . 코드가 조금 더 필요하므로 새 막대가 시작될 때만 새로 고쳐집니다. . .

 int deinit()
   {
   for ( int ix = 0 ; ix < nLines; ix++) // delete my horizontal lines
      {
       ObjectDelete ( "tensLines" +ix);
      }
   return ( 0 );
   }


int start()
   {  
   int nLines = 40 ;                                   // Number of total line to draw
   double lineInterval = 0.0010 ;                       // Interval between lines
   double normPrice = NormalizeDouble (Close[ 1 ], 3 );     // Current price is rounded to nearest "10"

   for ( int ix = 0 ; ix < nLines; ix++)                 // Loop span number of times
      {
       if ( ObjectFind ( "tensLines" +ix) < 0 ) 
         ObjectCreate ( "tensLines" +ix, OBJ_HLINE , 0 , 0 , normPrice+((ix-(nLines/ 2 ))*lineInterval));     // Place half above and half below the current price

       else ObjectSet ( "tensLines" +ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/ 2 ))*lineInterval));
       ObjectSet ( "tensLines" +ix, OBJPROP_COLOR , DarkSlateGray );       // Make the lines look better
      }
   return ( 0 ); //All done
   }
 
onewithzachy :

스크립트가 아닌 CI로 만들고, 종가가 아닌 0에서 계산하고, 차트의 보이는 부분(WinPriceMax() 및 그 자매)에만 그리기, 가격이 한도를 초과하면 업데이트(귀하의 경우 라인 간격 = 10핍) ), OBJ_HLINE 대신 OBJ_RECTANGLE을 사용합니다.

열려 있는 모든 차트에서 동기화됩니다.

:디


이것은 " OBJ_HLINE 대신 O BJ_RECTANGLE " 부분을 제외하고 모두 의미가 있습니다. 왜 직사각형인가?
 
RaptorUK :

또는 . . . 지표로 만드십시오. . 코드가 조금 더 필요하므로 새 막대가 시작될 때만 새로 고쳐집니다. . .


네, 물론입니다. 훨씬 좋습니다. 말해봐, ObjectDelete와 같은 것에 대해 일종의 "와일드카드"를 사용할 수 있는 방법이 있습니까? 다음과 같이 하고 싶습니다. ObjectDelete ( "tensLines"* ); 즉, "tensLines"로 시작하는 모든 것을 삭제하십시오.
 
MisterDog :

이것은 " OBJ_HLINE 대신 O BJ_RECTANGLE" 부분을 제외하고 모두 의미가 있습니다. 왜 직사각형인가?

나는 몇 년 동안 그 격자 무늬를 가지고 있습니다. 어쨌든 오른쪽에 가격이 표시되지 않습니다. 아마도 직사각형을 좋아하지 않을 것입니다. WindowsBarsPerChart() 및 아마도 WindowsFirstVisibleBar()를 사용하십시오.

차트의 오른쪽 하단을 보면 25/341입니다. 그리드가 25핍이고 차트의 높이가 341핍임을 의미합니다.

:디

 
onewithzachy :

나는 몇 년 동안 그 격자 무늬를 가지고 있습니다. 어쨌든 오른쪽에 가격이 표시되지 않습니다. 아마도 직사각형을 좋아하지 않을 것입니다. WindowsBarsPerChart() 및 아마도 WindowsFirstVisibleBar()를 사용하십시오.

차트의 오른쪽 하단을 보면 25/341입니다. 그리드가 25핍이고 차트의 높이가 341핍임을 의미합니다.

:디

나는 당신이 막대와 함께 이것을 배치하는 방식을 실제로 좋아합니다. 눈이 편합니다. 당신은 "어쨌든 오른쪽에 가격이 보이지 않는다"고 말합니다. 나는 종종 매수 또는 매도의 두 가지 선택으로 내가 50-50의 기회를 가지지만 80%의 확률로 틀렸는지 궁금했습니다. ;-)
 
MisterDog :
나는 당신이 막대와 함께 이것을 배치하는 방식을 실제로 좋아합니다. 눈이 편합니다. 당신은 "어쨌든 오른쪽에 가격이 보이지 않는다"고 말합니다. 나는 종종 매수 또는 매도의 두 가지 선택으로 내가 50-50의 기회를 가지지만 80%의 확률로 틀렸는 지 궁금했습니다. ;-)

여기도 마찬가지...

:디

 
MisterDog :
나는 당신이 막대와 함께 이것을 배치하는 방식을 실제로 좋아합니다. 눈이 편합니다. 당신은 "어쨌든 오른쪽에 가격이 보이지 않는다"고 말합니다. 나는 종종 매수 또는 매도의 두 가지 선택으로 내가 50-50의 기회를 가지지만 80%의 확률로 틀렸는지 궁금했습니다. ;-)

그것은 대답하기 매우 쉽습니다. . . EA 테스트를 본 것이 사실이라고 가정합니다. 위험:보상입니다. 위험이 20이고 보상이 80(또는 이와 유사한 비율)이면 승률이 20%인 방법을 알 수 있습니다. . . 작은 거래를 하는 경우 스프레드를 고려해야 하기 때문에 그렇게 간단하지 않습니다. . .
 
onewithzachy, 이제 막 O BJ_RECTANGLE 스타일 차트를 설정하는 중입니다. " WindowsBarsPerChart() 및 아마도 WindowsFirstVisibleBar()"를 언급했습니다. 화면의 왼쪽에서 오른쪽으로 막대를 실행하는 방법을 찾는 데 여전히 어려움을 겪고 있습니다. 하지만 레이아웃은 마음에 듭니다! 이 작업을 수행하는 방법에 대한 단서가 있습니까?
 
MisterDog :
onewithzachy, 이제 막 O BJ_RECTANGLE 스타일 차트를 설정하는 중입니다. " WindowsBarsPerChart() 및 아마도 WindowsFirstVisibleBar()"를 언급했습니다. 화면의 왼쪽에서 오른쪽으로 막대를 실행하는 방법을 찾는 데 여전히 어려움을 겪고 있습니다. 하지만 레이아웃은 마음에 듭니다! 이 작업을 수행하는 방법에 대한 단서가 있습니까?

안녕하세요 미스터독입니다.

단순한.

1. 한 막대에서 다른 막대까지의 시간 거리를 구합니다. 현재 막대 시간에서 이전 막대 시간을 빼거나 기간에 60초를 곱하여 이를 얻을 수 있습니다. 월요일에 시간 차이가 있으므로 후자를 선택합니다.

 datetime Bar_Time_Gap; // or integer type

Bar_Time_Gap = Time [ 0 ] - Time [ 1 ]; // or Time [7] - Time [8] or whatever
Bar_Time_Gap = Period ()* 60 ;

2. WindowsFirstVisibleBar()는 맨 왼쪽 막대입니다. 해당 막대에서 그리기 시작하거나 더 나은 방법은 해당 막대의 왼쪽 n에서 시작하는 것입니다. 예를 들어 왼쪽으로 5개의 막대가 있습니다. WindowsFirstVisibleBar() 의 반환값 이 20이라고 가정합니다. 즉, 맨 왼쪽 막대가 막대 [20]이고 막대 [25]부터 그리기 시작합니다. 나는 실제로 [바 - 1]에서 그립니다.

 datetime Start;

Start = Time [ WindowFirstVisibleBar () + 5 ];                   //which is the same ...
Start = Time [ WindowFirstVisibleBar ()] - 5 * Bar_Time_Gap;   //... with this one

3. WindowsBarsPerChart()는 차트의 막대 수입니다 . WindowsBarsPerChart() 의 반환값 이 35이고 WindowsFirstVisibleBar()가 20이라고 가정해 보겠습니다. 따라서 [0] 막대에서 시작 하여 오른쪽에 약 15개의 막대 빈 공간이 있습니다. 사각형의 끝을 빈 공간의 바로 오른쪽 막대로 그리 거나, 막대의 오른쪽 n에서 시작하여 오른쪽으로 5개 막대를 그리십시오 .

 datetime End;
int Right_Bar = WindowBarsPerChart () - WindowFirstVisibleBar () + 5 ;

End = Time[ 0 ] + Right_Bar * Bar_Time_Gap;

새 막대가 오면 이 오른쪽 막대가 왼쪽으로 이동하므로 직사각형의 끝이 표시되고 다시 그려야 합니다.

나는 이것을 빨리 썼기 때문에 여기에서 실수하지 않기를 바랍니다.

:디