엘리엇 파동 이론에 기반한 거래 전략 - 페이지 40

 
나는 모든 것이 이미 정확하도록 스크립트를 사용하는 방법을 다시 한 번 지정합니다.
스크립트가 마우스로 차트로 드래그됩니다. 마우스를 놓은 곳에서 선형 회귀 채널 RCH가 주변에 그려진 색상 곡선과 함께 나타나야 합니다. 설정 초기 데이터에서는 주기를 24시간으로 설정하고 다항식의 차수는 m=2, 즉 포물선이다. 다음으로 선형 회귀 채널의 중간 선을 선택하고 이동합니다. 이동 방법 - 모두 동일합니다. 선택 후 나타난 극단점 중 하나만 가능하며, 시간에 따라 채널이 늘어나며, 중심점을 사용할 수 있으며, 마침표를 이동하기 전에 이전 채널의 길이를 유지하면서 채널이 모두 이동합니다. 선형 회귀 채널을 이동할 때 다항 회귀 곡선도 다시 그려야 합니다.
매일 기준으로 기간은 당연히 24시간 이상으로 설정되어야 합니다.
글쎄, 스크립트를 제거하는 방법은 아마도 모두가 이미 알고 있을 것입니다.
 
그러나 이 스크립트가 컴퓨터를 멈추는 방법! 게다가 오랫동안 터미널의 리소스가 어디로 갔는지 이해할 수 없어 모든 창을 통과해야했습니다.


Sleep 루프에서 지연을 적용하지 않았으므로 스크립트가 연속 루프에서 원을 그리며 실행되고 자연스럽게 리소스를 먹습니다.
이 스크립트를 사용하려고 하고 리소스가 최신 상태이면 while 루프 끝에 Sleep( ) 50 - 500 함수 를 삽입하면 프로세서의 부하가 감소합니다.
물론 이 모든 문제는 MT4의 제작자가 표시 부분의 실행을 들어오는 견적에서 활성화되는 start( ) 함수에만 묶었다는 사실에 기인합니다. 최소한 오프라인 작업, 연구를 위한 추가 기능이 있었다면 그런 문제는 없었을 것입니다.
그건 그렇고, 만약 개발자들이 이 스레드를 읽고 있다면, 그것에 대해 생각해 보시기 바랍니다. 프로그램이 지금과 같은 원시 상태에 항상 있지는 않을 것입니다(물론 모든 것이 상대적이지만).
 
2 솔란더
정말 감사합니다 잘 살펴보겠습니다

추신 : 분명히 VM은 당신보다 훨씬 더 나에게 주어졌습니다 :))
전체 문제는 이것이 연구소에서 긍정적인 방법이기 때문에 사람들이 무언가를 배울 때 학습 효과가 그에게 필요하기 때문에 혼자 배울 때보다 훨씬 적다는 것입니다.

동의합니다. MAIN 문제라고 말하기도 합니다.
 
스크립트가 마우스로 차트로 드래그됩니다. 마우스를 놓은 위치에 선형 회귀 채널 RCH가 나타나고 그 주위에 색 곡선이 그려집니다.

만세!!! 모든 것이 스크립트를 실행하는 방법일 뿐이라는 것이 밝혀졌습니다! 방금 "차트에서 실행"을 선택했는데 오류가 발생한 이유입니다. 그리고 마우스로 스크립트를 드래그하면 모든 것이 작동합니다! :o) 설명 감사합니다!
 

이러한 추론에 오류가 있습니까?

언뜻보기에는 오류가 없습니다.


결과 비교를 적용하여 문제를 해결할 수 있습니까? 왜요?
미리 감사드립니다.

(적어도 나에게는) 즉시 대답하는 것은 불가능할 것입니다. 작업 설명은 가격(또는 목표 구역)과 도달 시간(또는 시나리오 취소 시간)의 두 가지 추정치를 가정했습니다. 수준별로 가격 수준을 얻고 채널별로 관련 변수(가격 및 시간)를 얻습니다. 그 중 하나에 대한 다소 정확한 정의로 두 번째도 허용 가능한 정확도로 얻습니다. 이것은 솔루션에 대한 접근 방식에 대한 간략한 요약입니다.
당신이 제안한 접근 방식을 사용하여 공식화하는 것이 가능한지 여부는 시도하지 않았습니다. 아마도 가능합니다. 내가 사용한 접근 방식이 유일한 방법이 아니며 아마도 가장 최적의 방법이 아닐 수도 있습니다.
더 정확한 답변을 드릴 수 없으며 아직 시간을 낭비할 수 없습니다. 저는 여전히 전략을 구축하기 위해 여러 가지 접근 방식을 구현하려고 노력하고 있습니다.

행운을 빕니다.
 
Vladislav, 나는 이것이 계산 오류라고 생각합니다 (막대가 충분하지 않음). 나는 H1을, 당신은 M30을 믿었습니다. 나는 M30으로 전환했고 이제 마지막 채널에 > 0.5의 계수가 있습니다.
여기 사진이 있습니다. 따라서 더 정확한 계산을 위해 M30으로 전환해야 합니다(바가 더 많으면 - 30바는 Hurst의 계산에 충분한 품질을 제공하지 않음)



gif를 png로 변환하는 데는 아카이브에 압축하는 데 걸리는 시간만큼 많은 시간이 걸립니다. :)

나는 사진에서 Up+Down을 발견했습니다 - 그것은 항상 1.0과 같습니다. 이것은 원칙적으로 이해할 수 있습니다. 하나가 아닌 세 개의 채널을 얻는 방법을 이해하는 것이 남았습니다. 그리고 평균은 어떻게 계산되나요? 그러나 이 질문은 순전히 호기심에서 나온 것입니다. :)
 
나는 사진에서 Up+Down을 발견했습니다 - 그것은 항상 1.0과 같습니다. 이것은 원칙적으로 이해할 수 있습니다. 하나가 아닌 세 개의 채널을 얻는 방법을 이해하는 것이 남았습니다. 그리고 평균은 어떻게 계산되나요? 그러나 이 질문은 순전히 호기심에서 나온 것입니다. :)

Up+Down 계산에 대해 Chebyshev 공식(Bulashev에서)을 사용하여 확률 계산을 사용했습니다.
평균은 채널 길이에 비례하여 계산됩니다. 각 채널 의 막대 수는 가중치로 선택됩니다(알고리즘에서 이에 대해 이미 썼습니다).
하나가 아닌 세 개의 채널은 전략의 원칙에 따라 모두 동일하게 획득됩니다. 대부분의 경우 기준을 충족하는 채널을 구축할 수 있는 여러 영역이 있습니다. 여기 이 영역에서 표준 편차가 더 낮은 채널을 선택합니다. 또한 차트에 플로팅하기 위해 선택한 각 다음 채널이 이전 채널과 막대 길이가 최소 2배 이상 차이가 나도록 컷오프를 도입했습니다. 잘리지 않으면 최대 7개의 밀접하게 배치된 채널이 있을 수 있으며 이는 선으로 도면을 크게 가립니다. 그러나 이러한 컷오프 채널을 사용하면 일반적으로 2-3개의 채널이 생성되며, 이는 도면을 선으로 덮지 않고도 그림을 아주 명확하게 보여줍니다.
 
분야가 확장되고 있는 것 같습니다. 동일한 언어를 사용하려면 채널 검색 최적화 옵션과 측정항목 계산 옵션을 추가해야 합니다.

 
로쉬 !
비문과 함께 아름다운 Murray 표시기가 있습니다. 어렵지 않다면 그가 어디에서 왔는지 참조하십시오.


미리 감사드립니다 - 알렉산더
 
로쉬!
비문과 함께 아름다운 Murray 표시기가 있습니다. 어렵지 않다면 그가 어디에서 왔는지 참조하십시오.
아니면 더 쉽게 비누를 던져주세요 ANG3110@latchess.com


사실, 이것은 www.mql4.com에서 가져온 Vladislava 지표입니다.
서명만 입력됩니다. 여기에서 가져갈 수 있습니다.

//+------------------------------------------------------------------+
//|                                                   MMLevls_VG.mq4 |
//|                       Copyright © 2006, Vladislav Goshkov (VG).  |
//|                                           4vg@mail.ru            |
//|                                       Many thanks to Tim Kruzel  |
//+------------------------------------------------------------------+
#property copyright "Vladislav Goshkov (VG)."
#property link      "4vg@mail.ru"

#property indicator_chart_window

// ============================================================================================
// * Линии 8/8 и 0/8 (Окончательное сопротивление).
// * Эти линии самые сильные и оказывают сильнейшие сопротивления и поддержку.
// ============================================================================================
//* Линия 7/8  (Слабая, место для остановки и разворота). Weak, Stall and Reverse
//* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, 
//* значит она развернется быстро вниз. Если цена не остановилась около этой линии, она продолжит движение вверх к 8/8.
// ============================================================================================
//* Линия 1/8  (Слабая, место для остановки и разворота). Weak, Stall and Reverse
//* Эта линия слаба. Если цена зашла слишком далеко и слишком быстро и если она остановилась около этой линии, 
//* значит она развернется быстро вверх. Если цена не остановилась около этой линии, она продолжит движение вниз к 0/8.
// ============================================================================================
//* Линии 6/8 и 2/8 (Вращение, разворот). Pivot, Reverse
//* Эти две линии уступают в своей силе только 4/8 в своей способности полностью развернуть ценовое движение.
// ============================================================================================
//* Линия 5/8 (Верх торгового диапазона). Top of Trading Range
//* Цены всех рынков тратят 40% времени, на движение между 5/8 и 3/8 линиями. 
//* Если цена двигается около линии 5/8 и остается около нее в течении 10-12 дней, рынок сказал что следует 
//* продавать в этой «премиальной зоне», что и делают некоторые люди, но если цена сохраняет тенденцию оставаться 
//* выше 5/8, то она и останется выше нее. Если, однако, цена падает ниже 5/8, то она скорее всего продолжит 
//* падать далее до следующего уровня сопротивления.
// ============================================================================================
//* Линия 3/8 (Дно торгового диапазона). Bottom of Trading Range
//* Если цены ниже этой лини и двигаются вверх, то цене будет сложно пробить этот уровень. 
//* Если пробивают вверх эту линию и остаются выше нее в течении 10-12 дней, значит цены останутся выше этой линии 
//* и потратят 40% времени двигаясь между этой линией и 5/8 линией.
// ============================================================================================
//* Линия 4/8 (Главная линия сопротивления/поддержки). Major Support/Resistance
//* Эта линия обеспечивает наибольшее сопротивление/поддержку. Этот уровень является лучшим для новой покупки или продажи. 
//* Если цена находится выше 4/8, то это сильный уровень поддержки. Если цена находится ниже 4/8, то это прекрасный уровень 
//* сопротивления.
// ============================================================================================
extern int P = 90;
extern int MMPeriod = 60;
extern int StepBack = 0;

extern color  mml_clr_m_2_8 = White;       // [-2]/8
extern color  mml_clr_m_1_8 = White;       // [-1]/8
extern color  mml_clr_0_8   = Aqua;        //  [0]/8
extern color  mml_clr_1_8   = Yellow;      //  [1]/8
extern color  mml_clr_2_8   = Red;         //  [2]/8
extern color  mml_clr_3_8   = Green;       //  [3]/8
extern color  mml_clr_4_8   = Blue;        //  [4]/8
extern color  mml_clr_5_8   = Green;       //  [5]/8
extern color  mml_clr_6_8   = Red;         //  [6]/8
extern color  mml_clr_7_8   = Yellow;      //  [7]/8
extern color  mml_clr_8_8   = Aqua;        //  [8]/8
extern color  mml_clr_p_1_8 = White;       // [+1]/8
extern color  mml_clr_p_2_8 = White;       // [+2]/8

extern int    mml_wdth_m_2_8 = 2;        // [-2]/8
extern int    mml_wdth_m_1_8 = 1;        // [-1]/8
extern int    mml_wdth_0_8   = 2;        //  [0]/8
extern int    mml_wdth_1_8   = 1;        //  [1]/8
extern int    mml_wdth_2_8   = 1;        //  [2]/8
extern int    mml_wdth_3_8   = 1;        //  [3]/8
extern int    mml_wdth_4_8   = 2;        //  [4]/8
extern int    mml_wdth_5_8   = 1;        //  [5]/8
extern int    mml_wdth_6_8   = 1;        //  [6]/8
extern int    mml_wdth_7_8   = 1;        //  [7]/8
extern int    mml_wdth_8_8   = 2;        //  [8]/8
extern int    mml_wdth_p_1_8 = 1;        // [+1]/8
extern int    mml_wdth_p_2_8 = 2;        // [+2]/8

extern color  MarkColor   = Blue;
extern int    MarkNumber  = 217;


double  dmml = 0,
        dvtl = 0,
        sum  = 0,
        v1 = 0,
        v2 = 0,
        mn = 0,
        mx = 0,
        x1 = 0,
        x2 = 0,
        x3 = 0,
        x4 = 0,
        x5 = 0,
        x6 = 0,
        y1 = 0,
        y2 = 0,
        y3 = 0,
        y4 = 0,
        y5 = 0,
        y6 = 0,
        octave = 0,
        fractal = 0,
        range   = 0,
        finalH  = 0,
        finalL  = 0,
        mml[13];

string  ln_txt[13],        
        buff_str = "";
        
int     
        bn_v1   = 0,
        bn_v2   = 0,
        OctLinesCnt = 13,
        mml_thk = 8,
        mml_clr[13],
        mml_wdth[13],
        mml_shft = 35,
        nTime = 0,
        CurPeriod = 0,
        nDigits = 0,
        i = 0;
int NewPeriod=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
//---- indicators
   if(MMPeriod>0)
      NewPeriod   = P*MathCeil(MMPeriod/Period());
   else NewPeriod = P;

   ln_txt[0]  = "[-2/8]P extremely overshoot [-2/8]";// "extremely overshoot [-2/8]";// [-2/8]
   ln_txt[1]  = "[-1/8]P";// "overshoot [-1/8]";// [-1/8]
   ln_txt[2]  = "[0/8]P Окончательное сопротивление";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
   ln_txt[3]  = "[1/8]P Слабая, место для остановки и разворота";// "Weak, Stall and Reverse - [1/8]";// [1/8]
   ln_txt[4]  = "[2/8]P Вращение, разворот";// "Pivot, Reverse - major [2/8]";// [2/8]
   ln_txt[5]  = "[3/8]P Дно торгового диапазона";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
   ln_txt[6]  = "[4/8]P Главная линия сопротивления/поддержки";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
   ln_txt[7]  = "[5/8]P Верх торгового диапазона";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
   ln_txt[8]  = "[6/8]P Вращение, разворот";// "Pivot, Reverse - major [6/8]";// [6/8]
   ln_txt[9]  = "[7/8]P Слабая, место для остановки и разворота";// "Weak, Stall and Reverse - [7/8]";// [7/8]
   ln_txt[10] = "[8/8]P Окончательное сопротивление";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
   ln_txt[11] = "[+1/8]P";// "overshoot [+1/8]";// [+1/8]
   ln_txt[12] = "[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8]
  
  /* 
   ln_txt[0]  = "[-2/8]P";// "extremely overshoot [-2/8]";// [-2/8]
   ln_txt[1]  = "[-1/8]P";// "overshoot [-1/8]";// [-1/8]
   ln_txt[2]  = "[0/8]P";// "Ultimate Support - extremely oversold [0/8]";// [0/8]
   ln_txt[3]  = "[1/8]P";// "Weak, Stall and Reverse - [1/8]";// [1/8]
   ln_txt[4]  = "[2/8]P";// "Pivot, Reverse - major [2/8]";// [2/8]
   ln_txt[5]  = "[3/8]P";// "Bottom of Trading Range - [3/8], if 10-12 bars then 40% Time. BUY Premium Zone";//[3/8]
   ln_txt[6]  = "[4/8]P";// "Major Support/Resistance Pivotal Point [4/8]- Best New BUY or SELL level";// [4/8]
   ln_txt[7]  = "[5/8]P";// "Top of Trading Range - [5/8], if 10-12 bars then 40% Time. SELL Premium Zone";//[5/8]
   ln_txt[8]  = "[6/8]P";// "Pivot, Reverse - major [6/8]";// [6/8]
   ln_txt[9]  = "[7/8]P";// "Weak, Stall and Reverse - [7/8]";// [7/8]
   ln_txt[10] = "[8/8]P";// "Ultimate Resistance - extremely overbought [8/8]";// [8/8]
   ln_txt[11] = "[+1/8]P";// "overshoot [+1/8]";// [+1/8]
   ln_txt[12] = "[+2/8]P";// "extremely overshoot [+2/8]";// [+2/8]
*/
   //mml_shft = 3;
   mml_thk  = 3;

   // Начальная установка цветов уровней октав и толщины линий
   mml_clr[0]  = mml_clr_m_2_8;   mml_wdth[0] = mml_wdth_m_2_8; // [-2]/8
   mml_clr[1]  = mml_clr_m_1_8;   mml_wdth[1] = mml_wdth_m_1_8; // [-1]/8
   mml_clr[2]  = mml_clr_0_8;     mml_wdth[2] = mml_wdth_0_8;   //  [0]/8
   mml_clr[3]  = mml_clr_1_8;     mml_wdth[3] = mml_wdth_1_8;   //  [1]/8
   mml_clr[4]  = mml_clr_2_8;     mml_wdth[4] = mml_wdth_2_8;   //  [2]/8
   mml_clr[5]  = mml_clr_3_8;     mml_wdth[5] = mml_wdth_3_8;   //  [3]/8
   mml_clr[6]  = mml_clr_4_8;     mml_wdth[6] = mml_wdth_4_8;   //  [4]/8
   mml_clr[7]  = mml_clr_5_8;     mml_wdth[7] = mml_wdth_5_8;   //  [5]/8
   mml_clr[8]  = mml_clr_6_8;     mml_wdth[8] = mml_wdth_6_8;   //  [6]/8
   mml_clr[9]  = mml_clr_7_8;     mml_wdth[9] = mml_wdth_7_8;   //  [7]/8
   mml_clr[10] = mml_clr_8_8;     mml_wdth[10]= mml_wdth_8_8;   //  [8]/8
   mml_clr[11] = mml_clr_p_1_8;   mml_wdth[11]= mml_wdth_p_1_8; // [+1]/8
   mml_clr[12] = mml_clr_p_2_8;   mml_wdth[12]= mml_wdth_p_2_8; // [+2]/8
   
   
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {
//---- TODO: add your code here
Comment(" ");   
for(i=0;i<OctLinesCnt;i++) {
    buff_str = "mml"+i;
    ObjectDelete(buff_str);
    buff_str = "mml_txt"+i;
    ObjectDelete(buff_str);
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {

//---- TODO: add your code here

if( (nTime != Time[0]) || (CurPeriod != Period()) ) {
   
  //price
 //  Print("MMLevls : NewPeriod = ",NewPeriod);

   bn_v1 = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
   bn_v2 = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);

   v1 = Low[bn_v1];
   v2 = High[bn_v2];

//determine fractal.....
   if( v2<=250000 && v2>25000 )
   fractal=100000;
   else
     if( v2<=25000 && v2>2500 )
     fractal=10000;
     else
       if( v2<=2500 && v2>250 )
       fractal=1000;
       else
         if( v2<=250 && v2>25 )
         fractal=100;
         else
           if( v2<=25 && v2>12.5 )
           fractal=12.5;
           else
             if( v2<=12.5 && v2>6.25)
             fractal=12.5;
             else
               if( v2<=6.25 && v2>3.125 )
               fractal=6.25;
               else
                 if( v2<=3.125 && v2>1.5625 )
                 fractal=3.125;
                 else
                   if( v2<=1.5625 && v2>0.390625 )
                   fractal=1.5625;
                   else
                     if( v2<=0.390625 && v2>0)
                     fractal=0.1953125;
      
   range=(v2-v1);
   sum=MathFloor(MathLog(fractal/range)/MathLog(2));
   octave=fractal*(MathPow(0.5,sum));
   mn=MathFloor(v1/octave)*octave;
   if( (mn+octave)>v2 )
   mx=mn+octave; 
   else
     mx=mn+(2*octave);


// calculating xx
//x2
    if( (v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
    x2=mn+(mx-mn)/2; 
    else x2=0;
//x1
    if( (v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
    x1=mn+(mx-mn)/2; 
    else x1=0;

//x4
    if( (v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
    x4=mn+3*(mx-mn)/4; 
    else x4=0;

//x5
    if( (v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
    x5=mx; 
    else  x5=0;

//x3
    if( (v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
    x3=mn+3*(mx-mn)/4; 
    else x3=0;

//x6
    if( (x1+x2+x3+x4+x5) ==0 )
    x6=mx; 
    else x6=0;

     finalH = x1+x2+x3+x4+x5+x6;
// calculating yy
//y1
    if( x1>0 )
    y1=mn; 
    else y1=0;

//y2
    if( x2>0 )
    y2=mn+(mx-mn)/4; 
    else y2=0;

//y3
    if( x3>0 )
    y3=mn+(mx-mn)/4; 
    else y3=0;

//y4
    if( x4>0 )
    y4=mn+(mx-mn)/2; 
    else y4=0;

//y5
    if( x5>0 )
    y5=mn+(mx-mn)/2; 
    else y5=0;

//y6
    if( (finalH>0) && ((y1+y2+y3+y4+y5)==0) )
    y6=mn; 
    else y6=0;

    finalL = y1+y2+y3+y4+y5+y6;

    for( i=0; i<OctLinesCnt; i++) {
         mml[i] = 0;
         }
         
   dmml = (finalH-finalL)/8;
  // Print("MMLevls : NewPeriod = ",NewPeriod," dmml = ",dmml," finalL = ",finalL);
   mml[0] =(finalL-dmml*2); //-2/8
   for( i=1; i<OctLinesCnt; i++) {
        mml[i] = mml[i-1] + dmml;
        }
   for( i=0; i<OctLinesCnt; i++ ){
        buff_str = "mml"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i]);
           ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID);
           ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
           ObjectSet(buff_str, OBJPROP_WIDTH, mml_wdth[i]);
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[0],  mml[i]);
           }
             
        buff_str = "mml_txt"+i;
        if(ObjectFind(buff_str) == -1) {
           ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft);
           ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        else {
           ObjectMove(buff_str, 0, Time[mml_shft],  mml[i]);
           }
        } // for( i=1; i<=OctLinesCnt; i++ ){

   nTime    = Time[0];
   CurPeriod= Period();
   
   string buff_str = "LR_LatestCulcBar";
   if(ObjectFind(buff_str) == -1) {
      ObjectCreate(buff_str, OBJ_ARROW,0, Time[StepBack], Low[StepBack]-2*Point );
      ObjectSet(buff_str, OBJPROP_ARROWCODE, MarkNumber);
      ObjectSet(buff_str, OBJPROP_COLOR, MarkColor);
      }
   else {
      ObjectMove(buff_str, 0, Time[StepBack], Low[StepBack]-2*Point );
      }

   }
 
//---- End Of Program
  return(0);
  }
//+------------------------------------------------------------------+