← К каталогу
Исходный код · ID 579

smc-1.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Советник для MetaTrader 4, который в начальной инициализации рисует 12 трендовых линий на графике: три для стоп-ордеров (BuyStop, SellStop и их SL/TP), три для лимитных ордеров (BuyLimit, SellLimit и их SL/TP). В каждом тике советник считывает текущие значения этих линий, управляет существующими позициями — закрывает по уровням стоп-лосс и тейк-профит, при включённом trailing stop перемещает стоп-лосс в сторону прибыли. Открытие новых позиций происходит при пробое стоп-линий или касании ценой лимитных линий. Lot size рассчитывается с учётом свободного маржи, максимального риска и фактора уменьшения при серии убыточных сделок. Есть ограничение одной сделки в день и проверка минимального расстояния стоп-лосса.

Настройки программы

НастройкаОписание
Lots Объём лота — Базовый размер лота для расчёта оптимального объёма через LotsOptimized
MaximumRisk Максимальный риск — Доля свободного маржи в процентах, используемая для расчёта начального лота
DecreaseFactor Фактор уменьшения — Множитель, уменьшающий лот при наличии серии убыточных сделок без прибыли
Slippage Слэппинг — Допустимое проскальзывание в пунктах при открытии и закрытии ордеров
>0 enables trailing stop (UseTrailingStop) Использовать trailing stop — Включает перемещение стоп-лосса в сторону прибыли при достижении заданного уровня
TrailingStop Trailing stop — Расстояние в пунктах от цены открытия, при достижении которого стоп-лосс переносится в безубыток
>0 LIMITS(restricts) trades to ONE PER DAY (OneTradePerDay) Одна сделка в день — Ограничивает количество сделок до одной в день при включении
Получить полный код

Поиск по коду файла

extern double  Lots              =0.1;
extern double  MaximumRisk       =0.02;
extern double  DecreaseFactor    =3;
extern double  Slippage          =3;
extern int     UseTrailingStop   =0;//>0 enables trailing stop
extern double  TrailingStop      =20;
extern int     OneTradePerDay    =0;//>0 LIMITS(restricts) trades to ONE PER DAY

double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break

   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);

   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;

         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }

   if(lot<0.1) lot=0.1;
   return(lot);
   }

int init()
{
      // код доступен только после оплаты
   }

int start()
  {
      // код доступен только после оплаты
   }
   int cnt,total,ticket,MinDist,tmp;
   double Spread;

  if(Bars<100){
     Print("bars less than 100");
     return(0);  
  }

 MinDist=MarketInfo(Symbol(),MODE_STOPLEVEL);
 Spread=(Ask-Bid);

   double BuyStop   =ObjectGetValueByShift("BuyStop",0);
   double BuyStopSL =ObjectGetValueByShift("BuyStopSL",0);
   double BuyStopTP =ObjectGetValueByShift("BuyStopTP",0);
   double SellStop  =ObjectGetValueByShift("SellStop",0);
   double SellStopSL=ObjectGetValueByShift("SellStopSL",0);
   double SellStopTP=ObjectGetValueByShift("SellStopTP",0);

   double BuyLimit   =ObjectGetValueByShift("BuyLimit",0);
   double BuyLimitSL =ObjectGetValueByShift("BuyLimitSL",0);
   double BuyLimitTP =ObjectGetValueByShift("BuyLimitTP",0);
   double SellLimit  =ObjectGetValueByShift("SellLimit",0);
   double SellLimitSL=ObjectGetValueByShift("SellLimitSL",0);
   double SellLimitTP=ObjectGetValueByShift("SellLimitTP",0);

   if(Minute()==0){
Print(Symbol(),"BuyStop:",BuyStop," BuyStopSL:",BuyStopSL," BuyStopTP:",BuyStopTP,
      " SellStop:",SellStop," SellStopSL:",SellStopSL," SellStopTP:",SellStopTP);}

  total=OrdersTotal();
  if(total>0)
   { 
   for(cnt=0;cnt<total;cnt++)
   {
    OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
    if(OrderMagicNumber()==16384 &&
    OrderType()==OP_BUY && 
    OrderSymbol()==Symbol())
     {
     if(Close[1] < BuyStopSL)
      {                                 
       OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet); // close LONG 

Показано первые 50% кода (символов: 10030)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 003₽ ≈ $12.26