//+------------------------------------------------------------------+ //| MAus.mq4 | //| Бушин Игорь | //| www.zuzabush@yandex.ru | //| Южно-Сахалинск | //| | //| Вешать только на один график | //| | //+------------------------------------------------------------------+ #property copyright "Бушин Игорь" #property link "www.zuzabush@yandex.ru" //------- Внешние параметры ------------------------------------------ extern bool ProfitTrailing = True; // Тралить только профит extern int TrailingStop = 12; // Начальный размер трала extern int TrailingStep = 2; // Шаг трала extern int Otstup = 25; // Дистанция extern double MovingPeriod = 25; extern double MovingShift = 6; extern double Lot = 0.1; extern double SLEquty = 140; // Виртуальный стоп extern bool UseSound = True; // Использовать звуковой сигнал extern string NameFileSound = "expert.wav"; // Наименование звукового файла double VSL; double ma; int order; int Lots ; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() {{ if(OrdersTotal()<2) VSL=AccountBalance(); if(AccountEquity()>VSL+ SLEquty) CloseAll();} if (OrdersTotal()<1)Lots = Lot*10; else Lots = OrdersTotal()*Lot*20; ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); if (( Ask>ma)&&(OrdersTotal()<1)) order= OrderSend(Symbol(),OP_BUY,Lots*0.1,Ask,3,0,0,"",5,0); if(( Ask>ma)&&(OrderOpenPrice()-Bid>Otstup*Point)) OrderSend(Symbol(),OP_BUY,Lots*0.1,Ask,3,0,0,"",5,0); if((BidOtstup*Point)) OrderSend(Symbol(),OP_SELL,Lots*0.1,Bid,3,0,0,"",5,0); for (int i=0; iTrailingStop*pp) { if (OrderStopLoss()TrailingStop*pp) { if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) { ModifyStopLoss(pAsk+TrailingStop*pp); return; } } } } //+------------------------------------------------------------------+ //| Перенос уровня StopLoss | //| Параметры: | //| ldStopLoss - уровень StopLoss | //+------------------------------------------------------------------+ void ModifyStopLoss(double ldStopLoss) { bool fm; fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE); if (fm && UseSound) PlaySound(NameFileSound); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ // Закрываем все ордера | //+------------------------------------------------------------------+ void CloseAll() { int ticket, i; while(OrdersTotal()>0) { for(i=OrdersTotal()-1;i>=0;i--){ OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderType()<2){ if(OrderType()==OP_BUY) { RefreshRates(); ticket=OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); if(!ticket) Print(" Ошибка! ",GetLastError()); Sleep(1000); } if(OrderType()==OP_SELL) { RefreshRates(); ticket=OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); if(!ticket) Print(" Ошибка! ",GetLastError()); Sleep(1000); } } } } }