ограничение позициии по времени в МС - страница 2

 
OZ0 писал (а) >>

не хочет - спрашивает действительно ли хочу его закрыть и тут же запустить

#property copyright "Copyright © 2008, Tinytjan"
#property link      "tinytjan@mail.ru"
#property show_inputs
 
extern int    H        = 10;   //ОТКРОЕМ ПОЗИЦИЮ В ... ЧАСОВ
extern int    M        = 30;   //И ... МИНУТ
extern int    CloseH   = 22;
extern int    CloseM   = 00; 
extern int    SL       = 75;
extern int    TP       = 10;
 
int MN = 1234567;
//--------------------------
int start()
{
   while (!IsStopped()) 
   { //выполняется пока скрипт не остановлен
      Sleep(1000); 
      if (TimeHour(TimeCurrent( ) ) == H && TimeMinute(TimeCurrent( ) ) == M)
      {
         RefreshRates(); //обновляем котировки 
 
         if (!GetActiveOrders(MN))
         {
            OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-SL*Point,Bid+TP*Point,NULL,MN,0,Red);//Symbol()
            Print (GetLastError());
         }
      }
      if (TimeHour(TimeCurrent( ) ) == CloseH && TimeMinute(TimeCurrent( ) ) == CloseM)
      {
         CheckForExpired(MN);
      }
   }
}
 
void CheckForExpired(int MN = -1)
{
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      // already closed
      if(OrderSelect(i, SELECT_BY_POS) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber() != MN && MN != -1) continue;
      
      if (TimeHour(TimeCurrent( ) ) == CloseH && TimeMinute(TimeCurrent( ) ) == CloseM)
      {
         if(OrderType() == OP_BUY)
         {
            OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
         }
         
         if(OrderType() == OP_SELL)
         {
            OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
         }
 
         RefreshRates();
      }
   }
}
 
bool GetActiveOrders(int MagicNumber)
{
   for(int i = 0; i < OrdersTotal(); i++)
   {
      // already closed
      if(OrderSelect(i, SELECT_BY_POS) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
      // order was opened in another way
      if(OrderMagicNumber() != MagicNumber) continue;
      
      if(OrderType() == OP_SELL || OrderType() == OP_BUY)
      {
         return (true);
      }
   }
   
   return (false);
}

Проверил, открывает, закрывает, не останавливается.

Удачи.

 
TheXpert писал (а) >>

Проверил, открывает, закрывает, не останавливается.

Удачи.

Ураааааааааа... работает. Супер!!!

Второй день ищу ответ - чем отличается советник от скрипта и как упростить советник до скрипта.

 
OZ0 писал (а) >>

спасибо. попробую. не хотелось бы надоедать, но что Вы скажете на это? т.е. я имею в виду как бы закрыть в 22.00 и открыть в 10.30? в одном советнике или скрипте? в известнейшем питерском ДЦ не работает такой скрипт, а обойти можно?

В известном питерском ДЦ при открытии по рынку SL и TP должны отсутствовать и устанавливаются отдельно OrderModify

 
Avals писал (а) >>

В известном питерском ДЦ при открытии по рынку SL и TP должны отсутствовать и устанавливаются отдельно OrderModify

Это типа чтобы не торговали на новостях и не пипсовали ? Т.е. я не могу скриптом поставить SL и TP по времени ?

 
Avals писал (а) >>

В известном питерском ДЦ при открытии по рынку SL и TP должны отсутствовать и устанавливаются отдельно OrderModify

Это называется "Исполнение по рынку".

 
OZ0 писал (а) >>

Это типа чтобы не торговали на новостях и не пипсовали ? Т.е. я не могу скриптом поставить SL и TP по времени ?

Можно, например так 'Полезные функции от KimIV'

 
D500_Rised писал (а) >>

Это называется "Исполнение по рынку".

Именно в кавычках - я правильно понимаю?


Второй день ищу ответ - чем отличается советник от скрипта и как упростить (теперь уже думаю - усложнить) советник до скрипта.

 
OZ0 писал (а) >>

Именно в кавычках - я правильно понимаю?

Второй день ищу ответ - чем отличается советник от скрипта и как упростить (теперь уже думаю - усложнить) советник до скрипта.

Это звучит всё равно что я второй день ищу хэлп терминала...

А чтоб советник упростить/усложнить до скрипта надо всего лишь зациклить алгоритм эксперта в скрипте.

 

В кавычках потому, что это такой термин.

По второму вопросу:

Из хелпа МТ4:


Программы, написанные на MQL4, имеют различные свойства и предназначение:

  • Советник — это механическая торговая система (МТС), запускающаяся с приходом нового тика. Он может не только работать в режиме информирования о торговых сигналах, но также самостоятельно совершать торговые операции. Терминал поддерживает тестирование стратегий на исторических данных, что позволяет выявить особенности поведения советника в различных рыночных условиях;

  • Скрипт — программы, предназначенные для одноразового выполнения каких-либо действий. В отличие от экспертов, скрипты запускаются не потиково, а по команде.

 
StatBars писал (а) >>

Это звучит всё равно что я второй день ищу хэлп терминала...

А чтоб советник упростить/усложнить до скрипта надо всего лишь зациклить алгоритм эксперта в скрипте.

Уели стратега программисты. Спасибо конечно, что хоть не ругаетесь.

А как зациклить можете показать на примере (что вверху страницы) кода Андрея TheXpert ?