//+------------------------------------------------------------------+ //| e-Friday.mq4 | //| Ким Игорь В. aka KimIV | //| http://www.kimiv.ru | //| | //| 08.10.2005 Эффект пятницы | //+------------------------------------------------------------------+ #property copyright "Ким Игорь В. aka KimIV" #property link "http://www.kimiv.ru" #define MAGIC 20051008 //------- Внешние параметры советника -------------------------------- extern string _Parameters_Trade = "----- Параметры торговли"; extern double Lots = 0.1; // Размер торгуемого лота extern int StopLoss = 75; // Размер фиксированного стопа extern int TakeProfit = 0; // Размер фиксированного тэйка extern int HourOpenPos = 7; // Время открытия позиции extern bool UseClosePos = True; // Использовать закрытие позиции extern int HourClosePos = 19; // Время закрытия позиции extern bool UseTrailing = True; // Использовать трал extern bool ProfitTrailing = True; // Тралить только профит extern int TrailingStop = 60; // Фиксированный размер трала extern int TrailingStep = 5; // Шаг трала extern int Slippage = 3; // Проскальзывание цены extern string _Parameters_Expert = "----- Параметры советника"; extern bool UseOneAccount = False; // Торговать только на одном счёте extern int NumberAccount = 11111; // Номер торгового счёта extern string Name_Expert = "e-Friday.mq4"; extern bool UseSound = True; // Использовать звуковой сигнал extern string NameFileSound = "expert.wav"; // Наименование звукового файла extern color clOpenBuy = LightBlue; // Цвет открытия покупки extern color clOpenSell = LightCoral; // Цвет открытия продажи extern color clModifyBuy = Aqua; // Цвет модификации покупки extern color clModifySell = Tomato; // Цвет модификации продажи extern color clCloseBuy = Blue; // Цвет закрытия покупки extern color clCloseSell = Red; // Цвет закрытия продажи //---- Глобальные переменные советника ------------------------------- //------- Подключение внешних модулей -------------------------------- //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ void deinit() { Comment(""); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if (UseOneAccount && AccountNumber()!=NumberAccount) { if (!IsTesting()) Comment("Торговля на счёте: "+AccountNumber()+" ЗАПРЕЩЕНА!"); return; } else if (!IsTesting()) Comment(""); if (DayOfWeek()!=5 || Hour()HourClosePos) { if (!IsTesting()) Comment("Время торговли ещё не наступило!"); return; } else if (!IsTesting()) Comment(""); if (Hour()==HourOpenPos) OpenPosition(); if (Hour()>=HourClosePos && UseClosePos) CloseAllPositions(); if (UseTrailing) TrailingPositions(); } //+------------------------------------------------------------------+ //| Установка ордеров | //+------------------------------------------------------------------+ void OpenPosition() { double ldStop=0, ldTake=0; double Op1=iOpen (NULL, PERIOD_D1, 1); double Cl1=iClose(NULL, PERIOD_D1, 1); if (!ExistPosition()) { if (Op1>Cl1) { if (StopLoss!=0) ldStop=Ask-StopLoss*Point; if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point; SetOrder(OP_BUY, Ask, ldStop, ldTake); } if (Op1=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { fc=False; if (OrderType()==OP_BUY) { fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy); } if (OrderType()==OP_SELL) { fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell); } if (fc && UseSound) PlaySound(NameFileSound); } } } } //+------------------------------------------------------------------+ //| Сопровождение позиции простым тралом | //+------------------------------------------------------------------+ void TrailingPositions() { for (int i=0; iTrailingStop*Point) { if (OrderStopLoss()TrailingStop*Point) { if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) { ModifyStopLoss(Ask+TrailingStop*Point, clModifySell); } } } } } } } //+------------------------------------------------------------------+ //| Перенос уровня StopLoss | //| Параметры: | //| ldStopLoss - уровень StopLoss | //| clModify - цвет модификации | //+------------------------------------------------------------------+ void ModifyStopLoss(double ldStop, color clModify) { bool fm; double ldOpen=OrderOpenPrice(); double ldTake=OrderTakeProfit(); fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify); if (fm && UseSound) PlaySound(NameFileSound); } //+------------------------------------------------------------------+