[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 976

 
granit77:
Выбрать нужное.
+10 :)))))
 
fanat:

Работает!! Только в том что я находил много лишнего, а я не знаю как это лишнее отсеять
А почему вы думаете, что там много лишнего ??? Если кто-то уже написал то, что вам нужно, значит он не писал лишнего, а? И наверняка именно для того, чтобы этим "лишним" не оказались деньги вашего депозита... Как думаете? Или тогда уж предложите, а главное - покажите то, что считаете лишним. Иначе - вам на форум телепатов.
 
tuma88:


Спасибо !

а можно чтобы находилась первая стрелка и потом выход из цикла?

Какая из них? Любая? Или и та и другая, но только первые?

Если нужна любая первая - то при её нахождении - вываливайтесь из цикла, а если нужны и та и другая, то тут нужно цикл, вернее поиск внутри цикла переписывать.

 
artmedia70:

Где-то так...

Этот код ничего полезного не сделает - каждый раз при нахождении стрелки в цикле он будет присваивать переменным BarWithArrowUP и BarWithArrowDN номер бара, на котором найдена стрелка. Вам и решать как их обрабатывать. Можете создать массив, в который будете записывать бары со стрелками вверх и вниз, а потом уже брать из этих массивов номера баров со стрелками, а можете, а можете, а чё хотите, то и можете... :)

В вашем коде будет найдена самая первая стрелка от начала цикла. break прервёт выполнение цикла, а return нужен если только это у вас функция и вернёт она вам значение найденного буфера со стрелкой, а не номер бара, на котором стрелка эта стоит.


ой...значит я правильно написал ?

Мне не нужен номер бара.

Нужна любая самая первая стрелка и это значение запомнить .

По поводу return....То есть это значение в скобках и будет являться стрелкой? (а это значение можно как-то увидеть, пощупать, потрогать? Или это простое как есть напряжение в розетке или его нет ? То есть ноль и один ?)

По поводу своего кода хочу дополнительно уточнить синтаксис

for (int i=0; i<Bars(); i++)

{

signal = iCustom (NULL,0 и так далее... буфер стрелки вверх )

// а здесь нужно ещё вписать проверку буферов и для стрелки вверх и для стрелки вниз как вас ???То есть дописать signal2

signal2=iCustom (NULL,0 и так далее... буфер стрелки вниз )

// и здесь нужно ещё организовать проверку if (signal || signal2>0) запомнить значение и выход из цикла.

Блин..что-то я запутался... как вывести в return если у нас есть сигнал и сигнал2 что из них выводить если окажется больше нуля ???

{ // Здесь нужны скобки ???

return(signal)

}

break

}
 

А какой порядок подстановки баров вместо i в iCustom

for (i=0; i<nBars; i++) {
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i) 
Например , перебираются  все  бары  для первой функции стрелка  вверх, а потом  те же  бары перебираются  для функции вниз...? То есть я  хотел  спросить, одновременно вычисляется значение для стрелки вверх  и вниз  на выбранном  баре?
 
tuma88:

А какой порядок подстановки баров вместо i в iCustom

То есть я  хотел  спросить, одновременно вычисляется значение для стрелки вверх  и вниз  на выбранном  баре?

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

В цикле, в самом его начале проверяются значения на 0-м баре при i=0, на следующей итерации цикла при i=1 проверяется первый бар, затем второй, третий и т.д. до i=nBars-1

В цикле проверяются значения обоих буферов на каждой итерации цикла.

 
double DataIndUP, DataIndDN;
int    i, GlobalFlag, nBars = 250 ;  // nBars = количество проверяемых баров вглубь истории

for (i=0; i<nBars; i++) 
{
   DataIndUP = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вверх, i)
   DataIndDN = iCustom(Symbol(),Period(),"Имя индюшонка", через запятую все параметры индюка , номер буфера стрелки вниз, i)
   if (DataIndUP !=EMPTY_VALUE)     // или if (DataIndUP !=0) // найдена стрелка вверх
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=+1                 // присвоение значения +1(стрелка вверх)  переменной 
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
if (DataIndDN !=EMPTY_VALUE)     // или if (DataIndDN !=0) // найдена стрелка вниз
                                    // всё зависит от того, что выдаёт буфер при отсутствии стрелки 
                                    // нажмите Ctrl+D и посмотрите что вам в окне данных будет показано
      GlobalFlag=-1                 // присвоение значения -1(стрелка вниз) переменной
      Break;                        //выход из цикла, так как  нашлась последняя стрелка
}

А такая конструкция с подписанным GlobalFlag и оператором Break будет работать ?

Но перед этим нужно в блоке где инициализируются переменные проинициализировать и эту переменную ? И дать тип int ?????

 

Короче. Есть мысля про робота. сам естевственно программу написать не могу. кого заинтересует свистите.

 
Tupen:

Короче. Есть мысля про робота. сам естевственно программу написать не могу. кого заинтересует свистите.

Думаете, Вас тут свистом оглушат? Скорее - освистят ... :)

Идею выкладывайте - глядишь народец и пошевелится (при неплохости идеи)... А за оговоренное вознаграждение может даже чуть активнее шевеление будет ... :)

 
Tupen:

Короче. Есть мысля про робота. сам естевственно программу написать не могу. кого заинтересует свистите.

а руками удачно по этому алгоритму работаете?
Причина обращения: