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

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

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

Последний раз редактировалось _SERG_; 21.09.2015 в 18:56.
gush 
22.09.2015, 04:15
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
А за какое время?
Ты видать не совсем понимаешь, что через некоторое время, отложки вошли в рынок или были удалены, рыночные ордера тоже закрылись и восстановить их в том виде, по той цене и того типа, какими они были уже нельзя. (Это если я правильно вопрос понял.)

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

Где то так. Возможны и другие варианты.
лимитки/стоповые не удаляются.. а если и так, если в ручную удалять отложки - их мониторить и восстанавливать не нужно. Восстагнавливать только открытые.
а вот если срабатал, например байстоп поцене 1.3000 с тейком 20 стопом в 10, тогда.. если закрылся по тейку, т.е. на 1.3020 сразу выставляется байлимит на 1.3000, а если закрылся по стопу на 1.2990, тогда выставляется байстоп на 1.3000 тем же лотом, с теми же тп и сл один в один и так мониторить все ордера... сложно такой процесс реализовать?
больше молока получит тот котенок, который больше всех пищит..
22.09.2015, 04:26
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
лимитки/стоповые не удаляются..
а если и так, если в ручную удалять отложки - их мониторить и восстанавливать не нужно.
Восстагнавливать только открытые.
а вот если срабатал, например байстоп поцене 1.3000 с тейком 20 стопом в 10, тогда..
если закрылся по тейку, т.е. на 1.3020 сразу выставляется байлимит на 1.3000, а если закрылся по стопу на 1.2990, тогда выставляется байстоп на 1.3000 тем же лотом, с теми же тп и сл один в один и так мониторить все ордера...
сложно такой процесс реализовать?
Напиши микросетку, минимальным лотом на каждом ценовом уровне ценового диапазона.

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

Последний раз редактировалось _SERG_; 22.09.2015 в 04:30.
gush 
22.09.2015, 14:44
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
Напиши микросетку, минимальным лотом на каждом ценовом уровне ценового диапазона.

Если понимаешь, какой результат должен быть, то любой процесс, не сложно реализовать. (Про время (срок) реализации, речь не идёт.)
сетка руками ставится. Не доверю боту (без присмотра) сразу открывать одновременно бай и селл. Во время выхода новостей бот может не успеть сделать это.. пока один открывается цена может улететь... нужен бот восстанавливающий все закрытые ордера. Сетка ставится руками и все ордера должны стоять на смерть, как поставлены изначально))) вот и весь алгоритм
больше молока получит тот котенок, который больше всех пищит..
22.09.2015, 19:52
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
сетка руками ставится. Не доверю боту (без присмотра) сразу открывать одновременно бай и селл. Во время выхода новостей бот может не успеть сделать это.. пока один открывается цена может улететь... нужен бот восстанавливающий все закрытые ордера. Сетка ставится руками и все ордера должны стоять на смерть, как поставлены изначально))) вот и весь алгоритм
Тогда, какой смысл вопроса по поводу кода, если мануал трэйдинг форэвэ? Я про не доверяю ЕА. А во фрилансе, может кто и подрядится на пыполнение, если с формальными параметрами всё будет утрясено.
23.09.2015, 14:17
Аватар для Viko2000
Viko2000 Viko2000 вне форума Почётный гражданин
Регистрация: 22.02.2012 / Сообщений: 441
Поблагодарили 448 раз(а) / Репутация: 449
Коллеги, на помощь, у вообще уже крыша уже поехала. Никак не могу понять что за бред. В коде нет определения isdemo что как то изменить торговлю, но в тоже время на демо бот торгует чётка по алгоритму, а ставлю на реал выставляются по алгоритму две противоположные отложки, и когда одна и них выставляется в ордер, тут же происходит закрытие всего. То есть сработавшей и выставленной противоположной отложки. Чума полная. Кто в курсе, плиз помогите. Где собоко зарыта. Может у брокера льёт крышу. Век благодарен буду.)))


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

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


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

Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
23.09.2015, 15:24
Аватар для Viko2000
Viko2000 Viko2000 вне форума Почётный гражданин
Регистрация: 22.02.2012 / Сообщений: 441
Поблагодарили 448 раз(а) / Репутация: 449
Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
Спасибо за ответ.
23.09.2015, 15:27
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
Тогда, какой смысл вопроса по поводу кода, если мануал трэйдинг форэвэ? Я про не доверяю ЕА. А во фрилансе, может кто и подрядится на пыполнение, если с формальными параметрами всё будет утрясено.
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..
больше молока получит тот котенок, который больше всех пищит..
23.09.2015, 19:33
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..
Основной код, будет по определению места и времени, тут уж от фантазии аФФтора всё зависит, а установка самого ордера, считай одна команда, без наворотов.
gush 
24.09.2015, 04:14
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
Основной код, будет по определению места и времени, тут уж от фантазии аФФтора всё зависит, а установка самого ордера, считай одна команда, без наворотов.
так может подскажешь как реализовать такой алгоритм?
Открыта сделка бай по 1.3000 тп=20, сл=10. Как только она закрылась по тейку по цене 1.3020, сов это должен заметит и выставить отложку байлимит на 1.3000 где и была. Если сделка закрывается по стопу внизу на 1.2990, сов опять это заметил выставил байстоп по 1.3000 с теми же тейками и стопами
больше молока получит тот котенок, который больше всех пищит..
24.09.2015, 05:41
Аватар для RoboMaks
RoboMaks RoboMaks вне форума Элитный участник
Регистрация: 19.08.2012 / Адрес: Баку, Азербайджан / Сообщений: 651
Поблагодарили 1,122 раз(а) / Репутация: 1132
так может подскажешь как реализовать такой алгоритм?
Открыта сделка бай по 1.3000 тп=20, сл=10. Как только она закрылась по тейку по цене 1.3020, сов это должен заметит и выставить отложку байлимит на 1.3000 где и была. Если сделка закрывается по стопу внизу на 1.2990, сов опять это заметил выставил байстоп по 1.3000 с теми же тейками и стопами
Всё ещё в поисках... Это достаточно сложный алгоритм и осилить его самому с начальными знаниями программирования вряд ли удастся...
Здесь требуется полный анализ всей группы ордеров с запоминанием всех параметров каждого ордера - начиная от цены установки и до переходов отложенников в рыночные, как был закрыт этот рыночный - по СЛ, ТП или иным образом, с обновлением в памяти этих отработавших и заменённых ордеров да и немало других анализов.
Основываться только на ценах установки отложенников и ценах закрытия нет смысла - это будет работать только в тестере, где всё будет точно по этим ценам. В реальной жизни существуют проскальзывания и этот метод будет неправильным...
Вряд ли кто-то возьмётся сделать всё это бесплатно и даже недорого - это требует немалой работы и очень большой точности кода...

Последний раз редактировалось RoboMaks; 24.09.2015 в 05:57.
gush 
24.09.2015, 13:59
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
Всё ещё в поисках... Это достаточно сложный алгоритм и осилить его самому с начальными знаниями программирования вряд ли удастся...
Здесь требуется полный анализ всей группы ордеров с запоминанием всех параметров каждого ордера - начиная от цены установки и до переходов отложенников в рыночные, как был закрыт этот рыночный - по СЛ, ТП или иным образом, с обновлением в памяти этих отработавших и заменённых ордеров да и немало других анализов.
Основываться только на ценах установки отложенников и ценах закрытия нет смысла - это будет работать только в тестере, где всё будет точно по этим ценам. В реальной жизни существуют проскальзывания и этот метод будет неправильным...
Вряд ли кто-то возьмётся сделать всё это бесплатно и даже недорого - это требует немалой работы и очень большой точности кода...
придумал гораздо проще.. в доработку один сов закину..
больше молока получит тот котенок, который больше всех пищит..
24.09.2015, 16:22
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для hoz с помощью ICQ
а много строчек займет такой код? Просто ордер ставить на место, без всяких наваротов..
На самом деле это пишется за минут 5 на полном расслабоне. Но нужно иметь базовые знания хотябы. По-скольку у меня всё на классах, могу описать на словах.
В общем. Перебираешь ордера в истории по циклу (for). Отбираешь в цике свои ордера (если мэджик или типа не соответствуюет - отбрасываешь их из отбора). Так же, если интересуют только закрытые позиции, то нужно проверить их на время закрытия. А дальше каждому отобранному ордеру присваиваем некоторое действие. Всё элементарно.
Начните писать, подскажем... А если вообще писать нет желание, тогда во фриланс.
gush 
24.09.2015, 18:11
Аватар для gush
gush gush вне форума бродяга
Регистрация: 24.01.2011 / Сообщений: 2,523
Поблагодарили 5,293 раз(а) / Репутация: 5509
На самом деле это пишется за минут 5 на полном расслабоне. Но нужно иметь базовые знания хотябы. По-скольку у меня всё на классах, могу описать на словах.
В общем. Перебираешь ордера в истории по циклу (for). Отбираешь в цике свои ордера (если мэджик или типа не соответствуюет - отбрасываешь их из отбора). Так же, если интересуют только закрытые позиции, то нужно проверить их на время закрытия. А дальше каждому отобранному ордеру присваиваем некоторое действие. Всё элементарно.
Начните писать, подскажем... А если вообще писать нет желание, тогда во фриланс.
спасибо, задачка уже решена
больше молока получит тот котенок, который больше всех пищит..
24.09.2015, 18:19
Аватар для Viko2000
Viko2000 Viko2000 вне форума Почётный гражданин
Регистрация: 22.02.2012 / Сообщений: 441
Поблагодарили 448 раз(а) / Репутация: 449
Код свой, или цельнотянутый?
Изобрази код, а там и пособят, а то с эмоциями никто работать не будет.
Про теорию, не совсем понятно, как и про крышу у брокера впрочем.
Чудес короче, не бывает.
Нашёл проблему. ) На реальных счётах, где на протяжении всей его жизни менялся баланс, плюс, 0, плюс, 0, вот этот код начинает не корректно работать. А именно на сколько я понял, как только цена касается отложки, и даже если прибыль в 0 и выше, тут же исполняется условие. Во как.

if (AccountEquity()>=AccountBalance()+AccountBalance( )/100*PercentProfit)
{Close_all();
}
как только убираю этот код, закрытие не происходит и бот работает дальше.
Так как же будет выглядеть правильно закрытие всего по проценту прибыли Эквити.
SERG подскажи плиз, если в курсе.
24.09.2015, 19:23
Аватар для hoz
hoz hoz вне форума Активный участник
Регистрация: 01.04.2011 / Сообщений: 532
Поблагодарили 112 раз(а) / Репутация: 111
  • Отправить сообщение для 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);

[свернуть]


Прошу критики.
Целый код прикрепляю. Просьба не обращать внимания на классы рисования объектов. А только на логику поиска.

Последний раз редактировалось NSerega; 24.09.2015 в 20:43.
25.09.2015, 02:13
Аватар для _SERG_
_SERG_ _SERG_ вне форума Активный участник
Регистрация: 21.07.2009 / Сообщений: 283
Поблагодарили 94 раз(а) / Репутация: 94
Нашёл проблему. ) На реальных счётах, где на протяжении всей его жизни менялся баланс, плюс, 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.
25.09.2015, 09:01
Аватар для vlad_123
vlad_123 vlad_123 на форуме Местный знаток
Регистрация: 29.01.2013 / Сообщений: 457
Поблагодарили 930 раз(а) / Репутация: 934
Появился вопрос. Я как-то раньше подобное делал, но что-то туплю последние пару дней. Нужно определить является ли текущий бар самым большим по размеру за последние N-баров или нет.
iHighest и мануал в помощь.

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

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

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

Приведенный код никак не связан логически с заданным вопросом. Он просто рисует стрелку для каждой серии из трех баров с увеличивающимся хаем.
Да и буфер 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); 
Но стрелки то рисуются не там где нужно. Почему? Я вообще в шоке . Пишу вещи на порядок сложнее в логике, но индикаторов не писал раньше. И вот застрял на этом месте... Просьба направить в требуемом направлении..
Ответить

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


Опции темы

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

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



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


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