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

Overdraft Gold Profit

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

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

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

О программе

Overdraft Gold Profit — торговый советник для платформы MetaTrader 4, работающий на валютном рынке Forex. Советник анализирует исторические данные ценовых баров на заданных таймфреймах, формирует каналы цен и управляет позициями с использованием торговых операций MetaTrader. Продукт размещает рыночные и отложенные ордера, модифицирует стоп-лоссы и тейк-профиты, а также предоставляет информацию о текущем состоянии счёта и сделок прямо на графике.

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

НастройкаОписание
The risk per trade % (MaxRisk) Максимальный риск — Процент риска на одну сделку от свободного маржи счёта
Lot trading if risk = 0 (Lots) Фиксированный лот — Объём лота для торговли, используемый при нулевом значении риска
Number of bars for the analysis (BarHistory) Количество баров анализа — Количество баров, используемых для расчёта аналитических параметров
The timeframe for analysis of trade names (PeriodBH) Таймфрейм анализа — Таймфрейм графика, на котором выполняется анализ ценовых данных
The timeframe for the analysis of the second tralia (TimeFrame) Таймфрейм второго трейлинга — Таймфрейм для анализа при работе второго трейлинга
The number of bars for the analysis of the second trailing (BarCount) Количество баров второго трейлинга — Число баров, используемых для расчёта второго трейлинга
The offset from the min/max bars for the second trailing (RBHID) Смещение от мин/макс баров — Смещение в пунктах от найденных минимумов и максимумов для второго трейлинга
Calculate take profit (RBHTP) Расчёт тейк-профита — Множитель для расчёта уровня тейк-профита
The calculation of stop loss (RBHSL) Расчёт стоп-лосса — Множитель для расчёта уровня стоп-лосса
Calculate take profit of the second trailing (RBHT) Тейк-профит второго трейлинга — Множитель для расчёта тейк-профита второго трейлинга
The distance calculation for the price movement of the trailing (RBHTS) Расстояние трейлинга — Множитель для определения дистанции движения цены при трейлинге
The calculation of guaranteed profits by trailing (RBHTSP) Гарантированная прибыль трейлинга — Множитель для расчёта гарантированной прибыли при трейлинге
The modification time of the price channel (RBHTM) Время модификации канала — Множитель для определения времени модификации канала цен
The offset from the Ask/Bid for price channel (RBHSM) Смещение канала цен — Смещение в пунктах от текущей цены для построения канала
The offset from the Ask/Bid for pending orders (RBHPS) Смещение отложенных ордеров — Смещение в пунктах от текущей цены для размещения отложенных ордеров
Show/Hide information (ShowInfo) Показ информации — Включает или отключает отображение информационного комментария на графике
Enable/disable trailing (TrailingInBar) Трейлинг внутри бара — Включает или отключает трейлинг стоп-лосса внутри текущего бара
Enable/disable trailing on bars (TrailingBar) Трейлинг по барам — Включает или отключает трейлинг стоп-лосса по завершённым барам
Enable/disable breakeven (BreakEvenDeals) Безубыточность — Включает или отключает перевод стоп-лосса в безубыточную точку
Close all market/pending orders on Friday (CloseOrders) Закрытие ордеров в пятницу — Автоматически закрывает все рыночные и отложенные ордера в пятницу
Time on Friday to close market orders (TimeFriday) Время закрытия в пятницу — Час, начиная с которого советник прекращает торговлю в пятницу
To delete pending orders at active positions (ClosePendingOrders) Удаление отложенных ордеров — Удаляет отложенные ордера при наличии активных рыночных позиций
The magic number (Magic) Магический номер — Уникальный номер для идентификации ордеров советника на счёте
Color the higer line of the price channel (UpCol) Цвет верхней линии канала — Цвет верхней границы ценового канала на графике
Color the lower line of the price channel (DnCol) Цвет нижней линии канала — Цвет нижней границы ценового канала на графике
Comment for market orders (Com) Комментарий ордеров — Текст комментария, присваиваемый рыночным ордерам советника
Получить полный код

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

#property version     "4.2"

#property strict
#include <stderror.mqh>            
#include <stdlib.mqh>    
#define miz 0.00000001

extern double            MaxRisk = 2; //The risk per trade %
extern double               Lots = 0.01; //Lot trading if risk = 0
extern int            BarHistory = 72; //Number of bars for the analysis
extern int              PeriodBH = PERIOD_H1; //The timeframe for analysis of trade names
extern int             TimeFrame = PERIOD_M30;  //The timeframe for the analysis of the second tralia
extern int              BarCount = 2; //The number of bars for the analysis of the second trailing  
extern int                 RBHID = 8; //The offset from the min/max bars for the second trailing
extern int                 RBHTP = 2; //Calculate take profit
extern int                 RBHSL = 4; //The calculation of stop loss
extern int                  RBHT = 4; //Calculate take profit of the second trailing
extern int                 RBHTS = 6; //The distance calculation for the price movement of the trailing
extern int                RBHTSP = 4; //The calculation of guaranteed profits by trailing
extern int                 RBHTM = 9; //The modification time of the price channel
extern int                 RBHSM = 7; //The offset from the Ask/Bid for price channel
extern int                 RBHPS = 2; //The offset from the Ask/Bid for pending orders
extern bool             ShowInfo = true; //Show/Hide information
extern bool        TrailingInBar = true; //Enable/disable trailing
extern bool          TrailingBar = true; //Enable/disable trailing on bars
extern bool      BreakEvenDeals  = true; //Enable/disable breakeven
extern bool          CloseOrders = true; //Close all market/pending orders on Friday
extern int            TimeFriday = 23; //Time on Friday to close market orders
extern bool   ClosePendingOrders = true; // To delete pending orders at active positions
extern int                 Magic = 12345; //The magic number
extern color               UpCol = clrLawnGreen; //Color the higer line of the price channel
extern color               DnCol = clrOrangeRed; //Color the lower line of the price channel
extern string                Com = " Kurochka Ryaba"; //Comment for market orders

bool                     Testing = (!IsDemo() && !IsTesting());
int                       Number = 123435;
int                    AccNumber;
int                       Indent;  
int                   PriceSteep;
int                  SteepModify;
int                   TimeModify;
int                TrailingStart;
int                 TrailingStep;
double             TakeProfitBar;
double                TakeProfit;
double                  StopLoss;
string                   Symboll = Symbol();
datetime                    time;
bool opnovis,testing=false,Signal[2];

int OnInit()
  {
      // код доступен только после оплаты
   }
void OnDeinit(const int reason)
  {
   if(IsTesting() || IsOptimization())return;
   EventKillTimer();
   Comment("");
   int ur=UninitializeReason();
   if(ur==1 || ur==6)DelBP(Com);
  }
void OnTick()
{
      // код доступен только после оплаты
   } 

int CountBuy()
{
   int count = 0;
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
         count ++;
      }
   }
   return (count);
}

int CountSell()
{
   int count = 0;
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         count ++;
      }
   }
   return (count);
 }

int MinStopLoss1()
{
   double ask        = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   double bid        = SymbolInfoDouble(Symbol(),SYMBOL_BID);
   double spread     = ask - bid;
   int spread_points = (int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
   return (spread_points);

}

int comis()
{  
   double prpoint = LotByRisk() * MarketInfo(Symbol(),MODE_TICKVALUE) / ( MarketInfo(Symbol(),MODE_TICKSIZE) / MarketInfo(Symbol(),MODE_POINT) );
   double Commissions = OrderCommission();
   int res = (int)MathRound(Commissions/prpoint);
   return(res);
}

int swap()
{
   double prpoint = LotByRisk() * MarketInfo(Symbol(),MODE_TICKVALUE) / ( MarketInfo(Symbol(),MODE_TICKSIZE) / MarketInfo(Symbol(),MODE_POINT) );
   double swaps = OrderSwap();
   int res = (int)MathRound(swaps/prpoint);
   return(res);
}

double OrdersBuyMinSL1()
{
   double stoploss = 0;

   double minstoplevel = MinStopLoss1();
   stoploss            = NormalizeDouble(Bid - minstoplevel*Point,Digits);

   return (stoploss);
}

double OrdersSellMinSL1()
{
   double stoploss = 0;

   double minstoplevel = MinStopLoss1();
   stoploss            = NormalizeDouble(Ask + minstoplevel*Point,Digits);

   return (stoploss);
} 

void Trailing()
{
   double ST_Buy, ST_Sell, NoLoss;

   for(int i=0; i<OrdersTotal(); i++)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
            if (OrderType() == OP_BUY)
            {   
               ST_Buy  = NormalizeDouble(GetLowestPrice() - Indent*Point, Digits); 
               NoLoss  = OrderOpenPrice();

                  if(NormalizeDouble(OrderStopLoss(),Digits) > NormalizeDouble(NoLoss,Digits) || NormalizeDouble(OrderStopLoss(),Digits) == NormalizeDouble(NoLoss,Digits))
                  {
                  if(NormalizeDouble(ST_Buy, Digits) != NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Buy, Digits) > NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Buy, Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits))
                  {
                     bool Ans = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Buy,Digits), NormalizeDouble(Ask + PriceSteep*Point + TakeProfitBar*Point, Digits), 0, clrNONE); 
                  }
                  }
            }   

           if (OrderType() == OP_SELL)
           {
               ST_Sell = NormalizeDouble(GetHighestPrice() + Indent * Point, Digits);
               NoLoss  = OrderOpenPrice();

                  if (NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(NoLoss,Digits) || NormalizeDouble(OrderStopLoss(),Digits) == NormalizeDouble(NoLoss,Digits))
                  { 
                  if (NormalizeDouble(ST_Sell, Digits) != NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Sell, Digits) <  NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Sell, Digits) >= NormalizeDouble(OrdersSellMinSL1(), Digits))
                  {                  
                     bool Ans = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Sell, Digits), NormalizeDouble(Bid - PriceSteep*Point - TakeProfitBar*Point, Digits), 0, clrNONE); 
                  }
                  }
              }
           }
       }
   }
}

double GetLowestPrice()
{
   double price, lowest = 1000000;

   for (int i = 1; i <= BarCount; i++)
   {
      price = iLow(Symbol(), TimeFrame, i);
      if (price < lowest)
         lowest = price;
   }
   return (lowest);
}

double GetHighestPrice()
{
   double price, highest = 0;

   for (int i = 1; i <= BarCount; i++)
   {
      price = iHigh(Symbol(), TimeFrame, i);
      if (price > highest)
         highest = price;
   }
   return (highest);
} 

 void MoveTrailingStop()
{
   int cnt,total=OrdersTotal();
   double NoLoss;
   for(cnt=0;cnt<total;cnt++)
   {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
      {
      NoLoss  = OrderOpenPrice();
      if(OrderMagicNumber() == Magic && OrderSymbol()== Symbol() && TrailingStart > 0)
      {
      if(TrailingBar == true)
      {
      if(OrderOpenTime() >= iTime(Symbol(), PERIOD_CURRENT, 0))
         {
            if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
            {
               if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits) && NormalizeDouble(Bid-Point*TrailingStep,Digits) > OrderStopLoss())
               {
                  if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
                  {
                     bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStep,Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,clrNONE);
                  }
               }
            }
            if(OrderType() == OP_SELL && OrderSymbol()== Symbol()) 
            {                 
               if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) >= NormalizeDouble(OrdersSellMinSL1(),Digits) && NormalizeDouble(Ask+Point*TrailingStep,Digits) < OrderStopLoss())
               {
                  if (NormalizeDouble(OrderStopLoss(),Digits) <= NormalizeDouble(NoLoss,Digits))
                  {
                     bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStep,Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,clrNONE);
                  }
               }
            }
         }
      if(OrderOpenTime() < iTime(Symbol(), PERIOD_CURRENT, 0))
         {
            if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
            {
               if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
                  {
                     bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss(),Digits),NormalizeDouble(Ask + PriceSteep*Point + TakeProfitBar*Point, Digits),0,clrNONE);
                  }
            }
            if(OrderType() == OP_SELL && OrderSymbol()== Symbol()) 
            {                 
               if (NormalizeDouble(OrderStopLoss(),Digits) <= NormalizeDouble(NoLoss,Digits))
                  {
                     bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss(),Digits),NormalizeDouble(Bid - PriceSteep*Point - TakeProfitBar*Point, Digits),0,clrNONE);
                  }
            } 
         }     
      }
      if(TrailingBar == false)
      {
      if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
            {
               if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits) && NormalizeDouble(Bid-Point*TrailingStep,Digits) > OrderStopLoss())
               {
                  if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
                  {
                     bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStep,Digits),OrderTakeProfit(),0,clrNONE);
                  }
               }
            }
            if(OrderType() == OP_SELL && OrderSymbol()== Symbol()) 
            {                 
               if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) && Norma

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

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

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

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

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

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

Стоимость полного кода
2 329,60₽ ≈ $28.47