[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 128

 
hoz:

 Можно 0 (нуль ) ставить, т.к. обычно экспирация не требуется. Но у Вас видать на свякий случай стоит, чтоб если что не возвращаться к этому моменту.
Так и стоит 0 в стандартной функции, а в представлении нужно указать, чтобы работали последующие параметры (color). Я вообще не использую expiration в отложках, а удаляю только по условию.
 

Господа программисты,


помогите пожалуйста разобраться. 

вставил я этот код https://www.mql5.com/ru/code/8811 для ведения виртуальной торговли как функцию в мой индикатор.

в реальном времени всё работает, ведётся виртуальная торговля  любой сложности.

Можно ли чтоб он это делал на истории, пройдясь по барам? или тут надо новый код писать?


благодарю. 

 
abdul1:

Господа программисты,

помогите пожалуйста разобраться. 

вставил я этот код https://www.mql5.com/ru/code/8811 для ведения виртуальной торговли как функцию в мой индикатор.

в реальном времени всё работает, ведётся виртуальная торговля  любой сложности.

Можно ли чтоб он это делал на истории, пройдясь по барам? или тут надо новый код писать?

благодарю. 

Это лучше спросить в кодебэйс у Автора, где скачали.
 

borilunad, у Вас получается если, например, в функции есть и Б.У. и ТРААЛ, цикл и выборка ордеров я так понял находится в функции start и срабатывает потиково?

 Думаю как это всё объеденить, мозг уже перегрузился.Нужно что б Б.У. отрабатывало только когда стоп ниже минимального порога т.е. цена открытия + минимальный тейк. У меня это переменная priceBU. Ну а дальше уже траал пошёл. Сразу пробую отдельными функция для практики, мне так проще для понимания. А как всё заработает, до Вашей доберусь.

В старте написал я так:

 

int start()
{
   int g;
   for (g = OrdersTotal() - 1; g >= 0; g--)
   {
       if (!OrderSelect(g,SELECT_BY_POS)) continue;
       if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
       if (OrderSymbol() != Symbol()) continue;
       
      if (OrderStopLoss() <= priceBU)
      {
          MovingStopLossToBU();
      }
      {
          ticket = OrderTicket();
          TrailingStop("", -1, -1);
      }
   }

 Правильно ли я сделал или может что грамотнее сделать иначе? Работает вроде всё правильно, но как-то просто всё написано, без условий каких-либо..

 
hoz:

borilunad, у Вас получается если, например, в функции есть и Б.У. и ТРААЛ, цикл и выборка ордеров я так понял находится в функции start и срабатывает потиково?

 Думаю как это всё объеденить, мозг уже перегрузился.Нужно что б Б.У. отрабатывало только когда стоп ниже минимального порога т.е. цена открытия + минимальный тейк. У меня это переменная priceBU. Ну а дальше уже траал пошёл. Сразу пробую отдельными функция для практики, мне так проще для понимания. А как всё заработает, до Вашей доберусь.

В старте написал я так:

 

 Правильно ли я сделал или может что грамотнее сделать иначе? Работает вроде всё правильно, но как-то просто всё написано, без условий каких-либо..

Вот именно, функцию надо вызывать, когда условия выполняются, а в условия нужны адеквактные рынку, соблюдению дистанций до цены и всегда иметь необходимый изменяющийся от спреда и др. зазор (у меня prev), который предохранит от нарушений и ошибок по вине спонтанного движения цены. И конечно, потиково! Так зачем каждый тик вызывать функцию, потому условия нужно прописывать в старте. Особенно на Реале Ваше уже не "вроде", а точно не заработает, посыпятся одна за другой ошибки. И на Демо тоже сомнительно. Проанализируйте мой трал, тоже нужно сделать и перевод в Б/У и установки СЛ и ТП, также всё сделать для селла, и всё это поместить в одном цикле перебора и выбора позиций, и будет у Вас хорошо работающий блок всех модификаций, вызывающих всего одну функцию, и без заморочек. ;)
 
hoz:



 Так у меня ж есть проверка на этот случай:

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

 

 if (ND(OrderStopLoss())  - ND(priceBU * pt) != 0.0) -  нужно так, если  ND(...) - это нормализация.

 
borilunad:
Вот именно, функцию надо вызывать, когда условия выполняются, а в условия нужны адеквактные рынку, соблюдению дистанций до цены и всегда иметь необходимый изменяющийся от спреда и др. зазор (у меня prev), который предохранит от нарушений и ошибок по вине спонтанного движения цены. И конечно, потиково! Так зачем каждый тик вызывать функцию, потому условия нужно прописывать в старте. Особенно на Реале Ваше уже не "вроде", а точно не заработает, посыпятся одна за другой ошибки. И на Демо тоже сомнительно. Проанализируйте мой трал, тоже нужно сделать и перевод в Б/У и установки СЛ и ТП, также всё сделать для селла, и всё это поместить в одном цикле перебора и выбора позиций, и будет у Вас хорошо работающий блок всех модификаций, вызывающих всего одну функцию, и без заморочек. ;)


 Вот это да. Я как-будто заново родился. Раньше было проще, а щяс думаю как вообще что переделать. Сделал цикл в старте. Теперь придётся всё переписывать..

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

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

 
hoz:


 Вот это да. Я как-будто заново родился. Раньше было проще, а щяс думаю как вообще что переделать. Сделал цикл в старте. Теперь придётся всё переписывать..

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

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

В кодебэйс очень много разнообразных решений и разного уровня. Я начинал с переделок и постепенно пришёл к этому построению, которое совсем не ново, но для меня удобно. У меня без модификаций полно функций вне старта. Для открытия ордера и/или позиции тоже одна функция. Зато перед открытием делаю много проверок также с функциями вне старта. А для закрытия позиций использую много условий в которых ещё больше функций различных проверок.

Именно для модификаций использую только эту функцию, но модификации ведь разные и соответственно с разными условиями, проверками и защитными мерами. Я не могу всё это впихнуть в одну функцию и бессмысленно. Я обращаюсь к ней, когда все условия исполнены и всё высчитано, и поручаю функции только последний шаг. Если что-то не то, то не посылает, возвращает, перепроверяются данные и снова попытка, и посылается на ДЦ только точная цена и точные данные, которые тут же принимаются и устанавливаются. Главное, не беспокоить лишний раз ДЦ.

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

Почему я Вам это говорю, потому что тут все новички хотят по-быстрому что-нибудь сварганить и делать "бабло". Это должно быть как подарок за хорошо проделанную работу. А кто не вышел ещё из детства, не получает удовольствия от работы и только хочет играть, рынок ему этого не простит.

Доброй ночи! А завтра на свежую голову снова за работу! 

 
Valerius:


Похоже специалистов, которые на этот самый простой вопрос ответить нет.Так, два програмера собрались в междусобойчик и всё... Зачем тогда этот форум нужен???

 
Valerius:


Похоже специалистов, которые на этот самый простой вопрос ответить нет.Так, два програмера собрались в междусобойчик и всё... Зачем тогда этот форум нужен???

На Ваш вопрос уже раз сто отвечали - если сравниваете два дробных числа, нормализуйте оба перед сравнением