Нужен простой код

 
Открытие позиции (бай, сел. на выбор) в определенный день недели на открытии дня, закрытие на закрытии дня.
 

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

кто-то отменял систему отложенных ордеров? выставите 5 отложенных ордеров на 5 рабочих дней с Вашим текущим временем суток где день открывается и где закрывается

зачем тут код? 

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


  тогда примерно так:

//+------------------------------------------------------------------+
//|                                                   Order_Time.mq4 |
//|                                                            IgorM |
//|                                        https://forum.mql4.com/ru/ |
//+------------------------------------------------------------------+
#property copyright "IgorM"
#property link      "https://forum.mql4.com/ru/"

extern string     _P1        = "тип ордера: 1 BUY ;  2 -SELL";
extern int        order_type = 1;
extern int        Hour_Time  = 0;
extern string     _P2        = "номер дня недели (воскресенье-0,1,2,3,4,5,6)";
extern int        Day_Week   = 1;      
extern double     Lot        = 0.01;
extern int        StopLoss   = 300;     // в пунктах
extern int        TakeProfit = 500;   // в пунктах
extern int        Slippage   = 50;      // величина проскальзования при открытии ордера

bool OK = false ; 

int init()
  {
   return(0);
  }

int deinit()
  {
   return(0);
  }
int start()
  { 
   if (OK) return(0); // проверка выполнялся ли этот код и выставлен ли ордер
   if(DayOfWeek()!=Day_Week) return(0); // проверка дня недели иначе выход

// для сравнения с временем сервера   
   if (Hour_Time !=TimeHour(TimeCurrent())){ Sleep(60000); return(0);} // пауза на 1 минуту, на следующем тике опять проверка
//   для сравнения с локальным временем компьютера
//   if (Hour_Time !=TimeHour(TimeLocal()))  { Sleep(60000); return(0);}


// если текущий час совпадает с заданным то открываем ордер
   int cmd, ticket=-1;
   double SL, TP, PR;
   if (order_type == 1){ cmd = OP_BUY; PR = NormalizeDouble(Ask,Digits); }
   if (order_type == 2){ cmd = OP_SELL; PR = NormalizeDouble(Bid,Digits); }
   
   if (StopLoss==0) SL=0; else SL = NormalizeDouble(PR - StopLoss * Point, Digits);
   if (TakeProfit==0) TP=0; else TP = NormalizeDouble(PR + TakeProfit * Point, Digits);
   
   ticket = OrderSend(Symbol(),cmd, Lot, PR, Slippage, SL, TP, NULL, 0, 0, Blue);
   if (ticket > 0) {
      if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) Print("Order opened : ", OrderOpenPrice());
      OK = true; 
   }
   else Print("Ошибка № ",GetLastError()," при открытиии ордера");
   
   return(0);
  }
//+------------------------------------------------------------------+

 это открытие, надо дописать проверку для закрытия :) - хотя думаю закрытие по лосям или профиту самый оптимальный вариант

 
Не подскажете еще как будет выглядеть код закрытие позиции в конце дня? Благодарю за помощь.
 
Rockton >>:
Не подскажете еще как будет выглядеть код закрытие позиции в конце дня? Благодарю за помощь.
//+------------------------------------------------------------------+
//|                                                   Order_Time.mq4 |
//|                                                            IgorM |
//|                                        https://forum.mql4.com/ru/ |
//+------------------------------------------------------------------+
#property copyright "IgorM"
#property link      "https://forum.mql4.com/ru/"

extern string     _P1         = "тип ордера: 1 BUY ;  2 -SELL";
extern int        order_type  = 1;
extern int        Hour_Time1  = 0;        // время выставления ордера
extern int        Hour_Time2  = 1;        // время закрытия ордера
extern string     _P2         =  "номер дня недели (воскресенье-0,1,2,3,4,5,6)";
extern int        Day_Week1   = 1;        // день выставления ордера
extern int        Day_Week2   = 1;        // день закрытия ордера
extern double     Lot         = 0.01;
extern int        StopLoss    = 300;      // в пунктах
extern int        TakeProfit  = 500;      // в пунктах
extern int        Slippage    = 50;      // величина проскальзования при открытии ордера
extern int        Magic       = 123456;

bool MyOrderOK = false ; 

int init()
  {
   return(0);
  }

int deinit()
  {
   return(0);
  }
  
int MyOrderSend()
{
   int cmd, ticket=-1;
   double SL, TP, PR;
   if (order_type == 1){ cmd = OP_BUY; PR = NormalizeDouble(Ask,Digits); }
   if (order_type == 2){ cmd = OP_SELL; PR = NormalizeDouble(Bid,Digits); }
   
   if (StopLoss==0) SL=0; else SL = NormalizeDouble(PR - StopLoss * Point, Digits);
   if (TakeProfit==0) TP=0; else TP = NormalizeDouble(PR + TakeProfit * Point, Digits);
   
   ticket = OrderSend(Symbol(),cmd, Lot, PR, Slippage, SL, TP, NULL, Magic, 0, Blue);
   if (ticket > 0) {
      if (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) Print("Order opened : ", OrderOpenPrice());
      MyOrderOK = true; 
   }
   else Print("Ошибка № ",GetLastError()," при открытиии ордера");
   
   return(0);
}

int MyOrderClose()
{
   int cmd;
   if (order_type == 1) cmd = OP_BUY; 
   if (order_type == 2) cmd = OP_SELL;
   for (int i=OrdersTotal()-1;i>=0;i--) {
      OrderSelect(i, cmd, MODE_TRADES);
      if (OrderMagicNumber() == Magic)
                if (OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Violet)) { OrderPrint();  MyOrderOK = false; }
                        else Print("Ошибка № ",GetLastError()," при закрытии ордера");
   }
}

int start()
  { 
// если не выставлен ордер && день недели равен заданому && и текущее время сервера рано заданному то выставим ордер
      if ((!MyOrderOK) &&(DayOfWeek()== Day_Week1) && (Hour_Time1 ==TimeHour(TimeCurrent()))) MyOrderSend();
      if ((MyOrderOK) &&(DayOfWeek()== Day_Week2) && (Hour_Time2 ==TimeHour(TimeCurrent()))) MyOrderClose();
      Sleep(60000); // пауза одну минуту
   return(0); 
  }

наверно все будет выглядеть так - проверить надо, сегодня сервы не работают
 

ну вот, первый раз на форуме выложил код, а рабочий он или нет, так и не узнал :(

топикстартер - отпишись плз, как у тебя дела там? :)