статический массив ? - страница 6

 

Слишком много кода в этом простом английском описании....

Фракталы хранятся в буферах индикаторов, вы понимаете как? если нет напишите код, который поможет вам понять....

Вы можете прочитать буферы Индикатора и найти номера баров по Фракталам, из номера бара вы можете получить значения свечей . . .

 
RaptorUK:

Слишком много кода в этом простом английском описании....

Фракталы хранятся в буферах индикаторов, вы понимаете как? если нет напишите код, который поможет вам понять ... .

Вы можете прочитать буферы Индикатора и найти номера баров по Фракталам, из номера бара вы можете получить значения свечей . . .

Я не совсем понимаю, как хранятся буферы индикатора.


А это именно то, что я хотел сделать, найти номер бара, из фракталов и получить значения свечей.

Я продолжу, но скорее всего мне было бы понятнее, если бы я знал, как индикаторы хранят значения в буфере.

Спасибо

 

Есть 3 буфера, v1, v2 и v3, и есть три других двойника, val1, val2 и val3, используемые для вычисления. v3 и val3, кажется, не используются ....

val1 и val2 содержат значение, создаваемое iFractals, это значение вычисляется для каждого бара по очереди, цикл while перебирает бары, начиная с Bars и уменьшая до нуля. ...

Итак, для каждого бара значение фракталов вычисляется и сохраняется в v1 для MODE_UPPER и v2 для MODE_LOWER, давайте проработаем для v1. . . .

Для каждого бара по очереди . Если val1 больше 0, то значение буфера v1 для номера бара устанавливается на High этого бара, так что представьте, что цикл проходит часть пути по барам от Bars до 0, представим, что он находится на баре номер 4934, фрактал вычисляется для бара номер 4934, если значение больше 0, то v1[4934] устанавливается на High[4934], другими словами 4935-й элемент буфера v1 устанавливается на High бара номер 4934... Не забывайте, что массивы начинаются с 0.

Наконец, есть небольшое усложнение, которое вам нужно понять... Запустите индикатор, и вы увидите линию точек от каждого фрактального максимума и минимума... до следующего... Представьте, что мы сейчас на баре номер 4933 и значение val1 не больше 0, что теперь происходит, так это то, что значение буфера для этого бара не устанавливается на High этого бара, а устанавливается на то же значение, что и предыдущая запись в буфере... предыдущая в этом случае означает i+1, потому что в цикле while i идет обратный отсчет.

Когда цикл завершится и все бары получат свои фракталы, все записи в буферах будут содержать значения . Это не очень поможет вам. . вам нужно немного изменить код.

Прочитайте то, что я написал здесь. Если вы не понимаете, что происходит, то вам нечего делать с этим кодом. ... как только вы поймете, вы сможете двигаться дальше... любые вопросы, пожалуйста, задавайте.

 
RaptorUK:

Есть 3 буфера, v1, v2 и v3, и есть три других двойника, val1, val2 и val3, используемые для вычисления. v3 и val3, кажется, не используются ....

val1 и val2 содержат значение, создаваемое iFractals, это значение вычисляется для каждого бара по очереди, цикл while перебирает бары, начиная с Bars и уменьшаясь до нуля. ...

Итак, для каждого бара значение фракталов вычисляется и сохраняется в v1 для MODE_UPPER и v2 для MODE_LOWER, давайте проработаем для v1. . . .

Для каждого бара по очереди . Если val1 больше 0, то значение буфера v1 для номера бара устанавливается на High этого бара, так что представьте, что цикл проходит часть пути по барам от Bars до 0, представим, что он находится на баре номер 4934, фрактал вычисляется для бара номер 4923, если значение больше 0, то v1[4394] устанавливается на High[4394], другими словами 4395-й элемент буфера v1 устанавливается на High бара номер 4394... Не забывайте, что массивы начинаются с 0.

Наконец, есть небольшое усложнение, которое вам нужно понять... Запустите индикатор, и вы увидите линию точек от каждого фрактального максимума и минимума... до следующего... Представьте, что мы сейчас на баре номер 4933 и значение val1 не больше 0, что теперь происходит, так это то, что значение буфера для этого бара не устанавливается на High этого бара, а устанавливается на то же значение, что и предыдущий элемент буфера... предыдущий в этом случае означает i+1, потому что в цикле while i идет обратный отсчет.

Когда цикл завершится и все бары получат свои фракталы, все записи в буферах будут содержать значения . Это не очень поможет вам. . вам нужно немного изменить код.

Прочитайте то, что я написал здесь. Если вы не понимаете, что происходит, то вам нечего делать с этим кодом. ... как только вы поймете, вы сможете двигаться дальше... любые вопросы, пожалуйста, задавайте.

Я понимаю, что индикатор работает именно так, как вы описали. Я думал, что понимаю также, как буфер хранит значения, поэтому я запутался, потому что когда я перекодировал код для печати, я не получил результатов, которые ожидал увидеть.

Однако, теперь преодолено серьезное препятствие в виде понимания того, что буфер отличается от буфера и НЕ объявляет количество элементов, из-за чего я не мог печатать из буфера

Ok, идем дальше.
Я предполагаю, что есть некоторые опечатки в ваших ссылках на номер бара 4934, фрактал рассчитывается для бара номер 4923 и должен читать 4933.
А также для значения больше 0, v1[4394] устанавливается на High[4394] == Я предполагаю, что это должно следовать предыдущей ссылке на 4923/33, но я понимаю, что это номер элемента выше, чем номер бара.

Пожалуйста, поправьте меня, если я ошибаюсь насчет опечаток.

В любом случае, если это опечатки и я понимаю, что это значит.

Я подумал, что мне нужно создать v3, объявить его и инициализировать аналогичным образом, чтобы иметь возможность вывести его или получить из него значение.
Изначально я думал, что смогу вывести i-1, чтобы извлечь сохраненное значение High[i] в тот момент, когда оно было больше 0 и для этого бара.
Или даже v1[i] = v1[1-1] и печатать v1[i] в это время, но я не проработал эту часть, а также не смог пройти мимо части печати, поскольку количество элементов не было объявлено.

Вот почему я хотел создать другую схему v3, но фактически ту же самую, просто чтобы создать массив с объявленным числом элементов, из которого я мог бы извлечь значение фракталов для этих баров.

Вот здесь у меня проблемы с дизайном, так что я буду работать над этим еще

Спасибо.

 
Agent86:

Я понимаю, что индикатор работает именно так, как вы описали. Я думал, что понимаю также, как буфер хранит значения, поэтому я запутался, потому что когда я перекодировал вещи для печати, я не получил результатов, которые ожидал увидеть.

Однако, теперь я преодолел серьезное препятствие, поняв, как буфер отличается и НЕ объявляет количество элементов, поэтому я не мог печатать из буфера.

Ладно, идем дальше.
Я предполагаю, что есть некоторые опечатки в ваших ссылках на номер бара 4934, фрактал рассчитывается для бара номер 4923 и должен читать 4933.
А также для значения больше 0, v1[4394] устанавливается на High[4394] == Я предполагаю, что это означает следовать предыдущей ссылке на 4923/33, но я понимаю, что это номер элемента выше, чем номер бара.

Пожалуйста, поправьте меня, если я ошибаюсь в опечатках.

Извините за опечатки. . . Я исправил свой текст с правильными значениями . . . Я не очень хорош с утра ;-)

Вы видите небольшую модификацию, которую нужно сделать в коде, прежде чем он будет полезен для вас?

 
    for(i=Bars; i >= 0; i--)
     {
     val3=iFractals(NULL, 0, MODE_UPPER,i);
     if(val3>0)
      {
      double v3[1000];
      v3[i]=High[i];
      Print ("v3[", i, "]= ", v3[i], " if");
      }
     else          
         {
         v3[i]=v3[i+1];
         Print ("v3[", i, "]= ", v3[i], " else");
         }
     }
Хорошо, я достиг некоторого прогресса в этом, я думаю, что главное было то, что я не мог пройти мимо объявления буфера, который всегда выдавал 0 для моих print-статей.

Я думаю, что смогу справиться с этим.
Сейчас я получаю искомые значения, по крайней мере, из того, что я могу сказать, я, возможно, на правильном пути.

2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[5]= 1.3361 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[6]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[7]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[8]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[9]= 1.3343 else
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[10]= 1.3343 if
2011.09.24 12:26:21 2011.01.02 19:09 Agent86_5min EURUSD,M5: v3[11]= 1.3399 else


Еще раз спасибо
 
Я подозреваю, что вы действительно не хотите или не нуждаетесь в другом.
 
RaptorUK:
Я подозреваю, что вы действительно не хотите или не нуждаетесь в другом.

Да, вы правы.