Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 926

 

Добрый вечер всем!

Появился вопрос, над которым я раньше особо не задумывался. Что такое тик? Как он формируется? Когда накопится достаточный объем сделок? Минимальным шагом цены или времени он быть не может, так как тики идут неравномерно по времени и могут повторять предыдущие значения бид-аск.

И как происходит торговые операции в МТ? Вот например мы запрашиваем цену Аск, производим вычисления и отправляем ордер на покупку. Он исполнится по той цене Аск, которую мы получили, или по цене на следующем тике (при условии что все вычисления прошли быстрее чем поступила инфа о новом тике) ? То есть имеется ли какая то продолжительность тика и от чего она зависит, если да?

 
AlexeyVik:

В зависимости от количества линий объявить буферы индикатора и там где рисуется линия одновременно записывать в один из буферов значение. А потом из советника через iCustom() читать это значение.

Это в двух словах.

Ну а вы в курсе что когда рисуется линия, указывается начальное время и конечное ну и соответственно цена. А для буфера необходимо организовывать цикл по всем барам. Вы бы сначала код глянули, а потом советы давали. А то толку от Ваших советов 0......
 
nikelodeon:
Ну а вы в курсе что когда рисуется линия, указывается начальное время и конечное ну и соответственно цена. А для буфера необходимо организовывать цикл по всем барам. Вы бы сначала код глянули, а потом советы давали. А то толку от Ваших советов 0......

Вот как раз цену и надо сувать в буфер.

А цикл нужен исключительно для того, чтобы показания были для всех баров. Точнее для красоты, а работают все, как правило с показаниями последних двух баров, 0 и 1.

Если в индикаторе не предусмотрена обработка всех баров, видимо она и не нужна.

Мне так-же как и многим лениво колупать этот код, а может даже ленивей чем всем вместе взятым, а ты мне советуешь посмотреть код... оно мне надо? Просил в двух словах. Каков вопрос таков и ответ. А если от моих советов толку 0, значит не тому советую.

 
AlexeyVik:

Вот как раз цену и надо сувать в буфер.

А цикл нужен исключительно для того, чтобы показания были для всех баров. Точнее для красоты, а работают все, как правило с показаниями последних двух баров, 0 и 1.

Если в индикаторе не предусмотрена обработка всех баров, видимо она и не нужна.

Мне так-же как и многим лениво колупать этот код, а может даже ленивей чем всем вместе взятым, а ты мне советуешь посмотреть код... оно мне надо? Просил в двух словах. Каков вопрос таков и ответ. А если от моих советов толку 0, значит не тому советую.

Действительно не тому, Я хоть и программирую так себе, но всё таки пишу код, каким бы кривым он не был. И сама суть вопроса заключается в том. КАК организовать цикл для буфера, чтобы отображались уровни опционов на истории. Что бы можно было потом поработать с этой историей, проверить гипотезу и сохранить данные. Нужно организовать грамотный цикл. Тут я думаю задачка и становится интересной...... Но вот идеи в голову не идут совсем.... каким способом это сделать. Чувствую нужно привязываться к датам и как то от них плясать. Но тут вылазит проблема с тайм фреймом. Вообщем задачка оказывается та ещё.... Хотелось бы услышать мнение по подробней. А то что в буфер нужно записывать цену!!!! Ну не настолько уж я тупой, поверь, чтоб этого не понимать.....

 
Думаю нужно ждать начала недели, глядишь профи вернутся с дачь и начнут подсказывать.....
 
nikelodeon:

Действительно не тому, Я хоть и программирую так себе, но всё таки пишу код, каким бы кривым он не был. И сама суть вопроса заключается в том. КАК организовать цикл для буфера, чтобы отображались уровни опционов на истории. Что бы можно было потом поработать с этой историей, проверить гипотезу и сохранить данные. Нужно организовать грамотный цикл. Тут я думаю задачка и становится интересной...... Но вот идеи в голову не идут совсем.... каким способом это сделать. Чувствую нужно привязываться к датам и как то от них плясать. Но тут вылазит проблема с тайм фреймом. Вообщем задачка оказывается та ещё.... Хотелось бы услышать мнение по подробней. А то что в буфер нужно записывать цену!!!! Ну не настолько уж я тупой, поверь, чтоб этого не понимать.....

 

Так вот он, весь цикл на месте и организован правильно и буферы заполняются.

 for(i=limit; i>=0; i--){  
      if ((Close[i+5]>Level1)&&(Open[i+5]>Level1)&&(Close[i]>Level1)&&(Open[i]>Level1)&&(Close[i+1]>Level1)&&(Open[i+1]>Level1)&&(Close[i+2]>Level1)&&(Open[i+2]>Level1)&&(Close[i+3]>Level1)&&(Open[i+3]>Level1)&&(Close[i+4]>Level1)&&(Open[i+4]>Level1)) qLevel1=Level1+EnterUP;  
      if ((Close[i+5]<Level1)&&(Open[i+5]<Level1)&&(Close[i]<Level1)&&(Open[i]<Level1)&&(Close[i+1]<Level1)&&(Open[i+1]<Level1)&&(Close[i+2]<Level1)&&(Open[i+2]<Level1)&&(Close[i+3]<Level1)&&(Open[i+3]<Level1)&&(Close[i+4]<Level1)&&(Open[i+4]<Level1)) qLevel1=Level1-EnterDw;  
      if ((Close[i+5]>Level2)&&(Open[i+5]>Level2)&&(Close[i]>Level2)&&(Open[i]>Level2)&&(Close[i+1]>Level2)&&(Open[i+1]>Level2)&&(Close[i+2]>Level2)&&(Open[i+2]>Level2)&&(Close[i+3]>Level2)&&(Open[i+3]>Level2)&&(Close[i+4]>Level2)&&(Open[i+4]>Level2)) qLevel2=Level2+EnterUP;  
      if ((Close[i+5]<Level2)&&(Open[i+5]<Level2)&&(Close[i]<Level2)&&(Open[i]<Level2)&&(Close[i+1]<Level2)&&(Open[i+1]<Level2)&&(Close[i+2]<Level2)&&(Open[i+2]<Level2)&&(Close[i+3]<Level2)&&(Open[i+3]<Level2)&&(Close[i+4]<Level2)&&(Open[i+4]<Level2)) qLevel2=Level2-EnterDw;  
      if ((Close[i+5]>Level3)&&(Open[i+5]>Level3)&&(Close[i]>Level3)&&(Open[i]>Level3)&&(Close[i+1]>Level3)&&(Open[i+1]>Level3)&&(Close[i+2]>Level3)&&(Open[i+2]>Level3)&&(Close[i+3]>Level3)&&(Open[i+3]>Level3)&&(Close[i+4]>Level3)&&(Open[i+4]>Level3)) qLevel3=Level3+EnterUP;  
      if ((Close[i+5]<Level3)&&(Open[i+5]<Level3)&&(Close[i]<Level3)&&(Open[i]<Level3)&&(Close[i+1]<Level3)&&(Open[i+1]<Level3)&&(Close[i+2]<Level3)&&(Open[i+2]<Level3)&&(Close[i+3]<Level3)&&(Open[i+3]<Level3)&&(Close[i+4]<Level3)&&(Open[i+4]<Level3)) qLevel3=Level3-EnterDw;  
      if ((Close[i+5]>Level4)&&(Open[i+5]>Level4)&&(Close[i]>Level4)&&(Open[i]>Level4)&&(Close[i+1]>Level4)&&(Open[i+1]>Level4)&&(Close[i+2]>Level4)&&(Open[i+2]>Level4)&&(Close[i+3]>Level4)&&(Open[i+3]>Level4)&&(Close[i+4]>Level4)&&(Open[i+4]>Level4)) qLevel4=Level4+EnterUP;  
      if ((Close[i+5]<Level4)&&(Open[i+5]<Level4)&&(Close[i]<Level4)&&(Open[i]<Level4)&&(Close[i+1]<Level4)&&(Open[i+1]<Level4)&&(Close[i+2]<Level4)&&(Open[i+2]<Level4)&&(Close[i+3]<Level4)&&(Open[i+3]<Level4)&&(Close[i+4]<Level4)&&(Open[i+4]<Level4)) qLevel4=Level4-EnterDw;  
      if ((Close[i+5]>Level5)&&(Open[i+5]>Level5)&&(Close[i]>Level5)&&(Open[i]>Level5)&&(Close[i+1]>Level5)&&(Open[i+1]>Level5)&&(Close[i+2]>Level5)&&(Open[i+2]>Level5)&&(Close[i+3]>Level5)&&(Open[i+3]>Level5)&&(Close[i+4]>Level5)&&(Open[i+4]>Level5)) qLevel5=Level5+EnterUP;  
      if ((Close[i+5]<Level5)&&(Open[i+5]<Level5)&&(Close[i]<Level5)&&(Open[i]<Level5)&&(Close[i+1]<Level5)&&(Open[i+1]<Level5)&&(Close[i+2]<Level5)&&(Open[i+2]<Level5)&&(Close[i+3]<Level5)&&(Open[i+3]<Level5)&&(Close[i+4]<Level5)&&(Open[i+4]<Level5)) qLevel5=Level5-EnterDw;  
      if ((Close[i+5]>Level6)&&(Open[i+5]>Level6)&&(Close[i]>Level6)&&(Open[i]>Level6)&&(Close[i+1]>Level6)&&(Open[i+1]>Level6)&&(Close[i+2]>Level6)&&(Open[i+2]>Level6)&&(Close[i+3]>Level6)&&(Open[i+3]>Level6)&&(Close[i+4]>Level6)&&(Open[i+4]>Level6)) qLevel6=Level6+EnterUP;  
      if ((Close[i+5]<Level6)&&(Open[i+5]<Level6)&&(Close[i]<Level6)&&(Open[i]<Level6)&&(Close[i+1]<Level6)&&(Open[i+1]<Level6)&&(Close[i+2]<Level6)&&(Open[i+2]<Level6)&&(Close[i+3]<Level6)&&(Open[i+3]<Level6)&&(Close[i+4]<Level6)&&(Open[i+4]<Level6)) qLevel6=Level6-EnterDw;  
      if ((Close[i+5]>Level7)&&(Open[i+5]>Level7)&&(Close[i]>Level7)&&(Open[i]>Level7)&&(Close[i+1]>Level7)&&(Open[i+1]>Level7)&&(Close[i+2]>Level7)&&(Open[i+2]>Level7)&&(Close[i+3]>Level7)&&(Open[i+3]>Level7)&&(Close[i+4]>Level7)&&(Open[i+4]>Level7)) qLevel7=Level7+EnterUP;  
      if ((Close[i+5]<Level7)&&(Open[i+5]<Level7)&&(Close[i]<Level7)&&(Open[i]<Level7)&&(Close[i+1]<Level7)&&(Open[i+1]<Level7)&&(Close[i+2]<Level7)&&(Open[i+2]<Level7)&&(Close[i+3]<Level7)&&(Open[i+3]<Level7)&&(Close[i+4]<Level7)&&(Open[i+4]<Level7)) qLevel7=Level7-EnterDw;  
      if ((Close[i+5]>Level8)&&(Open[i+5]>Level8)&&(Close[i]>Level8)&&(Open[i]>Level8)&&(Close[i+1]>Level8)&&(Open[i+1]>Level8)&&(Close[i+2]>Level8)&&(Open[i+2]>Level8)&&(Close[i+3]>Level8)&&(Open[i+3]>Level8)&&(Close[i+4]>Level8)&&(Open[i+4]>Level8)) qLevel8=Level8+EnterUP;  
      if ((Close[i+5]<Level8)&&(Open[i+5]<Level8)&&(Close[i]<Level8)&&(Open[i]<Level8)&&(Close[i+1]<Level8)&&(Open[i+1]<Level8)&&(Close[i+2]<Level8)&&(Open[i+2]<Level8)&&(Close[i+3]<Level8)&&(Open[i+3]<Level8)&&(Close[i+4]<Level8)&&(Open[i+4]<Level8)) qLevel8=Level8-EnterDw;  
      if ((Close[i+5]>Level9)&&(Open[i+5]>Level9)&&(Close[i]>Level9)&&(Open[i]>Level9)&&(Close[i+1]>Level9)&&(Open[i+1]>Level9)&&(Close[i+2]>Level9)&&(Open[i+2]>Level9)&&(Close[i+3]>Level9)&&(Open[i+3]>Level9)&&(Close[i+4]>Level9)&&(Open[i+4]>Level9)) qLevel9=Level9+EnterUP;  
      if ((Close[i+5]<Level9)&&(Open[i+5]<Level9)&&(Close[i]<Level9)&&(Open[i]<Level9)&&(Close[i+1]<Level9)&&(Open[i+1]<Level9)&&(Close[i+2]<Level9)&&(Open[i+2]<Level9)&&(Close[i+3]<Level9)&&(Open[i+3]<Level9)&&(Close[i+4]<Level9)&&(Open[i+4]<Level9)) qLevel9=Level9-EnterDw;  
      if ((Close[i+5]>Level10)&&(Open[i+5]>Level10)&&(Close[i]>Level10)&&(Open[i]>Level10)&&(Close[i+1]>Level10)&&(Open[i+1]>Level10)&&(Close[i+2]>Level10)&&(Open[i+2]>Level10)&&(Close[i+3]>Level10)&&(Open[i+3]>Level10)&&(Close[i+4]>Level10)&&(Open[i+4]>Level10)) qLevel10=Level10+EnterUP;  
      if ((Close[i+5]<Level10)&&(Open[i+5]<Level10)&&(Close[i]<Level10)&&(Open[i]<Level10)&&(Close[i+1]<Level10)&&(Open[i+1]<Level10)&&(Close[i+2]<Level10)&&(Open[i+2]<Level10)&&(Close[i+3]<Level10)&&(Open[i+3]<Level10)&&(Close[i+4]<Level10)&&(Open[i+4]<Level10)) qLevel10=Level10-EnterDw;  
      
Buffer1[i]=qLevel1;      
Buffer2[i]=qLevel2;      
Buffer3[i]=qLevel3;      
Buffer4[i]=qLevel4;      
Buffer5[i]=qLevel5;      
Buffer6[i]=qLevel6;      
Buffer7[i]=qLevel7;      
Buffer8[i]=qLevel8;      
Buffer9[i]=qLevel9;           
Buffer10[i]=qLevel10;  
//Buffer11[i]=LevelsVerticalShift;
 }

Но к этому индикатору должен быть какой-то файл. Что в нём должно быть не известно.

 
nikelodeon:

Сохраняйте значения Трендовых линий (горизонтальных отрезков) в Терминальные переменные, которые для каждой линии могут принимать вид элементов массива (если Вам захочется их считывать в цикле): {Line[0][0], Line[0][1], Line[0][2]..},   {Line[1][0], Line[1][1], Line[1][2]..} и т.п. Еще одна Терм.переменная "Status 0/1" понадобится для того чтобы указать другому индикатору/советнику когда необходимо считать параметры новой линии, после чего вернуть "Status" в исходное положение. Если линии считываются не все сразу, а по мере поступления то можно обойтись только одним набором Line[][].
 
AlexeyVik:

Так вот он, весь цикл на месте и организован правильно и буферы заполняются.

Но к этому индикатору должен быть какой-то файл. Что в нём должно быть не известно.

Кто же такие страшные вещи делает. А подумать автору не можется?
 
Vinin:
Кто же такие страшные вещи делает. А подумать автору не можется?
А ко мне какие вопросы? Я не автор... И даже не выпивал с ним.
 
ДД! Не могу открыть одно окно в терминале. Зависает напрочь. Там какой то индикатор вешает наглухо и не дает открыться окну. Подскажите пожалуйста, как можно посмотреть какие индикаторы установлены на этом графике. Спасибо!
Причина обращения: