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

 
happybuddhist:

 Вообщем, нужна помощь с написанием функции для закрытия ордеров под мою ТС (пункт 3) и адаптацией имеющегося кода под функцию.

Смотрите. ;)

Файлы:
ln_3.mq4  4 kb
 
hoz:

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


Кажется, вы ошибаетесь. Ведь +(a-b)=a-b, -(a-b)=-a-(-b)=-a+b=b-a. С изменением знака они-таки меняются местами. 

hoz:

Вадим,  писал не давно, что помещение внуть цикла функции на порядок притормаживает выполнение кода по скорости.


Насколько я понял Вадима, он имел ввиду вызов пользовательской функции в цикле.

Vinin:

Наверно Вам надо свою ветку открывать. Зачем Вам "Ветка для новичков"
Ну да, зачем новичкам разбираться в анатомии и периодах машки))) Я ничем от новичков не отличаюсь, может быть только тем что неграмотный, поэтому и пытаюсь дойти до всего своими мозгами.

 

hoz:

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


Там счётчик разный. Если свеча пойдёт в другую сторону, по формуле происходит обнуление счётчика. Или я вас не понял. Единственное что может работать медленнее. Руки дойдут, протестю. 

 
gyfto: ... У меня возник такой вопрос по оптимизации. Разбираюсь с алгоритмом EMA ...
Так вот, зачем надо так высоко забирать последний вес, если можно просто обернуть степенную функцию, если последующий вес важнее предыдущего? Я даже уже не спрашиваю, зачем пользоваться рекурсией, если конечные веса после окончания рекурсии можно вывести формулой (см. F(n,x) и y(n,x)).
Vinin: Наверно Вам надо свою ветку открывать. Зачем Вам "Ветка для новичков"
gyfto: ... Ну да, зачем новичкам разбираться в анатомии и периодах машки))) Я ничем от новичков не отличаюсь, может быть только тем что неграмотный, поэтому и пытаюсь дойти до всего своими мозгами. ...
Давайте, давайте открывайте веточку типа "Вопросы по EMA" и файлик маткада прикрепите. Здесь ваш пост просто потеряется. В отдельной ветке гуру матана должны распилить всё по полочкам.
 
GaryKa:
Давайте, давайте открывайте веточку типа "Вопросы по EMA" и файлик маткада прикрепите. Здесь ваш пост просто потеряется. В отдельной ветке гуру матана должны распилить всё по полочкам.

Скорее всего, имеете ввиду, что ответ на вопрос потеряется. Хорошо, открою веточку, тот пост отредактирую, напишу перенесено.
 
TarasBY:

Смотрите. ;)


Хм, спасибо. А такие результаты от оптимизации? 
 
gyfto:

Кажется, вы ошибаетесь. Ведь +(a-b)=a-b, -(a-b)=-a-(-b)=-a+b=b-a. С изменением знака они-таки меняются местами. 

Так из математики известно, что минус к минусу даёт плюс. А Плюс к минусу даёт минус. Но чтоб  местами менялись переменные я первый раз слышу.

  

gyfto:

Насколько я понял Вадима, он имел ввиду вызов пользовательской функции в цикле.

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

//+-------------------------------------------------------------------------------------+
//| Расчитываем количество идущих один за одним баров одного признака                   |
//+-------------------------------------------------------------------------------------+
int LastCandlesType(int directionMA)
{
   int cntUp,                                                                            // Счётчик идущих друг за другом свечей с..
       cntDn;                                                                                // .. требуемыми признаками
       
   for (int i=i_AnyBarsToHistory; i>=1; i--)
   {
      if (directionMA == CROSS_UP)
      {
         if ((Open[i] - Close[i]) >= i_sizeOfSequentialCorrectionBar * pt)              // Если бар соответствует требуемым признакам..
             cntDn++;                                                                     // .. прибавим 1 к счётчику

         if ((Close[i] - Open[i]) >= i_sizeOfTrandBar * pt)                             // Если бар, не соответствует основному признаку..
             cntDn = 0;                                                                   // .. счётчик обнуляем

         if (cntDn == i_sequentBarsСount)                                                   // Если cnt баров в подряд медвежьи..
             return (REQUIRED_SEQUENTIAL_BEARS_GOT);                                         // .. Выходим из функции
      }

      if (directionMA == CROSS_DN)
      {
         if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)              // Если бар соответствует требуемым признакам..
             cntUp++;                                                                     // .. прибавим 1 к счётчику

         if ((Open[i] - Close[i]) >= i_sizeOfTrandBar * pt)                             // Если бар, не соответствует основному признаку..
             cntUp = 0;                                                                   // .. счётчик обнуляем
     
         if (cntUp == i_sequentBarsСount)                                                   // Если cnt баров в подряд бычьи..
             return (REQUIRED_SEQUENTIAL_BULLS_GOT);                                         // .. Выходим из функции
      }
   }
}

 Внутри цикла из функции, которая получает общий сигнал данная переменная и получает своё значение и по параметру передаётся:

int directionMA = GetStateOfMA();

 

gyfto:
Ну да, зачем новичкам разбираться в анатомии и периодах машки))) Я ничем от новичков не отличаюсь, может быть только тем что неграмотный, поэтому и пытаюсь дойти до всего своими мозгами.

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

gyfto:

Там счётчик разный. Если свеча пойдёт в другую сторону, по формуле происходит обнуление счётчика. Или я вас не понял. Единственное что может работать медленнее. Руки дойдут, протестю. 

Да. Но у нас счётчик по которому идёт расчёт значений по порядку появления баров из бара с индексом i_AnyBarsToHistory до бара с индексом 1. Получается, что если на барах от индекса 30 до индекса 15 выполнится условие:

directionMA == CROSS_UP

 а дальше например при cnt=2 условие выполнится условие:

directionMA == CROSS_DN

 То cnt будет инкрементироваться к прошлому значение. Если было 2 то при новом условие добавится 1, тогда cnt=3 и выходим из функции со значением 3. Понимаешь о чём я? Присмотрись, тут логика, в принципе, очевидна.

 

Добрый день. 

у кого нибудь есть опыт изменения параметров индикаторов в советнике

в зависимости от волатильности (например параметров МА) ?

или может ссылку дадите где почитать  

 
Stells:

Добрый день. 

у кого нибудь есть опыт изменения параметров индикаторов в советнике

в зависимости от волатильности (например параметров МА) ?

или может ссылку дадите где почитать  


Если понимать, что такое мувинг, то такие вопросы сами отпадут.
 
hoz:
Если понимать, что такое мувинг, то такие вопросы сами отпадут.
Красиво жить не запретишь...

Адаптивная МА
 
Доброе время суток нужна помощь в написании простого скрипта или эксперта' если скриптом это сделать не удасться Сам не программировал никогда Суть скрипта Вход - получение цен (текущие аск и бид) - определение цены будущей покупки/продажи (как кратное своему числу "например 30")- выяснение нет ли на этих ценах открытых/отложенных ордеров - если ордеров нет постановка отложенных ордеров с задаными стоплосс и тейкпрофит-если ордера есть проверка следующей цены будущей покупки которая для покупки больше на кратное число, для продажи - меньше на кратное число - потолок проверки текущая цена +-100*кратное число -ожидание 5 минут и переход к "получение цен" ожидание можно заменить на переход к "получение цены" после любого тика
Причина обращения: