Ребята, помогите!!! - страница 2

 

Эти срабатывают однократно, на заданное время, а надо на каждом часе, насколько я понял.

Что-то такое, наверное:

if(TimeMinute(TimeCurrent())>58 || TimeMinute(TimeCurrent())<2) ClosePositive(); //функцию закрытия написать по вкусу
 
знаю про этот замечательный сайт, спасибо но это не то
 
bikrus13:
знаю про этот замечательный сайт, спасибо но это не то
Надо самому прикручивать. Вот выше постevillive  , практически одной строкой все решено.
 
DJDJ22:
Надо самому прикручивать. Вот выше постevillive  , практически одной строкой все решено.
а точнее какой скрипт? 
 
evillive:

Эти срабатывают однократно, на заданное время, а надо на каждом часе, насколько я понял.

Что-то такое, наверное:

если можно еще условие. Закрытие одного положительного ордера каждый час?
 
bikrus13:
если можно еще условие. Закрытие одного положительного ордера каждый час?

А если их больше и только один положительный? А если несколько будут в плюсе и ещё несколько в убытке? Тоже только один закрыть? Если да, то какой именно?

Неясно...

 
bikrus13:
а точнее какой скрипт? 
Да фиг его знает. Как то чаще была задача разрешить в определенное время, или изменить параметры. Шерстите кодебазу , что нибудь найдете. Потому что , то что вы ищите в торговле не поможет. Зато поиск расширит кругозор до ненужных размеров. И в любой компании можно будет блеснуть знаниями MQL ( шучу) . Удачи.
 
DJDJ22:
Да фиг его знает. Как то чаще была задача разрешить в определенное время, или изменить параметры. Шерстите кодебазу , что нибудь найдете. Потому что , то что вы ищите в торговле не поможет. Зато поиск расширит кругозор до ненужных размеров. И в любой компании можно будет блеснуть знаниями MQL ( шучу) . Удачи.
))) пытаюсь
 

вот простой скрипт набросал, работу не проверял, но как учебное пособие сойдёт, надеюсь:

#property show_inputs
#property strict

input int slip=5;

int k=1;

int OnInit()
{
  if(_Digits==3 || _Digits==5) k=10;
  return(INIT_SUCCEEDED);
}

void OnStart()
{
  while(!IsStopped())
  {
    if(TimeMinute(TimeCurrent())>56) ClosePos();
    Sleep(10000);
  }
}

void ClosePos()
{
  int ticket=-1;
  double profit=0;
  double price=0;
  ResetLastError();
  for(int i=OrdersHistoryTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
    if(OrderType()<2 && OrderSymbol()==Symbol() && (TimeCurrent()-OrderCloseTime())<180)
    return;
  }
  for(int i=OrdersTotal()-1;i>=0;i--)
  {
    if(OrderSelect(i,SELECT_BY_POS))
    {
      if(OrderType()<2 && OrderSymbol()==Symbol() && (OrderProfit()+OrderCommission()+OrderSwap())>profit)
      {
        profit=OrderProfit()+OrderCommission()+OrderSwap();
        ticket=OrderTicket();
      }
    }
  }
  if(ticket>0)
  if(OrderSelect(ticket,SELECT_BY_TICKET))
  {
      switch(OrderType())
      {
        case 0: price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),_Digits); break;
        case 1: price = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),_Digits); break;
        default: break;
      }
      if(!OrderClose(OrderTicket(),OrderLots(),price,slip*k,Yellow))      Print(__FUNCTION__,"_Error_",GetLastError()); 
  }
  else Print("no order selected, ticket ",ticket,", error #", GetLastError());
}
 
evillive:

вот простой скрипт набросал, работу не проверял, но как учебное пособие сойдёт, надеюсь:

Спасибо большое! В понедельник проверю и сообщу тебе о результате!