Ответ
 
Опции темы
Старый 21.09.2015, 18:51   #4161 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от gush Посмотреть сообщение
пацаны, может кто что переделывал/трогал, а может просто завалялось у кого... простой сов для восстановления всех/любых закрытых ордеров на их прежнее место один в один? Весь инет перерыл, может куском кода.. просто поделитесь у кого что есть по этому вопросу.. любые аналоги алгоритма... спасибо!!!!!!!
А за какое время?
Ты видать не совсем понимаешь, что через некоторое время, отложки вошли в рынок или были удалены, рыночные ордера тоже закрылись и восстановить их в том виде, по той цене и того типа, какими они были уже нельзя. (Это если я правильно вопрос понял.)

Вторая часть (Про алгоритм.):
Если интересует история. Проходишь по списку ордеров в истории, и если тип ордера больше от "0" и до "5", отрисовываешь на графике, или если рыночная ситуация позволяет, преоткрываешь позицию по данным из истории.

Где то так. Возможны и другие варианты.

Последний раз редактировалось _SERG_; 21.09.2015 в 18:56.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (22.09.2015)
Старый 22.09.2015, 04:15   #4162 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от _SERG_ Посмотреть сообщение
А за какое время?
Ты видать не совсем понимаешь, что через некоторое время, отложки вошли в рынок или были удалены, рыночные ордера тоже закрылись и восстановить их в том виде, по той цене и того типа, какими они были уже нельзя. (Это если я правильно вопрос понял.)

Вторая часть (Про алгоритм.):
Если интересует история. Проходишь по списку ордеров в истории, и если тип ордера больше от "0" и до "5", отрисовываешь на графике, или если рыночная ситуация позволяет, преоткрываешь позицию по данным из истории.

Где то так. Возможны и другие варианты.
лимитки/стоповые не удаляются.. а если и так, если в ручную удалять отложки - их мониторить и восстанавливать не нужно. Восстагнавливать только открытые.
а вот если срабатал, например байстоп поцене 1.3000 с тейком 20 стопом в 10, тогда.. если закрылся по тейку, т.е. на 1.3020 сразу выставляется байлимит на 1.3000, а если закрылся по стопу на 1.2990, тогда выставляется байстоп на 1.3000 тем же лотом, с теми же тп и сл один в один и так мониторить все ордера... сложно такой процесс реализовать?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.09.2015, 04:26   #4163 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от gush Посмотреть сообщение
лимитки/стоповые не удаляются..
а если и так, если в ручную удалять отложки - их мониторить и восстанавливать не нужно.
Восстагнавливать только открытые.
а вот если срабатал, например байстоп поцене 1.3000 с тейком 20 стопом в 10, тогда..
если закрылся по тейку, т.е. на 1.3020 сразу выставляется байлимит на 1.3000, а если закрылся по стопу на 1.2990, тогда выставляется байстоп на 1.3000 тем же лотом, с теми же тп и сл один в один и так мониторить все ордера...
сложно такой процесс реализовать?
Напиши микросетку, минимальным лотом на каждом ценовом уровне ценового диапазона.

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

Последний раз редактировалось _SERG_; 22.09.2015 в 04:30.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (22.09.2015)
Старый 22.09.2015, 14:44   #4164 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от _SERG_ Посмотреть сообщение
Напиши микросетку, минимальным лотом на каждом ценовом уровне ценового диапазона.

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 22.09.2015, 19:52   #4165 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от gush Посмотреть сообщение
сетка руками ставится. Не доверю боту (без присмотра) сразу открывать одновременно бай и селл. Во время выхода новостей бот может не успеть сделать это.. пока один открывается цена может улететь... нужен бот восстанавливающий все закрытые ордера. Сетка ставится руками и все ордера должны стоять на смерть, как поставлены изначально))) вот и весь алгоритм
Тогда, какой смысл вопроса по поводу кода, если мануал трэйдинг форэвэ? Я про не доверяю ЕА. А во фрилансе, может кто и подрядится на пыполнение, если с формальными параметрами всё будет утрясено.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2015, 14:17   #4166 (permalink)
Почётный гражданин
 
Аватар для Viko2000
 
Регистрация: 22.02.2012
Сообщений: 431
Репутация: 442
Viko2000 - Viko2000 - Viko2000 - Viko2000 - Viko2000 -
Сказал(а) спасибо: 1,351
Поблагодарили 441 раз(а) в 170 сообщениях
Поинты: 430
Коллеги, на помощь, у вообще уже крыша уже поехала. Никак не могу понять что за бред. В коде нет определения isdemo что как то изменить торговлю, но в тоже время на демо бот торгует чётка по алгоритму, а ставлю на реал выставляются по алгоритму две противоположные отложки, и когда одна и них выставляется в ордер, тут же происходит закрытие всего. То есть сработавшей и выставленной противоположной отложки. Чума полная. Кто в курсе, плиз помогите. Где собоко зарыта. Может у брокера льёт крышу. Век благодарен буду.)))


p/s Не ну в теории проверить брокера можно через копир с demo, так. И если не удалятся значит код. Блин а в коде, да не может быть, ведь на демо пашет. Не ну точна у меня поехало.

Последний раз редактировалось Viko2000; 23.09.2015 в 14:30.
Viko2000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2015, 15:19   #4167 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Viko2000 Посмотреть сообщение
Коллеги, на помощь, у вообще уже крыша уже поехала. Никак не могу понять что за бред. В коде нет определения isdemo что как то изменить торговлю, но в тоже время на демо бот торгует чётка по алгоритму, а ставлю на реал выставляются по алгоритму две противоположные отложки, и когда одна и них выставляется в ордер, тут же происходит закрытие всего. То есть сработавшей и выставленной противоположной отложки. Чума полная. Кто в курсе, плиз помогите. Где собоко зарыта. Может у брокера льёт крышу. Век благодарен буду.)))


p/s Не ну в теории проверить брокера можно через копир с demo, так. И если не удалятся значит код. Блин а в коде, да не может быть, ведь на демо пашет. Не ну точна у меня поехало.

Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (23.09.2015)
Старый 23.09.2015, 15:24   #4168 (permalink)
Почётный гражданин
 
Аватар для Viko2000
 
Регистрация: 22.02.2012
Сообщений: 431
Репутация: 442
Viko2000 - Viko2000 - Viko2000 - Viko2000 - Viko2000 -
Сказал(а) спасибо: 1,351
Поблагодарили 441 раз(а) в 170 сообщениях
Поинты: 430
Сообщение от _SERG_ Посмотреть сообщение
Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
Спасибо за ответ.
Viko2000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2015, 15:27   #4169 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от _SERG_ Посмотреть сообщение
Тогда, какой смысл вопроса по поводу кода, если мануал трэйдинг форэвэ? Я про не доверяю ЕА. А во фрилансе, может кто и подрядится на пыполнение, если с формальными параметрами всё будет утрясено.
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.09.2015, 19:33   #4170 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от gush Посмотреть сообщение
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..
Основной код, будет по определению места и времени, тут уж от фантазии аФФтора всё зависит, а установка самого ордера, считай одна команда, без наворотов.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (24.09.2015)
Старый 24.09.2015, 04:14   #4171 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от _SERG_ Посмотреть сообщение
Основной код, будет по определению места и времени, тут уж от фантазии аФФтора всё зависит, а установка самого ордера, считай одна команда, без наворотов.
так может подскажешь как реализовать такой алгоритм?
Открыта сделка бай по 1.3000 тп=20, сл=10. Как только она закрылась по тейку по цене 1.3020, сов это должен заметит и выставить отложку байлимит на 1.3000 где и была. Если сделка закрывается по стопу внизу на 1.2990, сов опять это заметил выставил байстоп по 1.3000 с теми же тейками и стопами

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.09.2015, 05:41   #4172 (permalink)
Элитный участник
 
Аватар для RoboMaks
 
Регистрация: 19.08.2012
Адрес: Баку, Азербайджан
Сообщений: 651
Репутация: 1128
RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks RoboMaks
Сказал(а) спасибо: 320
Поблагодарили 1,118 раз(а) в 442 сообщениях
Поинты: 623
Отправить сообщение для RoboMaks с помощью Skype™
Сообщение от gush Посмотреть сообщение
так может подскажешь как реализовать такой алгоритм?
Открыта сделка бай по 1.3000 тп=20, сл=10. Как только она закрылась по тейку по цене 1.3020, сов это должен заметит и выставить отложку байлимит на 1.3000 где и была. Если сделка закрывается по стопу внизу на 1.2990, сов опять это заметил выставил байстоп по 1.3000 с теми же тейками и стопами
Всё ещё в поисках... Это достаточно сложный алгоритм и осилить его самому с начальными знаниями программирования вряд ли удастся...
Здесь требуется полный анализ всей группы ордеров с запоминанием всех параметров каждого ордера - начиная от цены установки и до переходов отложенников в рыночные, как был закрыт этот рыночный - по СЛ, ТП или иным образом, с обновлением в памяти этих отработавших и заменённых ордеров да и немало других анализов.
Основываться только на ценах установки отложенников и ценах закрытия нет смысла - это будет работать только в тестере, где всё будет точно по этим ценам. В реальной жизни существуют проскальзывания и этот метод будет неправильным...
Вряд ли кто-то возьмётся сделать всё это бесплатно и даже недорого - это требует немалой работы и очень большой точности кода...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Программирование советников, индикаторов и скриптов для МТ4
контакты для платных работ:
e-mail: maksshukurov@mail.ru
skype: maksshukurov1

Последний раз редактировалось RoboMaks; 24.09.2015 в 05:57.
RoboMaks вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (24.09.2015)
Старый 24.09.2015, 13:59   #4173 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от RoboMaks Посмотреть сообщение
Всё ещё в поисках... Это достаточно сложный алгоритм и осилить его самому с начальными знаниями программирования вряд ли удастся...
Здесь требуется полный анализ всей группы ордеров с запоминанием всех параметров каждого ордера - начиная от цены установки и до переходов отложенников в рыночные, как был закрыт этот рыночный - по СЛ, ТП или иным образом, с обновлением в памяти этих отработавших и заменённых ордеров да и немало других анализов.
Основываться только на ценах установки отложенников и ценах закрытия нет смысла - это будет работать только в тестере, где всё будет точно по этим ценам. В реальной жизни существуют проскальзывания и этот метод будет неправильным...
Вряд ли кто-то возьмётся сделать всё это бесплатно и даже недорого - это требует немалой работы и очень большой точности кода...
придумал гораздо проще.. в доработку один сов закину..

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.09.2015, 16:22   #4174 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от gush Посмотреть сообщение
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..
На самом деле это пишется за минут 5 на полном расслабоне. Но нужно иметь базовые знания хотябы. По-скольку у меня всё на классах, могу описать на словах.
В общем. Перебираешь ордера в истории по циклу (for). Отбираешь в цике свои ордера (если мэджик или типа не соответствуюет - отбрасываешь их из отбора). Так же, если интересуют только закрытые позиции, то нужно проверить их на время закрытия. А дальше каждому отобранному ордеру присваиваем некоторое действие. Всё элементарно.
Начните писать, подскажем... А если вообще писать нет желание, тогда во фриланс.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
gush (24.09.2015)
Старый 24.09.2015, 18:11   #4175 (permalink)
бродяга
 
Аватар для gush
 
Регистрация: 24.01.2011
Сообщений: 2,520
Репутация: 5506
gush gush gush gush gush gush gush gush gush gush gush
Сказал(а) спасибо: 8,488
Поблагодарили 5,290 раз(а) в 1,871 сообщениях
Поинты: 1124
Сообщение от hoz Посмотреть сообщение
На самом деле это пишется за минут 5 на полном расслабоне. Но нужно иметь базовые знания хотябы. По-скольку у меня всё на классах, могу описать на словах.
В общем. Перебираешь ордера в истории по циклу (for). Отбираешь в цике свои ордера (если мэджик или типа не соответствуюет - отбрасываешь их из отбора). Так же, если интересуют только закрытые позиции, то нужно проверить их на время закрытия. А дальше каждому отобранному ордеру присваиваем некоторое действие. Всё элементарно.
Начните писать, подскажем... А если вообще писать нет желание, тогда во фриланс.
спасибо, задачка уже решена

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
больше молока получит тот котенок, который больше всех пищит..
gush вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.09.2015, 18:19   #4176 (permalink)
Почётный гражданин
 
Аватар для Viko2000
 
Регистрация: 22.02.2012
Сообщений: 431
Репутация: 442
Viko2000 - Viko2000 - Viko2000 - Viko2000 - Viko2000 -
Сказал(а) спасибо: 1,351
Поблагодарили 441 раз(а) в 170 сообщениях
Поинты: 430
Сообщение от _SERG_ Посмотреть сообщение
Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
Нашёл проблему. ) На реальных счётах, где на протяжении всей его жизни менялся баланс, плюс, 0, плюс, 0, вот этот код начинает не корректно работать. А именно на сколько я понял, как только цена касается отложки, и даже если прибыль в 0 и выше, тут же исполняется условие. Во как.

if (AccountEquity()>=AccountBalance()+AccountBalance( )/100*PercentProfit)
{Close_all();
}
как только убираю этот код, закрытие не происходит и бот работает дальше.
Так как же будет выглядеть правильно закрытие всего по проценту прибыли Эквити.
SERG подскажи плиз, если в курсе.
Viko2000 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 24.09.2015, 19:23   #4177 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Появился вопрос. Я как-то раньше подобное делал, но что-то туплю последние пару дней. Нужно определить является ли текущий бар самым большим по размеру за последние N-баров или нет. Как это в плане производительности оптимально определить? Я так понимаю лучше реализация индюком, чтоб не пересчитывать каждый раз все бары. Но вот чутка задумался. Мой вариант вот:

Скрытый текст

PHP код:
//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                          Определение наличия увеличивающегося размера бара                                            |
//+---------------------------------------------------------------------------------------------------------------------------------------+
bool ExistencePositiveSequence (int fi_Index)
{
   if (
High[fi_Index] > High[fi_Index 1])
   {
      
sequenceCount++;
      
      return (
true);
   }
   
sequenceCount 0;
   
   return (
false);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                               Custom indicator iteration function                                                     |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int OnCalculate (const int rates_total,         // размер входных таймсерий
                 
const int prev_calculated,     // обработано баров на предыдущем вызове
                 
const datetime &time[],
                 const 
double &open[],
                 const 
double &high[],
                 const 
double &low[],
                 const 
double &close[],
                 const 
long &tick_volume[],
                 const 
long &volume[],
                 const 
int &spread[])
{
   
int limit rates_total prev_calculated;
   
   if (
prev_calculated == 0limit--;
   
   else 
limit++;
   
   for (
int i 0limiti++)
   {
      if (
ExistencePositiveSequence (i) == true)
      {  
         if (
sequenceCount == 3)
           
CDraw.DrawObject (_Symbol_Period,  OBJ_ARROW_UPiTime[i], Open[i]);
      }
   }
   
   return (
rates_total);

[свернуть]


Прошу критики.
Целый код прикрепляю. Просьба не обращать внимания на классы рисования объектов. А только на логику поиска.
Вложения:
Тип файла: mq4 MaxSizeOfSequenceBars.mq4 (4.2 Кб, 7 просмотров)

Последний раз редактировалось NSerega; 24.09.2015 в 20:43.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2015, 02:13   #4178 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 242
Репутация: 75
_SERG_
Сказал(а) спасибо: 7
Поблагодарили 75 раз(а) в 61 сообщениях
Поинты: 284
Сообщение от Viko2000 Посмотреть сообщение
Нашёл проблему. ) На реальных счётах, где на протяжении всей его жизни менялся баланс, плюс, 0, плюс, 0, вот этот код начинает не корректно работать. А именно на сколько я понял, как только цена касается отложки, и даже если прибыль в 0 и выше, тут же исполняется условие. Во как.

if (AccountEquity()>=AccountBalance()+AccountBalance( )/100*PercentProfit)
{Close_all();
}
как только убираю этот код, закрытие не происходит и бот работает дальше.
Так как же будет выглядеть правильно закрытие всего по проценту прибыли Эквити.
SERG подскажи плиз, если в курсе.
В реальных условиях, я бы добавил некий буфер в пунктах или процентах, или заранее просчитал ценовой уровень, соответстующий (AccountBalance()+AccountBalance()/100*PercentProfit) и туда установил стоп ордера, в зависимости от комбинации открытих позиций.
Если в стратегии используется много ордеров, то по рынку не все закроются с планируемым профитом, если не много, то можно и по рынку закрывать.
И все даблы сравнивать в нормализованном виде как минимум.
А вместо Close_all(); встввь алерт для начала.

( P.S. Я не совсем понял, о чём you спрашивал.)

Последний раз редактировалось _SERG_; 25.09.2015 в 02:49.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2015, 09:01   #4179 (permalink)
Местный знаток
 
Аватар для vlad_123
 
Регистрация: 29.01.2013
Сообщений: 341
Репутация: 830
vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 - vlad_123 -
Сказал(а) спасибо: 30
Поблагодарили 826 раз(а) в 331 сообщениях
Поинты: 398
Сообщение от hoz Посмотреть сообщение
Появился вопрос. Я как-то раньше подобное делал, но что-то туплю последние пару дней. Нужно определить является ли текущий бар самым большим по размеру за последние N-баров или нет.
iHighest и мануал в помощь.

Сообщение от hoz Посмотреть сообщение
Как это в плане производительности оптимально определить? Я так понимаю лучше реализация индюком, чтоб не пересчитывать каждый раз все бары. Но вот чутка задумался. Мой вариант вот:
...

Целый код прикрепляю. Просьба не обращать внимания на классы рисования объектов. А только на логику поиска.
Приведенный код никак не связан логически с заданным вопросом. Он просто рисует стрелку для каждой серии из трех баров с увеличивающимся хаем.
Да и буфер MaxSize индикатора - никак не рассчитывается.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мониторинг советников: http://www.myfxbook.com/members/vlad_123/

На заказ не программирую.
vlad_123 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 25.09.2015, 09:40   #4180 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от vlad_123 Посмотреть сообщение
iHighest и мануал в помощь.
Этой функцией я пользовался.. Но мне нужно более универальное решение. Чтобы можно было вместо хая бара подставить, например, значение какого-то расчёта. Поэтому я и ищу решение альтернативное.

Сообщение от vlad_123 Посмотреть сообщение
Приведенный код никак не связан логически с заданным вопросом. Он просто рисует стрелку для каждой серии из трех баров с увеличивающимся хаем.
Да и буфер MaxSize индикатора - никак не рассчитывается.
Согласен. Буфер MaxSize, на данный момент, не используется. Но лишь потому, что мне нада написать условие, чтоб стрелка рисовалась после 3 увеличивающихся хаём баров. А дальше уже займусь передачей в буфер данных.

На данный момент, вся логика просто:

PHP код:
//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                          Определение наличия увеличивающегося размера бара                                            |
//+---------------------------------------------------------------------------------------------------------------------------------------+
bool ExistencePositiveSequence (int fi_Index)
{
   if (
High[fi_Index] > High[fi_Index 1])
   {
      
sequenceCount++;
      
      return (
true);
   }

   
sequenceCount 0;
      
   return (
false);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//|                                               Custom indicator iteration function                                                     |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int OnCalculate (const int rates_total,         // размер входных таймсерий
                 
const int prev_calculated,     // обработано баров на предыдущем вызове
                 
const datetime &time[],
                 const 
double &open[],
                 const 
double &high[],
                 const 
double &low[],
                 const 
double &close[],
                 const 
long &tick_volume[],
                 const 
long &volume[],
                 const 
int &spread[])
{
   
int limit rates_total prev_calculated;
   
   if (
prev_calculated == 0limit--;
   
   else 
limit++;
   
   for (
int i 0limiti++)
   {
      if (
ExistencePositiveSequence (i) == true)
      {  
         if (
sequenceCount == 3)
           
CDraw.DrawObject (_Symbol_Period,  OBJ_ARROW_UPiTime[i], Open[i]);
      }
   }
   
   return (
rates_total); 
Но стрелки то рисуются не там где нужно. Почему? Я вообще в шоке . Пишу вещи на порядок сложнее в логике, но индикаторов не писал раньше. И вот застрял на этом месте... Просьба направить в требуемом направлении..
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 17:22. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO