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

 

나는 Rosh 'em에 전적으로 동의합니다. 유입량은 델타와 가장 잘 연관되고 Close[]는 저수지에 축적된 부피와 가장 잘 연관됩니다. 그러나 Close[]는 델타의 누적 합계이므로 이 두 시리즈는 매우 밀접하게 관련되어 있습니다. 따라서 이들에 대한 허스트 계수는 어떻게든 상관 관계가 있어야 합니다. 그러나 여기에서 내 의견에 의존하는 것은 거의 가치가 없습니다. 내가 말하는 모든 것은 내 일반적인 이해를 기반으로 합니다. 그 때 내가 이 손으로 일할 때 더 많은 정보에 입각한 의견을 형성할 수 있습니다.


그리고 점차 이 관점을 향하고 있습니다. 한 가지 명확히 해야 할 것이 남아 있습니다. 유추에 따라 Close[]가 저수지의 수위라고 가정합니다. 정확한 유입량(비, 많은 하천 등)을 측정할 수는 없지만 레벨별로 유입량을 추정해 보겠습니다.

수위가 상승하면 모든 것이 명확해집니다. 유입은 긍정적인 차이가 됩니다. 그리고 건조한 여름에 관찰을 시작하면 결과적으로 음수 수준의 값이 변경됩니다. 결국 수준의 감소는 유입이 없다는 것을 의미하는 것이 아니라 단순히 유입된 것보다 더 많이 유출된 것입니다. 평균 유입량은 저수지에서 연간 배출되는 양과 같아야 합니다. 다시 일부 순환성이 나타납니다.

나는 방법론적 관점에서 내 경우에 대한 유입으로 취하는 것이 더 정확한 것을 명확히 하고 싶습니다.
- 차이점만
- 모듈로 차이
- 긍정적인 차이만 있음

직관적으로 가장 중요한 것은 유입량을 올바르게 결정하는 것임을 이해합니다.

나는 또한 Close[] 와 Close[i]-Close[i+1] 사이에 상관관계가 있는지 의심스럽습니다. 나는 한 번 DSP 방법을 사용하여 그것을 찾으려고 시도했습니다 (테스트로, 신호의 상관 관계 및 자기 상관을 결정하기 위해 함수를 디버깅하는 동안), 계산 결과는 어떤 식 으로든 연결되지 않았습니다. 이것은 일반적으로 파형을 볼 때 육안으로 볼 수 있습니다. 그러나 이들은 DSP 방식이므로 이 경우 사용하는 것이 논리적이지 않을 수 있습니다.

또한 Close[i]-Close[i+1]만으로는 원본 시리즈를 재생성할 수 없습니다. 필요한 정보만 손실되고 실제로는 원본 시리즈와 다른 시리즈에 따라 Hurst 계산이 수행됩니다. .
 

나는 방법론적 관점에서 내 경우에 대한 유입으로 취하는 것이 더 정확한 것을 명확히 하고 싶습니다.
- 차이점만
- 모듈로 차이
- 긍정적인 차이만 있음

직관적으로 가장 중요한 것은 유입량을 올바르게 결정하는 것임을 이해합니다.

나는 또한 Close[] 와 Close[i]-Close[i+1] 사이에 상관관계가 있는지 의심스럽습니다.
...
또한 Close[i]-Close[i+1]만으로는 원본 시리즈를 다시 생성할 수 없습니다. 필요한 정보만 손실되고 실제로는 원본 시리즈와 다른 시리즈에 따라 Hurst 계산이 수행됩니다. .


나는 차이만 가져갈 것이다. 그리고 한 가지 더-그는 잡아당김을 잡았습니다-많지 않다고 말하지 마십시오 :)

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/120077/an/0/page/0#Post120077
 

실제로 저는 완전히 다른 접근 방식을 사용합니다. 랜덤 시리즈의 스펙트럼 분석이 비록 나에게 매우 흥미로운 방향인 것 같습니다. 그러나 나에게는 너무 복잡합니다. 그리고 지금 그것을 받아들이기에는 내 전문 분야에서 너무 멀리 떨어져 있습니다.


그리고 저는 전문적인 "디지털"이 아닙니다. 3개월 전 나는 거래에서 DSP의 사용을 선전하는 기사를 접했습니다. 그것은 나에게 흥미로웠고, 나는 나 자신을 위한 기본 디지털 필터 세트를 만들기로 결정했습니다. 곧 완료됩니다. 서점에 가서 가장 두꺼운 책 두 권을 골라서 샀다. 그는 손에 들어온 첫 번째 책의 처음 200페이지를 읽은 후 책을 덮고 외설적인 표현을 중얼거리며 먼지 투성이의 수학적 분석을 촬영하기 위해 올라갔다.

완제품을 사지 않고(돈이 충분하다), 이 분야를 공부하면 새로운 아이디어가 나온다는 가정 하에 직접 만드는 것이 재미있었다. 그래서 일이 일어났습니다. 3개월 만에 본업에 얽매이지 않고 DSP 기반의 지표와 여러 아이디어를 얻었습니다.

그러나 완벽에는 한계가 없습니다 ... :o))) 사용 가능한 필터에 대한 몇 가지 미묘함을 전문가와 함께 명확히 하고(빠르거나 직접 바닥에 도달하게 될 것입니다. 그러나 나중에) 진정한 적응형 필터를 작성하고 싶습니다.

그들이 제공하는 것에서 - 적응 필터가 없다는 의미에서 아무도 가지고 있지 않습니다.

추신: 그리고 곧 스펙트럼에 도달할 것입니다 :o))))
 

...
나는 차이만 가져갈 것이다.
...


나도 같은 생각이다. 고통스럽게 정확한 데이터를 얻었습니다. 음 ... 거의 정확합니다.
 
그리고 나는 전문적인 "디지털"이 아닙니다.
......
- DSP와 많은 아이디어를 기반으로 한 지표.
......
그들이 제공하는 것에서 - 적응 필터가 없다는 의미에서 아무도 가지고 있지 않습니다.
추신: 그리고 곧 스펙트럼에 도달할 것입니다 :o))))

여기 있습니다, 나는 DSP를 믿고 "전문 디지털 카메라가 아닙니다"
나는 이것을 사용하고 있습니다 :
" 디지털 필터링 방식에 의한 기술적 분석을 위한 패키지
Keny(Oleg, Krasnoyarsk, unclekenny@yandex.ru) 및
Goodman (Ilya Zyabrev, 모스크바, info@goodman.ru)
테스트 지원 - Andrey Tsygankov gypsy@mail.ru, Oleg Elizarov TOPpoint@yandex.ru
"있는 그대로"의 원칙에 따라 무료로 배포됩니다.
작품에 대한 모든 의견 및 오류는 작성자에게 보고해 주십시오.
즉석에서 필터를 최적화하는 방법에 대해 실현되지 않은 아이디어가 하나 있습니다.
사실 새로운 것은 없습니다. 이것은 수백 번 손으로 수행되지만 자동화하는 방법은 무엇입니까? -
FATL SATL(FATL-SATL, FATL SATL CD...) 및 해당 매개변수에 대해 이야기하고 있습니다.
스펙트럼 분석기(패키지에 포함)를 사용하여 수동으로.
스펙트럼 분석을 생성하고 출력 기간을 제공하는 라이브러리가 필요합니다.
최대 신호 밀도(시계열). 이 데이터 분석
시계열의 다른 조각에 대해 주기, 위상, 고조파 성분의 가중치 공동(진폭)을 가정하려고 시도할 수 있습니다(어떻게? 아직 모릅니다)
더 많은 고조파 성분을 결정할 수 있을수록 시리즈의 전개를 예측할 가능성이 높아집니다. 모두.
네. 예측과 현실 사이의 강한 불일치로 우리는 반응을 가정할 수 있습니다.
강력한 뉴스를 위한 시장. 그게 다야

프로그래머도 아니고 수학자도 아닙니다. :)
이 스레드는 분명히 나를 위한 것이 아닙니다. 지금 일주일째 물고 있습니다. :(
 
Vladislav , Murray 지표에 대해 질문이 있습니다. 나는 오래 전에 내 Expert Advisor(최신 새 버전)에서 귀하의 지표를 사용할 때 새 버전의 지표가 수준을 올바르게 표시하지 않는 반면 이전 버전에는 그러한 수준이 표시되지 않는 날이 있다는 것을 알게 되었습니다. 단점. 그리고 그런 순간에 이 오류를 해결하기 위해 마지막으로 올바르게 계산된 레벨 값을 사용하기만 하면 됩니다. 이전에는 단순히 MT4 테스터의 일부 불완전성 때문이라고 설명했지만, 오늘은 백테스팅 중에 Expert Advisor에서 오랫동안 관찰했던 바로 그 상황이 발생했습니다(즉, 테스터가 오류 가능성을 지적한 것이 아닙니다. 그런 상황의! :o). 스크린샷을 참조하십시오 https://c.mql5.com/mql4/forum/2006/06/Murrey_new_and_old.zip
계산 버전 설정(OldVersion: true 및 false)만 차이가 나는 두 개의 스크린샷
이전 버전은 일반적인 수준을 보여 주는 반면 동일한 매개변수를 가진 새 버전은 "끈적끈적한" Murray 수준의 결함이 발생함을 알 수 있습니다. 어떻게든 이 상황에 대해 논평해 주시겠습니까? 표시기의 새 버전에서 "고정된" Murray 수준은 실제로 기술적인 결함에 불과합니까? 아니면 더 깊은 의미가 있습니까? 예를 들어, 오늘날 가장 강한 움직임을 볼 때 Murrey 수준이 존재할 수 없으며 예를 들어 월요일에 올바르게 계산될 때까지 기다려야 하며 시장 진입을 결정할 수 있습니까? 그리고 오늘, 예를 들어 어제 진입할 시간이 없었다면 시장에서 나오지 않는 것이 더 나을까요? 이 문제에 대한 귀하의 의견을 듣고 싶습니다.

추신: 하지만 이제 새로운 바의 출현으로 새 버전은 이전 버전과 동일한 Murray 수준을 보여주기 시작했습니다. 아마도 이것은 Murray 수준 계산의 새 버전에서 일종의 기술적 오류일 가능성이 큽니다.

PPS: 막대가 몇 개 더 추가되었고 새 버전의 계산에 있는 수준이 다시 함께 고정되었습니다.
 
디지털 필터링 방식에 의한 기술적 분석용 패키지

이거 어디서 볼 수 있나요?
구글은 침묵
 
Vladislav , Murray 지표에 대해 질문이 있습니다.
...........................................................
추신: 하지만 이제 새로운 바의 출현으로 새 버전은 이전 버전과 동일한 Murray 수준을 보여주기 시작했습니다. 아마도 이것은 Murray 수준 계산의 새 버전에서 일종의 기술적 오류일 가능성이 큽니다.

PPS: 막대가 몇 개 더 추가되었고 새 버전의 계산에 있는 수준이 다시 함께 고정되었습니다.


이상함 - 내가 관찰할게 - 물론 이러면 안 된다. 배열의 초기화 를 살펴봐야 하는데 확인하겠습니다.
사실 저는 가지고 있지 않지만 별도의 지표로 사용하지 않습니다. 방금 Expert Advisor에 코드를 빌드했습니다.

ZY 오타가 있는 곳을 하나 더 찾았습니다. 당신이 옳았습니다 - 기술적 오류. 수정된 코드는 다음과 같습니다.

i//+------------------------------------------------------------------+
//|                                                   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 bool OldVersion = false;
extern int P = 90;
extern int MMPeriod = 1440;
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_Lo   = -1,
        bn_Hi   = -1,
        extr_bn_Lo  = -1,
        extr_bn_Hi  = -1,
        OctLinesCnt = 13,
        mml_thk = 8,
        mml_clr[13],
        mml_wdth[13],
        mml_shft = 35,
        nT = 0,
        nB = 0,
        nP = 0,
        nDigits = 0,
        i = 0;
int NewPeriod=0;
int CurPeriod=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
//---- indicators
   CurPeriod=Period();
   if(MMPeriod>CurPeriod)
      NewPeriod   = P*MathCeil(MMPeriod/CurPeriod);
   else NewPeriod = P;
   
   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 FindeExtrHi_bn(int n_bg, int n_nd ){

int    ext_bn = -1;
double ext_Hi = -10000000000000000000.0;
int    k = 0;
int    stop_bn = -1;
int    start_bn = -1;
int    cur_bn = n_bg;
    //Print(" FindeExtrHi_bn : n_bg = ", n_bg," n_nd = ", n_nd);
    if(n_bg<n_nd){
       start_bn = n_bg+1;
       stop_bn  = n_nd; 
       //Print(" FindeExtrHi_bn (n_bg<n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for(int j=start_bn;j<stop_bn;j++){
          if( (High[j]>High[j+1])&&(High[j]>High[j-1])&&(High[j]>ext_Hi) ){
             ext_bn = j;
	          ext_Hi = High[j];
	          }
	       }//for(int j=start_bn;j<stop_bn;j++){
       }//if(n_bg<n_nd){


    if(n_bg>n_nd){
       start_bn = n_bg;
       stop_bn  = n_nd+1; 
       //Print(" FindeExtrHi_bn (n_bg>n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for( j=start_bn;j>stop_bn;j--){
          if( (High[j]>High[j+1])&&(High[j]>High[j-1])&&(High[j]>ext_Hi) ){
             ext_bn = j;
	          ext_Hi = High[j];
	          }
          }//for(int j=start_bn;j>stop_bn;j--){
       }//if(n_bg>n_nd){
   
   //Print(" FindeExtrHi_bn:=> ext_bn = ",ext_bn);
   return(ext_bn);
   }

//=========================================================================
int FindeExtrLo_bn(int n_bg, int n_nd ){

int    ext_bn = -1;
double ext_Lo = 10000000000000000000.0;
int    stop_bn = -1;
int    start_bn = -1;
int    cur_bn = n_bg;


    //Print(" FindeExtrLo_bn : n_bg = ", n_bg," n_nd = ", n_nd);

    if(n_bg<n_nd){
       start_bn = n_bg+1;
       stop_bn  = n_nd; 
       //Print(" FindeExtrLo_bn (n_bg<n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for(int j=start_bn;j<stop_bn;j++){
          if( (Low[j]<Low[j+1])&&(Low[j]<Low[j-1])&&(Low[j]<ext_Lo) ){
             ext_bn = j;
	          ext_Lo = Low[j];
	          }
	       }//for(int j=start_bn;j<stop_bn;j++){
       }//if(n_bg<n_nd){


    if(n_bg>n_nd){
       start_bn = n_bg;
       stop_bn  = n_nd+1; 
       //Print(" FindeExtrLo_bn (n_bg>n_nd): start_bn = ", start_bn," stop_bn = ", stop_bn);
       for( j=start_bn;j>stop_bn;j--){
          if( (Low[j]<Low[j+1])&&(Low[j]<Low[j-1])&&(Low[j]<ext_Lo) ){
             ext_bn = j;
	          ext_Lo = Low[j];
	          }
          }//for(int j=start_bn;j>stop_bn;j--){
       }//if(n_bg>n_nd){
   //Print(" FindeExtrLo_bn:=> ext_bn = ",ext_bn);
   return(ext_bn);
   }

int start() {
//---- TODO: add your code here

if( (nT!=Time[0])||(nP!=Period())||(nB!=Bars) ) {
   CurPeriod=Period();
   if(MMPeriod>CurPeriod)
      NewPeriod   = P*MathCeil(MMPeriod/CurPeriod);
   else NewPeriod = P;
   
  //price
  //Print("MMLevls : NewPeriod = ",NewPeriod);
   if(OldVersion){
      bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
      bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
   } else {//  if(OldVersion){
      extr_bn_Lo = FindeExtrLo_bn(NewPeriod+StepBack,StepBack);
      extr_bn_Hi = FindeExtrHi_bn(NewPeriod+StepBack,StepBack);
      if(extr_bn_Lo>=0){
         bn_Lo = extr_bn_Lo;
         //Print("MMLevls : 1 bn_Lo = ",bn_Lo);
         for(int k=0;k<1;k++){
            if(Low[k]<Low[extr_bn_Lo]) {
               bn_Lo = k;
               break;
               }
            }
         //Print("MMLevls : 2 bn_Lo = ",bn_Lo);
         } else bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
      if(extr_bn_Hi>=0){
         bn_Hi = extr_bn_Hi;
         for(k=0;k<1;k++){
            if(High[k]>High[extr_bn_Hi]) {//ошибка была здесь
               bn_Hi = k;                // И здесь была описка
               break;
               } 
            }
         } else  bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
      // Пусть будет на всякий случай :).
      if(High[bn_Hi]<Low[bn_Lo]){
         //Print("MM ??? HiLo :High[",bn_Hi,"] = ",High[bn_Hi]," Low",bn_Lo,"] = ",Low[bn_Lo]);
         bn_Lo = Lowest(NULL,0,MODE_LOW,NewPeriod,StepBack);
         bn_Hi = Highest(NULL,0,MODE_HIGH,NewPeriod,StepBack);
         }

      }//} else {//  if(OldVersion){

   //Print("MMLevls : Low[",bn_Lo,"] = ",Low[bn_Lo]," High[",bn_Hi,"] = ",High[bn_Hi]);
 
   v1 = Low[bn_Lo];
   v2 = High[bn_Hi];

//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);
   //Print(" v2 = ",v2," v1 = ",v1," range = ",range );
   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++ ){

   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 );
      }

   nT = Time[0];
   nB = Bars;
   nP = Period();
   }//if( (nT!=Time[0])||(nP!=Period())||(nB!=Bars) ) {
 
//---- End Of Program
  return(0);
  }
//+------------------------------------------------------------------+ 



행운을 빕니다.



 
ZY 오타가 있는 곳을 하나 더 찾았습니다. 당신이 옳았습니다 - 기술적 오류. 수정된 코드는 다음과 같습니다.

실제로 start() 맨 처음에 코드를 추가하는 초기 버전만으로는 문제가 해결되지 않았고 컴퓨터에서 문제를 재현하기 위해 이미 인용문과 스크린샷을 보내려고 했기 때문에 다른 버그를 수정해도 문제가 해결되었습니다. 그러나 최신 수정 코드 작업에 대한 관찰로 판단할 때 문제가 완전히 제거되었으므로 이제는 더 이상 필요하지 않습니다. 수정된 새 코드를 전문가에게 전달하겠습니다.

신속한 문제 해결에 진심으로 감사드립니다!
 
Demax, 디지털 방식의 생성기 - http://fx.qrz.ru/
Finvare의 유료 제품도 있습니다. 시도하지 않았다
사유: