uma estratégia comercial baseada na Teoria da Onda de Elliott - página 64

 
<br/ translate="no"> Concordo totalmente com Rosh. A entrada é melhor associada ao delta, e Fechar[] com o volume acumulado no reservatório. Entretanto, parece-me que como Close[] é o total cumulativo do delta, as duas séries estão muito intimamente relacionadas. Portanto, os coeficientes Hurst para eles devem, de alguma forma, se correlacionar. Mas você dificilmente deve confiar na minha opinião. Tudo o que estou dizendo é baseado apenas em meu entendimento geral. Quando trabalhar com minhas mãos, serei capaz de formar uma opinião mais informada.


E estou gradualmente me inclinando para essa visão. Há ainda algo a ser esclarecido, a saber. Suponha, raciocínio por analogia, Fechar[] é o nível da água em um reservatório. Não temos como medir a afluência exata (chuva, numerosos rios, etc.), mas vamos estimar a afluência, pelo nível.

Quando o nível da água aumenta, tudo fica claro - a afluência será uma diferença positiva. Mas se começamos a observação em um verão seco e como conseqüência - valores negativos da mudança de nível. Afinal, uma diminuição do nível não significa que não houve entrada, apenas que houve mais vazamentos do que vazamentos. A afluência média deve ser igual ao volume liberado do reservatório a cada ano. Mais uma vez surge um certo ciclicalismo.

Quero esclarecer o que é o correto metodologicamente para tomar como influxo para o meu caso:
- Somente a diferença
- Somente a diferença modulo
- Somente a diferença positiva

Intuitivamente, entendo que o principal é determinar corretamente o influxo.

Também duvido que haja uma correlação entre Close[] e Close[i]-Close[i+1]. Uma vez tentei encontrá-lo usando métodos DSP (como teste, eu estava depurando funções para determinar a correlação e autocorrelação dos sinais no momento), o resultado do cálculo - não relacionado de forma alguma. Isto, em geral, pode ser visto a olho nu, se você olhar para a forma do sinal. Mas estes são métodos DSP, pode não ser lógico usá-los neste caso.

Além disso, não se pode reconstruir a série original apenas por Close[i]-Close[i+1] - as informações necessárias são apenas perdidas, e o cálculo do Hearst é realizado, de fato, por uma série diferente da original.
 
<br / translate="no"> Gostaria de esclarecer qual é a metodologia correta a tomar como um influxo para o meu caso:
-Diferença apenas
- diferença modulo
- somente diferença positiva

Intuitivamente, entendo que o principal é determinar corretamente o fluxo de entrada.

Também duvido que haja uma correlação entre Close[] e Close[i]-Close[i+1].
...
Além disso, não se pode reconstruir a série original apenas com Close[i]-Close[i+1] - as informações necessárias são apenas perdidas, e o cálculo Hearst é realizado, de fato, por uma série diferente da original.


Eu só aceitaria a diferença. Além disso, se você tem uma boa razão, não diga que não pode usá-la :)

http://forex.kbpauk.ru/showflat.php/Cat/0/Number/120077/an/0/page/0#Post120077
 
<br/ translate="no"> Na verdade, utilizo abordagens completamente diferentes. Embora a análise espectral de séries aleatórias seja, eu acho, uma direção muito interessante. No entanto, muito complicado para mim. E muito longe de minha especialidade, para levá-la agora.


E eu não sou um "digitalizador" profissional. Há três meses, encontrei um artigo elogiando o uso do DSP no comércio. Achei interessante, e decidi fazer um conjunto básico de filtros digitais. Bem, foi feito. Fui a uma livraria, escolhi dois livros mais grossos e comprei-os. Depois de ler as primeiras 200 páginas do primeiro livro que encontrei, fechei-o e, murmurando palavrões, fui buscar o poeirento livro de dois volumes de matemática.

Eu estava interessado não em comprar um produto pronto (tenho dinheiro suficiente para isso), mas em fazer o meu próprio, assumindo que enquanto estudava este campo - novas idéias surgirão. E assim aconteceu. Dentro de 3 meses, sem nenhuma distração consegui o que queria - indicadores baseados em DSP e um monte de idéias.

Mas a perfeição não conhece fronteiras....) :о))) Quero pedir aos profissionais (é mais rápido ou eu mesmo o obterei, mas mais tarde) para definir algumas especificações dos filtros existentes e escrever um filtro realmente adaptativo.

Pelo que é oferecido - ninguém os tem, quero dizer sem filtros adaptativos.

PS: E em breve chegarei aos espectros :o))))
 
<br / translate="no"> ...
Eu só aceitaria a diferença.
...


Estou pensando a mesma coisa. São muitos dados certos, bem... quase certos.
 
E eu não sou um "digitalizador"<br/ translate="no"> ......
- Indicadores baseados em DSP e um monte de idéias.
......
Pelo que está em oferta - ninguém os tem, quero dizer sem filtros adaptativos.
PS: E em breve chegarei aos espectros :o))))

