[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Помощники трейдера » Все о MQL4 » Полезные функции для написания советника (Кусочки кода, которые помогут в написании грааля :))
Полезные функции для написания советника
RelrinДата: Суббота, 22.08.2009, 21:42 | Сообщение # 1
Почти знаменит
Группа: Администраторы
Сообщений: 196
Награды: 0
Репутация: 5
Статус: Offline
Пожалуй я начну развивать эту тему. Как никак MQL4 мне немного знаком biggrin

Функция для закрытия ВСЕХ ордеров:

Code

void CloseOrders()  
{
   int cnt = OrdersTotal();
   for (int i=cnt-1; i>=0; i--) {
     if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;

     //По желанию
     //if (OrderSymbol() != Symbol()) continue;
     //По желанию
     //if (OrderMagicNumber() != Magic) continue;

     if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
     if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
   }
}
 
RelrinДата: Суббота, 22.08.2009, 21:44 | Сообщение # 2
Почти знаменит
Группа: Администраторы
Сообщений: 196
Награды: 0
Репутация: 5
Статус: Offline
Это уже мой стиль программирования.

Code

//+-------------- Расчет оптимального лота --------------+
void CalculateMM()
{
     double MinLots=MarketInfo(Symbol(),MODE_MINLOT);
     double MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);
     Lot=AccountFreeMargin()/100000*RiskPercent;
     Lot=MathMin(MaxLots,MathMax(MinLots,Lot));
     if(MinLots<0.1)
        Lot=NormalizeDouble(Lot,2);
     else
     {
        if(MinLots<1)
           Lot=NormalizeDouble(Lot,1);
        else   
           Lot=NormalizeDouble(Lot,0);   
     }
     if(Lot<MinLots)Lot=MinLots;
     if(Lot>MaxLots)Lot=MaxLots;
     return(0);
}
 
RelrinДата: Суббота, 22.08.2009, 21:45 | Сообщение # 3
Почти знаменит
Группа: Администраторы
Сообщений: 196
Награды: 0
Репутация: 5
Статус: Offline
Code

//+------Перекрываем ордера, если идет пятница и время больше 23:30------+
void CheckForHourClose()
{
   for(int i = OrdersTotal() - 1; i >=0; i--)
   {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
     {
       if(Hour() == 23 && Minute() >= 30 && DayOfWeek() == 5)
       {
          CloseAll();
       }
     }
   }
}
 
RelrinДата: Суббота, 22.08.2009, 21:47 | Сообщение # 4
Почти знаменит
Группа: Администраторы
Сообщений: 196
Награды: 0
Репутация: 5
Статус: Offline
Code

//+------ Защита по спреду ------+
   if (MaxSpread * 0.0001 < Ask - Bid) return(0);

Code

//+------ Временной фильтр ------+
    if(!(Hour()>=StartHour && Hour()<=EndHour))
    {
       return(0);
    }
 
Форум » Помощники трейдера » Все о MQL4 » Полезные функции для написания советника (Кусочки кода, которые помогут в написании грааля :))
  • Страница 1 из 1
  • 1
Поиск: