Форум о заработке, инвестициях и криптовалюте - Показать сообщение отдельно - Советник на основании индикатора ForexOFFTrend3
Показать сообщение отдельно
Старый 28.03.2013, 19:19   #11
madman
Любитель
 
Аватар для madman
 
Регистрация: 17.02.2013
Сообщений: 469
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для madman с помощью ICQ
По умолчанию

Закрываем все сделки в пятницу



Цитата:



extern int MyHour=22;

extern int MyMinute=00;



// 5 - Friday

#define MyDay 5



datetime LastTradeTime;

//+------------------------------------------------------------------+

int init()

{

// установим время последней торговой операции вчерашним днем

LastTradeTime = CurTime()-24*60*60;

return(0);

}

//+------------------------------------------------------------------+

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

int start()

{

//----

// проверим, не закрывали ли мы все уже сегодня

// если да - выходим

if (TimeDayOfYear(CurTime())==TimeDayOfYear(LastTrade Time)) return(0);



// если не пятница - выходим

if (DayOfWeek()!=MyDay) return(0);



// проверим, не наступило ли время закрывать позиции

if (((TimeHour(CurTime())==MyHour)&&(TimeMinute(CurTi me())>=MyMinute))

||(TimeHour(CurTime())>MyHour))

{

// закроем все позиции и удалим ордера

while (OrdersTotal()>0)

{

// выделим первую позицию или ордер в списке

if (!OrderSelect(0, SELECT_BY_POS)) break; // в случае неудачи выйти из цикла



// если отложенный ордер, то удалить

if (OrderType()>OP_SELL)

{

if (!OrderDelete(OrderTicket()))

{

Print("Ошибка ", GetLastError()," при удалении отложенного ордера ",

OrderTicket());

break;

}

}

// если открытая позиция, то закрыть

else

{

double price;

if (OrderType()==OP_SELL)

price = MarketInfo(OrderSymbol(), MODE_ASK);

else

price = MarketInfo(OrderSymbol(), MODE_BID);





if (!OrderClose(OrderTicket(), OrderLots(), price, 3))

{

Print("Ошибка ", GetLastError()," при закрытии позиции ", OrderTicket());

break;

}

}



// пауза 10 секунд

Sleep(10000);

}

if (OrdersTotal()==0) LastTradeTime = CurTime();

}

return(0);

}

//+------------------------------------------------------------------+


А слвиг в 7 баров не сможем убрать, иначе смысл во второй линии (красной) теряется.
madman вне форума   Ответить с цитированием