Aqui estou eu, acredito em DSP e "não um "digitalizador" profissional"
Eu uso isto:
"Pacote para análise técnica por métodos de filtragem digital
Desenvolvido graças a Keny (Oleg, Krasnoyarsk,
) e Goodman (Zyabrev Ilya, Moscou, TOPpoint@yandex.ru)
Ajuda nos testes - Tsygankov Andrey , Elizarov Oleg gypsy@mail.ru
Distribuído gratuitamente de acordo com os princípios "AS-IS".
Por favor, informe o autor sobre todas as observações e erros"
e há uma idéia não realizada de como otimizar os filtros na hora:
Não há nada de novo. Isto foi feito manualmente centenas de vezes, mas como automatizá-lo? -
Estou falando do FATL SATL (FATL-SATL, FATL SATL CD ...) e ajustando seus parâmetros
manualmente usando o analisador de espectro (incluído no pacote).
É necessária uma biblioteca que realize a análise do espectro, dando períodos de saída de
densidade máxima de sinal (série temporal). Analisando estes dados
para diferentes fragmentos de séries temporais você pode tentar adivinhar períodos, fases, coeficientes ponderados (amplitudes) de componentes harmônicos (como? Ainda não sei)
Quanto mais componentes harmônicos puderem ser determinados, mais provável é prever o desenvolvimento das séries. Isso é tudo.
Simhe. Se a previsão difere muito da realidade, podemos supor a reação
do mercado a notícias fortes. Isso é tudo.

Não um programador e não um matemático. :)
Este ramo está claramente além de minha compreensão. Já faz uma semana que estou mastigando. :(
 
Vladislav, tenho uma pergunta sobre o indicador Murray. Notei há muito tempo quando uso seu indicador em meu Expert Advisor (a última versão) que às vezes há dias em que a nova versão do indicador não mostra os níveis corretamente, enquanto a versão antiga não tem tal desvantagem. Para evitar tais falhas em tais momentos eu simplesmente utilizo os últimos níveis calculados corretamente. Antes eu o escrevi para alguma imperfeição do testador do MT4, mas agora aconteceu a situação que tenho observado há muito tempo no meu consultor especializado durante os testes de história (ou seja, o testador não se enganou ao indicar uma possibilidade de tal situação!) Por favor, veja as screenshots em https://c.mql5.com/mql4/forum/2006/06/Murrey_new_and_old.zip
Duas capturas de tela feitas com apenas uma diferença na configuração da versão de cálculo (OldVersion: verdadeiro e falso)
Você pode ver que a versão antiga mostra níveis habituais, enquanto a nova mostra uma falha com os mesmos parâmetros - níveis "pegajosos" de Murray. Você pode comentar sobre esta situação? Os níveis de Murray "aderidos" na nova versão do indicador são apenas uma falha técnica ou têm um significado mais profundo? Por exemplo, hoje não podem existir níveis de Murray por causa do movimento mais forte e devemos apenas esperar até que sejam corretamente calculados, por exemplo, na segunda-feira e então podemos decidir entrar no mercado? E hoje, por exemplo, se você não conseguiu entrar ontem, seria melhor ficar fora do mercado? Gostaria de ouvir sua opinião sobre este assunto.

PS: Mas agora com a nova barra a nova versão começou a exibir os mesmos níveis de Murray que a antiga. Provavelmente, é algum erro técnico da nova versão de cálculo dos níveis de Murray.

PPS: Mais duas barras vieram e os níveis da nova versão estão novamente presos juntos.
 
Pacote de análise técnica para métodos de filtragem digital

onde posso vê-lo?
google é silencioso
 
Vladislav Tenho uma pergunta sobre o indicador Murray.

PS: Mas agora com a chegada do novo bar e a nova versão começou a mostrar os mesmos níveis de Murray que a antiga. Provavelmente é algum erro técnico da nova versão do cálculo dos níveis de Murray.

PPS: Mais algumas barras vieram e os níveis da nova versão estão novamente presos juntos.


Estranho - vou ficar de olho nisso - é claro que não deveria ser assim. Tenho que olhar para a inicialização das matrizes que vou verificar.
Na verdade eu não o tenho, mas não o uso como um indicador separado - acabei de incorporar o código no Expert Advisor.

HH encontrei mais um lugar onde havia uma gralha. Você estava certo - o erro é técnico. Aqui está o código corrigido:

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



Boa sorte e tendências felizes.



 
ZS Encontrou outro lugar onde havia um erro de digitação. Você estava certo - foi um erro técnico. Aqui está o código corrigido:

A correção real de mais um erro eliminou o problema, pois apenas a versão original de adição de código no início do início() não resolveu o problema e eu estava prestes a enviar citações e capturas de tela para reproduzir o problema em seu computador. Mas agora isso não é necessário porque você resolveu completamente o problema, a julgar pela minha observação do último código corrigido. Transferirei o novo código corrigido para meu Conselheiro Especialista.

Muito obrigado pela pronta solução do problema!!!
 
Demax, Gerador do Método Digital - http://fx.qrz.ru/
Há também um pago da Finware. não o experimentei
Razão: