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

Trendline Trader

trendline trader.mq4
Вы автор или правообладатель?

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

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

О программе

Trendline Trader — советник для MetaTrader 4, который строит на графике трендовые линии и использует их уровни для размещения отложенных ордеров. При активации соответствующих настроек создаются линии BuyStop, SellStop, BuyLimit и SellLimit вместе с уровнями стоп-лосса и тейк-профита.

Советник рассчитывает объём сделки на основе свободных средств, параметра риска и коэффициента уменьшения лота при серии убыточных сделок. Он также отслеживает открытые ордера и корректирует их цены, стоп-лоссы и тейк-профиты в соответствии с текущими позициями трендовых линий.

Торговые операции выполняются только при включении параметра AllowLiveTrade. В противном случае EA ограничивается построением линий и выводом информации в журнал.

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

НастройкаОписание
true allows orders to be placed (AllowLiveTrade) AllowLiveTrade — Разрешает размещение ордеров на торговом счёте
true allows stoporder trendlines to be plotted (StopOrderTLs) StopOrderTLs — Разрешает построение трендовых линий для стоп-ордеров
true allows limitorder trendlines to be plotted (LimitOrderTLs) LimitOrderTLs — Разрешает построение трендовых линий для лимитных ордеров
Lots Lots — Базовый объём сделки
MaximumRisk MaximumRisk — Параметр риска для расчёта оптимального объёма
DecreaseFactor DecreaseFactor — Коэффициент уменьшения лота при наличии убыточных сделок
Slippage Slippage — Допустимое проскальзывание в пунктах
Получить полный код

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

extern bool    AllowLiveTrade    =false;//true allows orders to be placed
extern bool    StopOrderTLs      =false;//true allows stoporder trendlines to be plotted
extern bool    LimitOrderTLs     =false;//true allows limitorder trendlines to be plotted
extern double  Lots              =0.1;
extern double  MaximumRisk       =0.02;
extern double  DecreaseFactor    =3;
extern double  Slippage          =3;

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() {
      // код доступен только после оплаты
   }//end init

int deinit() { Print("Deinitialising"); return(0); }

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

   if(StopOrderTLs) {
   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 bs;     bs    =NormalizeDouble(BuyStop,4);
   double bssl;   bssl  =NormalizeDouble(BuyStopSL,4);
   double bstp;   bstp  =NormalizeDouble(BuyStopTP,4);
   double ss;     ss    =NormalizeDouble(SellStop,4);
   double sssl;   sssl  =NormalizeDouble(SellStopSL,4);
   double sstp;   sstp  =NormalizeDouble(SellStopTP,4);
   }//end if

   if(LimitOrderTLs) {   
   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);
   double bl;     bl    =NormalizeDouble(BuyLimit,4);
   double blsl;   blsl  =NormalizeDouble(BuyLimitSL,4);
   double bltp;   bltp  =NormalizeDouble(BuyLimitTP,4);
   double sl;     sl    =NormalizeDouble(SellLimit,4);
   double slsl;   slsl  =NormalizeDouble(SellLimitSL,4);
   double sltp;   sltp  =NormalizeDouble(SellLimitTP,4);
   }//end if

   if(Minute()==0){
      Print(Symbol()," BuyStop:",bs," BuyStopSL:",bssl," BuyStopTP:",bstp,
      " SellStop:",ss," SellStopSL:",sssl," SellStopTP:",sstp);
      Print(" BuyLimit:",bl," BuyLimitSL:",blsl," BuyLimitTP:",bltp,
      " SellLimit:",sl," SellLimitSL:",slsl," SellLimitTP:",sltp);
      }//end if

   if(OrdersTotal()==0) { int BS=0,SS=0,BL=0,SL=0; }
   if(OrdersTotal()>0)  { int cnt,total=OrdersTotal(); 
      for(cnt=0;cnt<total;cnt++) {
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
         if(OrderMagicNumber()==11) { BS=OrderTicket(); }
         if(OrderMagicNumber()==22) { SS=OrderTicket(); }
         if(OrderMagicNumber()==33) { BL=OrderTicket(); }
         if(OrderMagicNumber()==44) { SL=OrderTicket(); }
         }//end for
      }//end if

   int ticket;
   if(AllowLiveTrade)   {
      if(StopOrderTLs)     {
         if(BS==0)            {
            ticket=OrderSend(Symbol(),
                              OP_BUYSTOP,
                              LotsOptimized(),
                              bs,
                              Slippage,
                              bssl,
                              bstp,
                              "TL trader buystop",
                              11,
                              0,
                              Green);
                              if(ticket>0)   {
                                 if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))  {
                                    BS=ticket;
                                    Print(ticket); }//end if(OrderSelect
                                 else P

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

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

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

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

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

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

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