Эксперт по классической тактике - страница 3

 

Добрый день! Пож. подскажите в каком формате мне нужно записать время закрытия (истечения) ордера в функции

ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,price_,0,loss_,profit_,"",
    Magic, ВОТ ЗДЕСЬ ,CLR_NONE);

Мне нужно, чтобы ордер удалялся, например, после 25 минут после установки, если за это время он не сработал.

Примера в поиске не нашла! Пробовала по всякому:

25*60

OrderOpenTime()+25*60

и т.п.

Все время возвращается ошибка - #3, - неправильные параметры.

Ошибка только из-за параметра datetime expiration

Если задаю datetime expiration=0, то ордера выствляются нормально.

 
Rita писал (а) >>

Добрый день! Пож. подскажите в каком формате мне нужно записать время закрытия (истечения) ордера в функции

Мне нужно, чтобы ордер удалялся, например, после 25 минут после установки, если за это время он не сработал.

Примера в поиске не нашла! Пробовала по всякому:

25*60

OrderOpenTime()+25*60

и т.п.

Все время возвращается ошибка - #3, - неправильные параметры.

Ошибка только из-за параметра datetime expiration

Если задаю datetime expiration=0, то ордера выствляются нормально.

Попробуйте, так:

datetime ExpTime;
...
ExpTime=TimeCurrent()+25*60;
ticket=OrderSend(...,ExpTime,..);
 
Благодарю. Буду пробовать.
 
Rita писал (а) >>
Благодарю. Буду пробовать.

еще учтите, что есть минимальное время,  менее которого ДЦ не принимает ОРДЕР 

т. е.   если установить  время к примеру  менее чем  ТЕКУЩЕЕВРЕМЯ()  +  15 минут  то SendOrder - вернет ошибку  и ордер не выставит

-  кстати в разных ДЦ это значение может быть разным ( не обязательно 15 минут или 30 минут )

и еще одна беда! увы нельзя  прочитать это МИНИМАЛЬНОЕ  значение  

 

Talex и YuraZ ! Всё получилось!

Ещё раз, большое спасибо !

 
Rita писал (а) >>

OrderOpenTime()+25*60

Это логическая ошибка.

OrderOpenTime() - это время открытия ордера. На момент отправки торгового приказа это время ещё не существует, т.к. нет самого ордера.

Посмотрите здесь https://book.mql4.com/ru/trading/common

 
SK. писал (а) >>

Это логическая ошибка.

OrderOpenTime() - это время открытия ордера. Посмотрите здесь https://book.mql4.com/ru/trading/common

Это я уже поняла.

А вот, кстати, в учебнике вы тоже не привели пример - в каком формате задается время истечения datetime expiration ! Упустили...

 
Rita писал (а) >>

Это я уже поняла.

А вот, кстати, в учебнике вы тоже не привели пример - в каком формате задается время истечения datetime expiration !

Это потому, что вопрос является некорректным.

Общий смысл такой: для того, чтобы задать время, необходимо указать значение типа datetime.

А в каком формате представлено значение, - это подробности представления данных типа datetime.

Можно в виде переменной, можно в виде выражения (обратите внимание, в этих случаях вопрос о формате вообще не возникает),

можно в виде константы в соответствии с правилами представления данных datetime.

--

Пример выражения: Time[0]+24*60*60; - сутки от нулевого бара.

 

Доброе утро. Пожалуйста, если не трудно .

Напишите выражение

double BasketPusle_0 = iCustom ( для этого индикатора.

Индикатор мультивалютный.

#property copyright "FiliN"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Navy

extern string Buy_currency_pairs = "----- List of Buy currency pairs -----";
extern string Buy_pair_1 = "AUDJPY";
extern string Buy_pair_2 = "AUDCAD";
extern string Buy_pair_3 = "EURJPY";
extern string Buy_pair_4 = "GBPJPY";
extern string Buy_pair_5 = "GBPUSD";
extern string Buy_pair_6 = "NZDUSD";
extern string Buy_pair_7 = "CADJPY";
extern string Sell_currency_pairs = "----- List of Sell currency pairs -----";
extern string Sell_pair_1 = "AUDUSD";
extern string Sell_pair_2 = "CHFJPY";
extern string Sell_pair_3 = "EURCHF";
extern string Sell_pair_4 = "EURUSD";
extern string Sell_pair_5 = "GBPCHF";
extern string Sell_pair_6 = "NZDJPY";
extern string Sell_pair_7 = "USDJPY";
double g_ibuf_204[];
int gi_208 = 12;
int gi_212 = 3;
int gi_216 = 9;
int gi_220 = 3;
int gi_224 = 5;
int gi_228 = 3;
int gi_232 = 12;
int gi_236 = 2;
int gi_240 = 24;
int gi_244 = 8;
int gi_248 = 16;
int gi_252 = 2;
int gi_256 = 16;
int gi_260 = 4;
int gi_264 = 12;
int gi_268 = 3;
int gi_272 = 30;
int gi_276 = 10;

int init() {
   SetIndexStyle(0, DRAW_LINE,0,2);
   SetIndexBuffer(0, g_ibuf_204);
   IndicatorShortName("Basket Pulse (" + Period() + "): ");
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   double ld_8; double ld_16;double ld_24;double ld_32;
   int li_48;   int li_52;
   int li_4 = IndicatorCounted();
   if (li_4 < 0) return (-1);
   if (li_4 > 0) li_4 -= 10;
   int li_0 = Bars - li_4;
   int li_unused_40 = 6;
   int li_44 = 3;
   switch (Period()) {
   case PERIOD_M1: li_48 = gi_272;li_52 = gi_276;  break;
   case PERIOD_M5: li_48 = gi_264;li_52 = gi_268;  break;
   case PERIOD_M15:li_48 = gi_256;li_52 = gi_260;  break;
   case PERIOD_M30:li_48 = gi_248;li_52 = gi_252;  break;
   case PERIOD_H1: li_48 = gi_240;li_52 = gi_244;  break;
   case PERIOD_H4: li_48 = gi_232;li_52 = gi_236;  break;
   case PERIOD_D1: li_48 = gi_224;li_52 = gi_228;  break;
   case PERIOD_W1: li_48 = gi_216;li_52 = gi_220;  break;
   case PERIOD_MN1:li_48 = gi_208;li_52 = gi_212;
                     }
   for (int l_index_60 = 0; l_index_60 < li_0; l_index_60++) {
      ld_8 = pp(li_44, PRICE_OPEN, l_index_60, li_48, li_52);
      ld_16 = pp(li_44, PRICE_HIGH, l_index_60, li_48, li_52);
      ld_24 = pp(li_44, PRICE_LOW, l_index_60, li_48, li_52);
      ld_32 = pp(li_44, PRICE_CLOSE, l_index_60, li_48, li_52);
      g_ibuf_204[l_index_60] = (ld_8 + ld_16 + ld_24 + ld_32) / 4.0;
   }
   return (0);
}

double pp(int a_ma_method_0, int a_applied_price_4, int i, int ma_per1, int ma_per2) 
{
   return (iMA(Buy_pair_1, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_1, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i) + 
          (iMA(Buy_pair_2, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_2, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) +
          (iMA(Buy_pair_3, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_3, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Buy_pair_4, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_4, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Buy_pair_5, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_5, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Buy_pair_6, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_6, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Buy_pair_7, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Buy_pair_7, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          
          (iMA(Sell_pair_1, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_1, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_2, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_2, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_3, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_3, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_4, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_4, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_5, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_5, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_6, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_6, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)) + 
          (iMA(Sell_pair_7, 0, ma_per2, 0, a_ma_method_0, a_applied_price_4, i) - 
           iMA(Sell_pair_7, 0, ma_per1, 0, a_ma_method_0, a_applied_price_4, i)));
}

Вот его отображение на графике: ( - и вопрос к админам - почему жутко тормозит редактор -правка и не вставляется картинка ?)

 

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

//считаем. что название индикатора "Basket Pulse"
//SignalBar - бар, с которого берется значение индикатора
double Line =  iCustom(NULL,0,"Basket Pulse",0,SignalBar);  
Причина обращения: