Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 270

 
Artyom Trishkin:
Достаточно знать каким днём недели было первое число месяца. Остальное вычисляется.

Этот вариант я смотрел делал .Но он сложный путь ..Это как левой рукой чесать правое ухо ..Может просто глюкнуть вслед за глюком МТ ..Друзья ,очень прошу покажите свои варианты ..

 
Darirunu:

Извините вы наверное не обратили  на вопрос внимание ..

Как написать в четверке условие:если первая пятница месяца была бычьей ,а

второй понедельник медвежий то  открываем сделку на продажу .

DayOfWeek()==1 понедельник это ясно ,а какой это понедельник месяца?Ну в вашем это не нужно это ясно ..Я же не о вашем спрашиваю))

Понял! Вы говорите о своем алгоритме, который известен только Вам. У меня же написано, определяем день недели для первого числа месяцы! А потом по таблице или двум простым формулам определяем даты интересующих нас дней

Проверьте таблицу по календарю

Если день начала месяца = 6, то число первой пятницы равно 7. Иначе число первой пятницы равно 6 - день начала месяца

Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе число второго понедельника равно 16 - день начала месяца

С использованием математических функций остаток от деления и модуль будет намного короче

 
LRA:

Понял! Вы говорите о своем алгоритме, который известен только Вам. У меня же написано, определяем день недели для первого числа месяцы! А потом по таблице или двум простым формулам определяем даты интересующих нас дней

Проверьте таблицу по календарю

Если день начала месяца = 6, то число первой пятницы равно 7. Иначе число первой пятницы равно 6 - день начала месяца

Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе число второго понедельника равно 16 - день начала месяца

Спасибо.Да Хранит Вас Господь ..Буду проверять
 
Darirunu:
Спасибо.Да Хранит Вас Господь ..Буду проверять

Большое спасибо за пожелание. И все-таки после точки ставьте пробел, перед точкой пропускайте. Это поможет в программировании. Удачи и, если это Вам нужно, профита!

 
LRA:

Большое спасибо за пожелание. И все-таки после точки ставьте пробел, перед точкой пропускайте. Это поможет в программировании. Удачи и, если это Вам нужно, профита!


Выходит очень сложно. Наверно есть более простой вариант. Может кто поделиться ?

Скажем завтра поменяется ,что то в обновлениях и придеться все переписывать .

 
Darirunu:

Выходит очень сложно. Наверно есть более простой вариант. Может кто поделиться ?

Скажем завтра поменяется ,что то в обновлениях и придеться все переписывать .

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

/********************Script program start function********************/
void OnStart()
{
 MqlDateTime mqlDateTime0, mqlDateTime1;
 datetime arrDateTime[7];
 CopyTime(_Symbol, PERIOD_D1, 0, 7, arrDateTime);
 TimeToStruct(arrDateTime[0], mqlDateTime0);
 TimeToStruct(arrDateTime[6], mqlDateTime1);
 if(mqlDateTime0.day_of_week == FRIDAY && mqlDateTime0.mon != mqlDateTime1.mon)
  {
   Print("Ура!!! Сегодня первая пятница");
   // Дальше можно брать по времени пятницы открытие и закрытие бара и на основании этого определяем бычья или медвежья свеча...
  }
}/********************************************************************/

Лучше брать параметры свечи в структуру MqlRates

 
Alexey Viktorov:

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



Вот об этом я и говорю и меня интересует только MQL4 ..Надо Найти другое решение ..

 
Darirunu:

Вот об этом я и говорю и меня интересует только MQL4 ..Надо Найти другое решение ..

Это и есть mql4.
Файлы:
00.mq4  2 kb
 
double ma;
   int    res;
   int nomber = OrdersHistoryTotal();
   int tip=OrderType();
   if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))
   {
   tip=OrderType();
   }
   ma=iMA(NULL,0,MovingPeriod,120,MODE_SMA,PRICE_CLOSE,1);
   if(Bid<ma)
   if(tip!=OP_SELL)
   {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,Bid-TP*Point,"",MAGICMA,0,Red);
      return;
     }



Добрый день. Нужна помощь. Если есть закрытый ордер Sell то следующий ордер может быть открыт только Buy.Что в коде не так?, подскажите пожалуйста.
 
Darirunu:

Вот об этом я и говорю и меня интересует только MQL4 ..Надо Найти другое решение ..

И ещё мысль такая появилась.

Если нужна первая пятница, то число должно быть меньше 8. Если первое число месяца пятница, то в следующую пятницу будет уже восьмое. Соответственно можно с лёгкостью пересчитать на любой день недели и любой по счёту день, второй, третий...