Boris54
ПенSионер

 
Уровень 17

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ



Советник для открытия по рынку одного ордера

Здравствуйте. Прошу реализовать такой алгоритм для торговли внутри дня.
Советник открывает по рынку одну сделку в день во время Т1. Затем закрывает ордер, когда цена достигла TP или SL. Во время Т2 — закрывается ордер, если не достигли нужную прибыль (или несработавшие отложенные ордера).
Исходные данные: Мт4, Альпари, 5 знаков после запятой.
Параметры советника:
Размер лота,
Выбор бай или селл,
Т1 – время открытия ордера,
Тр – тейк-профит для ордера,
SL – стоп-лосс для ордера,
Т2 — время удаления несработавших ордеров, либо ордера который не достиг TP или SL.
Предусмотреть торговлю в заданные дни недели, например торгуем только в понедельник.
Предусмотреть, что в работе будут другие ордера по этому же инструменту.
Мартин — не нужен!
Я заказывал похожие советники:
Советник для выставления двух ордеров в разное время
zakaz.opentraders.ru/51959.html
А в этом советнике вы использовали торговлю в заданные дни недели
zakaz.opentraders.ru/50746.html
  • 0
  • Просмотров: 1925
  • 2 марта 2022, 10:31
  • Boris54
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Простой советник.
02 марта 2022
02 марта 2022

Комментарии (20)

+
0
неполное тз
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 2 марта 2022, 18:36
+
0
Уточните, что добавить.
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 3 марта 2022, 02:19
+
0
Как определить: покупать или продавать?
avatar

  16  ssg Сообщений: 817

  • 2 марта 2022, 19:12
+
0
Параметр советника — выбор Бай или Селл.
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 3 марта 2022, 02:20
+
0
Наверное Андрей занят. Предлагаю самую простую реализацию известного Вам советника zakaz.opentraders.ru/51959.html, но с учетом Ваших пожеланий.
Торгует по дням недели на выбор.Можно менять время открытия позиции и можно менять время закрытия и направления торговли для каждого дня отдельно.
<code>
//+------------------------------------------------------------------+
//|                                                      Boris54.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots         = 0.1;      // лот
extern double Profit       = 10;       // профит
extern double StopLoss1    = 500;      // лось 1
extern double TakeProfit1  = 500;      // язь 1
extern double StopLoss2    = 500;      // лось 2
extern double TakeProfit2  = 500;      // язь 2
extern int Slip            = 30;       // реквот
extern int Magic           = 123;      // магик

extern int    Day1         = 1;        // 1- торговать в понедельник 0 - не торговать
extern int    BuySell1     = 0;        // 0-buy 1-sell
extern string Time1        = "10:00:00";// время открытия позиции в понедельник
extern string TimeClose1   = "23:00:00";// врямя закрытия позиций в понедельник
extern int    Day2         = 2;        // 2- торговать во вторник 0 - не торговать
extern int    BuySell2     = 0;        // 0-buy 1-sell
extern string Time2        = "10:00:00";// время открытия позиции во вторник
extern string TimeClose2   = "23:00:00";// врямя закрытия позиций во вторник
extern int    Day3         = 3;        // 3- торговать в среду 0 - не торговать
extern int    BuySell3     = 0;        // 0-buy 1-sell
extern string Time3        = "10:00:00";// время открытия позиции в среду
extern string TimeClose3   = "23:00:00";// врямя закрытия позиций в среду
extern int    Day4         = 4;        // 4- торговать в четверг 0 - не торговать
extern int    BuySell4     = 0;        // 0-buy 1-sell
extern string Time4        = "10:00:00";// время открытия позиции в четверг
extern string TimeClose4   = "23:00:00";// врямя закрытия позиций в четверг
extern int    Day5         = 5;         //5- торговать в пятницу 0 - не торговать
extern int    BuySell5     = 0;        // 0-buy 1-sell
extern string Time5        = "10:00:00";// время открытия позиции в пятницу
extern string TimeClose5   = "23:00:00";// врямя закрытия позиций в пятницу


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("c",111,44,"Close All");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double StopLoss,double TakeProfit)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1){
   double pr=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(){
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);

//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
</code>

Редактирован: 3 марта 2022, 20:11
avatar

  16  ssg Сообщений: 817

  • 3 марта 2022, 20:09
+
0


//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//------- понедельник
   if(DayOfWeek()==Day1 && TimeCurrent()==StringToTime(Time1))
     {
      if(BuySell1==0)
         PutOrder(0,Ask,StopLoss1,TakeProfit1);
      if(BuySell1==1)
         PutOrder(1,Bid,StopLoss1,TakeProfit1);
      
     if(TimeCurrent()>=StringToTime(TimeClose1) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ вторник
   if(DayOfWeek()==Day2 && TimeCurrent()==StringToTime(Time2))
     {
      if(BuySell2==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell2==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose2) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ среда
   if(DayOfWeek()==Day3 && TimeCurrent()==StringToTime(Time3))
     {
      if(BuySell3==0)
         PutOrder(0,Ask,StopLoss1,TakeProfit1);
      if(BuySell3==1)
         PutOrder(1,Bid,StopLoss1,TakeProfit1);
      
     if(TimeCurrent()>=StringToTime(TimeClose3) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ четверг
   if(DayOfWeek()==Day4 && TimeCurrent()==StringToTime(Time4))
     {
      if(BuySell4==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell4==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose4) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ пятница
   if(DayOfWeek()==Day5 && TimeCurrent()==StringToTime(Time5))
     {
      if(BuySell5==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell5==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose5) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//-------

   if(OrdersTotal()>0 && ObjectGetInteger(0,"c",OBJPROP_STATE)==1)
     {
      CloseAll();
      ObjectSetInteger(0,"c",OBJPROP_STATE,false);
     }

   Comment("\n All Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+

avatar

  16  ssg Сообщений: 817

  • 3 марта 2022, 20:09
+
0
устроит вариант выше или делать?
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 3 марта 2022, 20:58
+
0
Вариант выше немного не то. Прошу сделать по ТЗ.
В ранее сделанном советнике убрать выставление второго ордера и добавить дни недели, как во втором аналоге.
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 4 марта 2022, 00:41
+
0
Я не умею читать текст программы.
Для удобства при оптимизации надо задавать SL и ТР один раз в параметрах. Нужен именно один ордер в день.
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 4 марта 2022, 00:38
+
0
Смотрите, тестируйте этот вариант.
<code>
//+------------------------------------------------------------------+
//|                                                   Boris54 v1.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs

extern int    BuySell    = 0;        // 0-buy 1-sell
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 333;      // лось
extern int TakeProfit    = 444;      // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик
extern int CloseOn       = 0;        // 1-закрытие в конце работы

extern bool MonDay      = true;
extern bool TuesDay     = true;
extern bool WednesDay   = true;
extern bool ThursDay    = true;
extern bool FriDay      = true;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Trade()
  {
   if(DayOfWeek()==1 && MonDay)    return(true);
   if(DayOfWeek()==2 && TuesDay)   return(true);
   if(DayOfWeek()==3 && WednesDay) return(true);
   if(DayOfWeek()==4 && ThursDay)  return(true);
   if(DayOfWeek()==5 && FriDay)    return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double stopLoss,double takeProfit)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(){
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CloseOn>0)
     {
      CloseAll();
     }

   if(Trade() && CountTrades()<1)
     {
      if(TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
        {    
        if(BuySell==0)
         PutOrder(0,Ask,StopLoss,TakeProfit);
        if(BuySell==1)
         PutOrder(1,Bid,StopLoss,TakeProfit);
        }
     }

   Comment("\n Time: ",TimeCurrent());
  }
//+------------------------------------------------------------------+

</code>

Редактирован: 4 марта 2022, 05:19
avatar

  16  ssg Сообщений: 817

  • 4 марта 2022, 05:18
+
0
Оба варианта делают тоже самое. Только первый вариант более гибкий. Можно выбрать для торговли не только день недели, но и время открытия и время закрытия позиций для каждого дня индивидуально.
То что не умеете читать текст программы не сильно страшно.Главное что бы торговали успешно.*hi* 
avatar

  16  ssg Сообщений: 817

  • 4 марта 2022, 05:24
+
0
Судя по стратегии советник торгует используя статистический анализ: сегодня торгуем в заданное время в заданном направлении. Но ( на мой взгляд) стратегия однобокая и слабая.
Явные недостатки:
-Советник торгует или бай или селл.
-Советник открывает позиции каждый день в одно время.
-Тейкпрофит и стоплосс для позиций каждого дня одинаковые.
Следовательно возможные преимущества статистического анализа используются не полностью.
Но это только моё мнение.
Главное что бы Вас устраивало. Деньги то Ваши.:) 
avatar

  16  ssg Сообщений: 817

  • 4 марта 2022, 05:43
+
0
Спасибо. Как скачать файл?
Редактирован: 4 марта 2022, 11:51
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 4 марта 2022, 06:03
+
0
Ваш советник выставляет МНОГО ордеров внутри одного дня. То есть он выставляет первый ордер во время Т1, далее цена достигает SL или TP, после этого сов выставляет ещё один ордер и так далее до Т2. Это не соответствует заданию.
Мне нужен ОДИН ордер, который выставлен во время Т1 и всё!
Редактирован: 11 марта 2022, 09:40
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 11 марта 2022, 09:34
+
0
Смотрите:
<code>

#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs

extern int    BuySell    = 0;        // 0-buy 1-sell
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 333;      // лось
extern int TakeProfit    = 444;      // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик
extern int CloseOn       = 0;        // 1-закрытие в конце работы

extern bool MonDay      = true;
extern bool TuesDay     = true;
extern bool WednesDay   = true;
extern bool ThursDay    = true;
extern bool FriDay      = true;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Trade()
  {
   if(DayOfWeek()==1 && MonDay)    return(true);
   if(DayOfWeek()==2 && TuesDay)   return(true);
   if(DayOfWeek()==3 && WednesDay) return(true);
   if(DayOfWeek()==4 && ThursDay)  return(true);
   if(DayOfWeek()==5 && FriDay)    return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double stopLoss,double takeProfit)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(){
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1){
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CloseOn>0)
     {
      CloseAll();
     }


   if(Trade() && CountTrades()<1)
     {
      if(TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
        {    
        if(BuySell==0)
         PutOrder(0,Ask,StopLoss,TakeProfit);
        if(BuySell==1)
         PutOrder(1,Bid,StopLoss,TakeProfit);
        }
     } 
   Comment("\n Time: ",TimeCurrent());
  }
//+----------------------------------------------------------------------------+
</code>

Редактирован: 11 марта 2022, 17:01
avatar

  16  ssg Сообщений: 817

  • 11 марта 2022, 13:03
+
0
Откройте МетаЭдитор/Файл/Создать/Советник — скопируйте туда код.Затем нажмите кнопку — компилировать.
Другой вариант — открываете код ненужного советника, удаляете старый код и копируйте туда этот код.Затем нажмите кнопку — компилировать.
avatar

  16  ssg Сообщений: 817

  • 4 марта 2022, 07:16
+
0
посмотрю сегодня
avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 4 марта 2022, 17:41
+
0
мой вариант: www.opentraders.ru/downloads/3267/

avatar

  34  AM2 Сообщений: 15891 - Андрей

  • 6 марта 2022, 09:48
+
0
Спасибо. Завтра попробую потестировать.
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 6 марта 2022, 14:01
+
0
В выложенном советнике НЕТ параметра «выбор бай или селл», в результате советник не торгует. А у вас на скрине виден результат торговли. Возможно вы выложили тут www.opentraders.ru/downloads/3267/ какую-то промежуточную версию советника.
Прошу исправить.
Прошу сразу проверить работу советника при маленьком ТР (100 п) и маленьком SL (100 п). Мне нужен ОДИН ордер в день, не нужна серия ордеров внутри одного дня.
Редактирован: 11 марта 2022, 09:38
avatar

  17  Boris54 Автор Сообщений: 757 - ПенSионер

  • 11 марта 2022, 09:06

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари