Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1134

 
Snajper007:
Здравствуйте! Подскажите пожалуйста. Как правильно прописать условие: *если наступил новый час*?
if(NewBar(PERIOD_H1))Alert("Наступил новый час!");
//----
bool NewBar(ENUM_TIMEFRAMES TF = 0)
  {
   static datetime NewTime=0;
   if(NewTime!=iTime(Symbol(),TF,0))
     {
      NewTime=iTime(Symbol(),TF,0);
      return(true);
     }
   return(false);
  }
//----
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.10.14 14:20

Ответ следует искать здесь: "Price level to execute a deal".

Из статьи Мастер MQL5: Как научить эксперта открывать отложенные ордера по любым ценам:


Обратите внимание на параметр Signal_PriceLevel. По умолчанию эксперт генерируется с параметром  Signal_PriceLevel=0. Этот параметр отвечает за уровень отступа от текущей цены. При значении, равном нулю, ордер будет открыт по текущей рыночной цене. Чтобы открыть отложенный ордер, следует задать ненулевое значения для параметра  Signal_PriceLevel, т.е. Signal_PriceLevel может быть как меньше нуля, так и больше.

Параметр Signal_PriceLevel указывается в "больших" пунктах. На картинках ниже показана разница между отрицательными и положительными значениями:

При Signal_PriceLevel=-50:


Рис. 1. Signal_PriceLevel=-50

При Signal_PriceLevel=50:


Рис. 2. Signal_PriceLevel=50

Таким образом, при Signal_PriceLevel=-50, отложенный ордер будет открываться по цене хуже текущей, а при  Signal_PriceLevel=50, отложенный ордер будет открываться по цене лучшей, чем текущая.


Огромное спасибо, Владимир, за подробный и развернутый ответ.

С уважением, Владимир.

 
Iurii Tokman:
Спасибо! Сейчас попробую.
 
Snajper007:
Спасибо! Сейчас попробую.

если для мт5 то немного по другому будет

 
Iurii Tokman:

Вот код который рисует линию на М5:

      int Price_high  = iHighest(Symbol(), 0, MODE_HIGH, 11, 1);
       int Price_low   = iLowest(Symbol(), 0, MODE_LOW, 11, 1);
            
       ObjectCreate("TrendLine", OBJ_TREND, 0, Time[11], NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits), Time[1], 
                     NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits));

Хотелось бы, что бы в начале каждого часа на М5 рисовалась такая линия, которая с предыдущими не будет связана. Т.е. просто горизонталь, а не ломаная. Линия - это средняя цена за прошедший час.

А если у этой линии убрать свойство *луч*, то вообще будет супер.

 
      
int Price_high  = iHighest(Symbol(), 0, MODE_HIGH, 11, 1);
int Price_low   = iLowest(Symbol(), 0, MODE_LOW, 11, 1);

if(!NewBar(PERIOD_H1)) return;
            
ObjectCreate("TrendLine", OBJ_TREND, 0, Time[11], NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits), Time[1], 
              NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits));


//---
//---
bool NewBar(ENUM_TIMEFRAMES TF = 0)
  {
   static datetime NewTime=0;
   if(NewTime!=iTime(Symbol(),TF,0))
     {
      NewTime=iTime(Symbol(),TF,0);
      return(true);
     }
   return(false);
  }
//----
 
Iurii Tokman:

Не работает. Рисует только одну линию при старте и всё.

void OnTick()
{
  
int Price_high  = iHighest(Symbol(), 0, MODE_HIGH, 11, 1);
int Price_low   = iLowest(Symbol(), 0, MODE_LOW, 11, 1);

if(!NewBar(PERIOD_H1)) return;
            
ObjectCreate("TrendLine", OBJ_TREND, 0, Time[11], NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits), Time[1], 
              NormalizeDouble( (High[Price_high] + Low[Price_low])/2, Digits));

}
//+------------------------------------------------------------------+ 
//---
bool NewBar(ENUM_TIMEFRAMES TF = 0)
  {
   static datetime NewTime=0;
   if(NewTime!=iTime(Symbol(),TF,0))
     {
      NewTime=iTime(Symbol(),TF,0);
      return(true);
     }
   return(false);
  }
//----
//+------------------------------------------------------------------+
 
Snajper007:

Не работает. Рисует только одну линию при старте и всё.

а нужно сколько ?

 
Iurii Tokman:

а нужно сколько ?

Хотелось бы, что бы в начале каждого часа на М5 рисовалась такая линия, которая с предыдущими не будет связана. Т.е. просто горизонталь, а не ломаная. Линия - это средняя цена за прошедший час.
 
Snajper007:
Хотелось бы, что бы в начале каждого часа на М5 рисовалась такая линия, которая с предыдущими не будет связана. Т.е. просто горизонталь, а не ломаная. Линия - это средняя цена за прошедший час.

середина бара H1 ?