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

[Удален]  
Подскажите как реализовать идею. На каждои тике открываем два ордера бай и селл, если (для бай) в рынке нет ордеров по текущей цене аск. Для сел тоже самое но с бид. заранее благодарю.
 

Вопрос по OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

Правильно ли я понимаю, что в таком режиме выбора/перебора ордеров их порядок не гарантирован? Т.е. например после перезапуска терминала или другого "катаклизма" цикл перебора всех ордеров может выдать их в другой последовательности?

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

Вобщем, хотелось бы поточнее узнать все нюансы выборки ордеров в режиме  SELECT_BY_POS...

 
TarasBY:

Есть непонятки с прибавлением 0, но пробуйте так:


Ноли как-то давно посоветовали здесь на форуме, к i прибавлять индекс.

 

Сделал, все как сказали. Не получается отрисовать после отсчета. Зеленая и красная точка идут вместе.

Необходимо зафиксировать к примеру, когда  "line1 > 0." и после определенного количества баров при условии, что на всех барах  "line1 > 0." делать отрисовку.

В советнике получилось сделать, а в индикаторе что-то никак.

1 

 
Forexman77:

Ноли как-то давно посоветовали здесь на форуме, к i прибавлять индекс.

 

Сделал, все как сказали. Не получается отрисовать после отсчета. Зеленая и красная точка идут вместе.

Необходимо зафиксировать к примеру, когда  "line1 > 0." и после определенного количества баров при условии, что на всех барах  "line1 > 0." делать отрисовку.

В советнике получилось сделать, а в индикаторе что-то никак.

Я подправил явную ошибку: добавление ко времени индекса бара. Всё остальное авторский "полёт фантазии" - экспериментируйте.
 
TarasBY:
Я подправил явную ошибку: добавление ко времени индекса бара. Всё остальное авторский "полёт фантазии" - экспериментируйте.

Провел себе мозговой штурм) И нашел решение:

 for(i=limit1;i>=0;i--) 
   {
   line1=0.;
   signal_line=0.;
   line1=iCustom(NULL,0,"indikator1",Period_MA_r,r2,1,i+0);
   signal_line=iCustom(NULL,0,"indikator2",Period_MA_1,p2,0,i+0);
   if (line1 == 0){shift=0;}//если индикатор равен нолю, то время сбрасывается на ноль
   if (line1 > 0.){shift=shift+1;}//на каждом баре плюс один
   if (line1 > 0 && signal_line < s)ExtMapBuffer1[i] = Low[i] - 95.*Point;
   if (line1 > 0 && shift >= shet && signal_line < s)ExtMapBuffer2[i] = High[i] + 95.*Point;
   }
 
genino:
Подскажите как реализовать идею. На каждои тике открываем два ордера бай и селл, если (для бай) в рынке нет ордеров по текущей цене аск. Для сел тоже самое но с бид. заранее благодарю.

проверяешь наличие открытых ордеров.Потом их свойства перебираешь: тип ордера и по какой цене открыт.Далее отправляешь запрос на открытие ордера или нет. Всё просто,в чём запутался?)
 
AlexPORT:

Вопрос по OrderSelect(i, SELECT_BY_POS, MODE_TRADES)

Правильно ли я понимаю, что в таком режиме выбора/перебора ордеров их порядок не гарантирован? Т.е. например после перезапуска терминала или другого "катаклизма" цикл перебора всех ордеров может выдать их в другой последовательности?

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

Вобщем, хотелось бы поточнее узнать все нюансы выборки ордеров в режиме  SELECT_BY_POS...


Я тоже пытался обсудить данный вопрос на этом форуме около года назад. То, что Вам не отвечают, говорит о том, что ситуация не сильно изменилась с тех пор. Мы, пользователи, сами не знаем как это в точности происходит. А пояснений от МетаКвотов на этот счет я тоже не нашел. Есть вариант обратиться напрямую к разработчику, если есть желание и возможность на это потратить силы и время.

Лично по моим наблюдениям тут вопрос обстоит следующим образом (но это наблюдения, а не официально документированная особенность - за официальным - это МетаКвотс должны объявить). Когда у Вас загружен терминал Вы, как пользователь, имеете возможность выставлять фильтры сортировки: по тикету, цене открытия, типу ордера и т.д... Для этого достаточно кликнуть мышкой на заголовке соответствующей колонки. И в зависимости от этого и будет меняться порядок сортировки. Когда ордера открываются в процессе торговли, то они записываются по мере их выставления, отмены, и закрытия. При перезагрузке терминала, разумеется, все это считывается и сортируется в зависимости от настроек по умолчанию (вроде по тикету). И т.д. и т.д... Я не буду перечислять все возможные варианты сортировки, пытливый ум может сам их достроить. Здесь мораль сказанного другая (такая): Чтобы правильно управляться с последовательностью отбора и выборки ордеров, нужно прежде самостоятельно делать необходимую сортировку. Для этого нужно применять соответствующие алгоритмы сортировки. Если ордеров мало, то практически любой алгоритм подойдет. А, вот, если много... это уже специализированная "песня". Тут нужно хорошо разбираться в этих алгоритмах. Иначе может случится так, что сортировка будет очень значительной по времени.

В кодабазе где-то был алгоритм сортировки. Вроде пузырьковый. Я не смог им научиться пользоваться - каюсь.

Вот, что-то из этой серии: https://www.mql5.com/ru/code/9336

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

 
igalx:
Можно ли загружать графики для тех.анализа,в МТ-4 - индексов S&P 500 Futures Chart , TA 25 Chart, и S&P 500 Chart если это возможно может подскажете как это сделать,может есть объяснение как загружать!

Более точно вопрос сформулируйте. Я, конечно, могу догадываться (предполагать), что вы о каком-то интернет-сервисе говорите. Но, забив в поисковик ваши перечисления, получил множество различных вариантов. И хотелось бы понимать, зачем вам это нужно? Какую задачу вы этим преследуете?

Но, если вы подразумеваете сервис, то почему бы в этом сервисе теханализ и не делать. А в мт4 вы можете воспользоваться котировками из терминала, если ваш брокер их предоставляет. Если нет, то загрузите терминал любого из популярных ДЦ, там точно будет все то, что вам необходимо. И даже более того.

 
igalx:

Может кто подскажет ,устанавливаю плагин GetTickerHistory в МТ-4,запускается,но загрузка не идёт,возможно ли загрузить внешние индексы другим способом.

Заранее благодарен.

Кто у вас брокер? Скорее всего к-нить ДЦ?... У них все эти внешние индексы есть - правый клик на окошке "Обзор рынка" - пункт "Символы" - выберите все, что вам нужно, и наслаждайтесь. И будет крайне полезным прочитать шикарное описание терминала, нажав клавишу "F1" - Помощь. У МетаКвотов тут зачет - хорошо реализовали. После прочтения, Вы станете трейдером другого уровня квалификации. Всем рекомендую.

Совет 1: Когда Вы просите помочь с плагином, то было бы неплохо его прикрепить к сообщению. Мы же не будем рыскать по поисковикам, чтобы найти его, установить и помочь Вам в Вашем затруднении. А чтобы понять в чем сложности плагина, нужен исходник в формате "mq4".

Совет 2: Это форум (ветка) по программированию, а не по пользованию терминалом. Поэтому на не программисткие вопросы тут могут и не ответить - проигнорируют.

 
genino:
Подскажите как реализовать идею. На каждои тике открываем два ордера бай и селл, если (для бай) в рынке нет ордеров по текущей цене аск. Для сел тоже самое но с бид. заранее благодарю.

Подсказываю - здесь возможны 3 варианта:

1. Изучаете язык программирования, к примеру, МКЛ и реализуете все свои "безумные" фантазии в коде. Тратите на это время, силы. Заодно в процессе понимаете всю глупость изначально поставленной задачи и осознаете бесполезность потраченных усилий. Но растете как специалист и более грамотным взглядом смотрите на мир. (Это не лично Вам - не обижайтесь. Это проходят все программисты, в том числе и очень опытные. Это естественный и регулярный процесс.)

2. Приносите кучу бабла, если самому не охота расти, но есть бабки на понты, и заказываете это у стороннего программиста, если он согласиться решать "непонятные задачи", за не решение которых (а это было изначально в постановке задачи) Вы будете трепать ему нервы и упрекать в оплаченной работе.

3. Просто понимаете всю несостоятельность поставленной задачи и отказываетесь от нее. Взамен придумываете новую идею, более совершенную. Это обычный и очень частый процесс творца.

А вообще, это Ваша задача, как разработчика, искать способ решения задачи. На форуме Вам лишь могут помочь с техническими аспектами кодирования, изредка программирования. Иначе - это уже работа, которую либо вы оплачиваете, либо делаете сами (возможно для других). Помощь и работа в этом отличаются. Вы просите выполнить работу, а не помочь. Разные задачи. Не в упрек, в помощь понимания постановки (формулирования) задачи.