//+------------------------------------------------------------------+ //| Трап | //| Бушин Игорь | //| www.Zuzabush@yandex.ru | //| | //| | //| | //| | //+------------------------------------------------------------------+ #property copyright " Бушин Игорь-Сахалин" #property link "www.Zuzabush@yandex.ru" //------- Внешние параметры ------------------------------------------ extern double Lots = 0.1; //Лот мать его extern int SE= 35; // Прирост средств и его мать тоже extern bool AllPositions = False; // Управлять всеми позициями extern bool ProfitTrailing = True; // Тралить только профит extern int TrailingStop = 10; // Фиксированный размер трала extern int TrailingStep = 2; // Шаг трала extern int Otstup = 15; extern bool UseSound = True; // Использовать звуковой сигнал extern string NameFileSound = "expert.wav"; // Наименование звукового файла static datetime prevtime = 0; double OT; double VSL; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { if(OrdersTotal()<3) VSL=AccountBalance(); if(prevtime == Time[0]) return(0); if ((OrdersTotal()<2)||(OrdersTotal()VSL+SE) CloseAll(); for (int i=0; iTrailingStop*pp+Otstup*Point) { if (OrderStopLoss()TrailingStop*pp+Otstup*Point) { if (OrderStopLoss()>pAsk+((TrailingStop+Otstup*Point)+TrailingStep-1)*pp || OrderStopLoss()==0) { ModifyStopLoss(pAsk+TrailingStop*pp); return; } } } } //+------------------------------------------------------------------+ //| Перенос уровня 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); } } } } }