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

SnowRoller_1_008

ikonikrobot.(ea).mq4

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

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

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

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

НастройкаОписание
version number (version) Версия — Текстовый идентификатор версии советника
LotSizeNormalized Нормализация лота — Текстовый разделитель для группы настроек лотности
lotsize Размер лота — Базовый размер лота для открытия сделок
TP in pips (xTP) Тейк-профит — Тейк-профит в пунктах для стандартной позиции
SL in pips (xSL) Стоп-лосс — Стоп-лосс в пунктах для стандартной позиции
amount of $$ in account balance to trade the lotsize entered (BalancePerlotsize) Баланс на лот — Сумма на балансе, приходящаяся на один лот для автоматического масштабирования
number of minutes to look back for trend pattern (TrendLookbackMins) Период анализа тренда 1 — Количество минут для определения первого трендового паттерна
number of minutes to look back for trend pattern2 (TrendLookbackMins2) Период анализа тренда 2 — Количество минут для определения второго трендового паттерна
used for "CloseAllLossPercent/CloseAllProfitPercent" (MagicNumber) Магический номер — Идентификатор ордеров для групповых операций закрытия
take opposite trades to the trend pattern? (doOpposite) Обратные сделки — Открывать сделки в противоположном направлении тренда
maximum lots that can be opened for this symbol (MaxTradesThis) Макс. сделок по символу — Максимальное количество открытых лотов по текущему символу
maximum losing trades in lots that can be opened for this symbol (MaxTradesThisLoss) Макс. убыточных сделок — Максимальное количество убыточных лотов, разрешённых по символу
comment to your broker when trade is initiated (comment) Комментарий — Комментарий, добавляемый к ордерам при открытии
ValsInPercent Процентные значения — Текстовый разделитель для группы настроек в процентах
basket closure - profit (CloseAllProfitPercent) Прибыль для закрытия всех — Процент прибыли от баланса для закрытия всех позиций
basket closure - loss (CloseAllLossPercent) Убыток для закрытия всех — Процент убытка от баланса для закрытия всех позиций
profit closure for this symbol only (CloseThisProfitPercent) Прибыль для закрытия символа — Процент прибыли для закрытия позиций по текущему символу
loss closure for this symbol only (CloseThisLossPercent) Убыток для закрытия символа — Процент убытка для закрытия позиций по текущему символу
ValueInPips Значения в пипсах — Текстовый разделитель для группы настроек в пипсах
set this to an appropriate level for your broker (Slippage) Допустимый проскальзывание — Максимальное допустимое проскальзывание в пунктах
Single position take profit in pips - only applies to half the positions! (takeprofit) Тейк-профит (пипсы) — Тейк-профит в пипсах для отдельных позиций
Single position stop loss in pips (stoploss) Стоп-лосс (пипсы) — Стоп-лосс в пипсах для отдельных позиций
10 pip step - should automatically adjust for 3/5 or 2/4 digit brokers (buysellstep) Шаг открытия — Минимальное ценовое отклонение для нового открытия в пипсах
number of pips to allow for accumulation against initial anchor (MaxNegExcursion) Макс. негативное отклонение — Допустимое отклонение цены от начальной точки в пипсах
max spread in pips to allow opening a new trade (MaxSpread) Макс. спред — Максимальный допустимый спред в пипсах для открытия сделки
TimeTrading Время торговли — Текстовый разделитель для группы настроек времени
useTime1Trading Использовать временное окно — Включает ограничение торговли по времени
Time1Start Время начала — Начало торгового окна в формате ЧЧММ
Time1Stop Время окончания — Окончание торгового окна в формате ЧЧММ
Получить полный код

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

#property strict

/*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see <

    If you need a commercial license, please send me an email:
    m*********a*@gmail.com
*/

extern string version = "---Snow Roller 1.008---"; // version number
extern string LotSizeNormalized = "----lotsize:----";
extern double lotsize =          0.01;         //
extern double xTP = 30; //TP in pips
extern double xSL = 30; //SL in pips

extern double BalancePerlotsize = 1000.0; // amount of $$ in account balance to trade the lotsize entered
extern int TrendLookbackMins = 5;       // number of minutes to look back for trend pattern
extern int TrendLookbackMins2 = 100;       // number of minutes to look back for trend pattern2
extern int MagicNumber =      0;         // used for "CloseAllLossPercent/CloseAllProfitPercent"
extern bool doOpposite =      false;     // take opposite trades to the trend pattern?

extern int MaxTradesThis =    20;        // maximum lots that can be opened for this symbol
extern int MaxTradesThisLoss = 4;    // maximum losing trades in lots that can be opened for this symbol
extern string comment =       "Snow Roller";  // comment to your broker when trade is initiated
extern string ValsInPercent=  "----Values below in percent----";

extern double CloseAllProfitPercent =   10.0;   // basket closure - profit
extern double  CloseAllLossPercent =    10.0;    // basket closure - loss
extern double CloseThisProfitPercent =  1.0;   // profit closure for this symbol only
extern double CloseThisLossPercent   =  2.0;    // loss closure for this symbol only
extern string ValueInPips=    "----Values below in pips----";
extern int Slippage =         7;       // set this to an appropriate level for your broker
extern int takeprofit =       30;      // Single position take profit in pips - only applies to half the positions!
extern int stoploss =         30;      // Single position stop loss in pips
extern int buysellstep =      5;       // 10 pip step - should automatically adjust for 3/5 or 2/4 digit brokers
extern int MaxNegExcursion =  0;      // number of pips to allow for accumulation against initial anchor
extern int MaxSpread =        10;      // max spread in pips to allow opening a new trade
extern string TimeTrading =   "----Trading Times HHMM format----";
extern bool useTime1Trading = false;
extern int Time1Start =       200;
extern int Time1Stop =        430;

int ThisBarTrade           =  0;
bool ClosingAll =             false;
bool ClosingThis =            false;

int OpenTrades =              0;
double HighestTrade =         0.0;
double LowestTrade =          0.0;
double AvgTrade =             0.0;
double lPrevPosition =        0; // 1 for above the stack of orders, -1 for below, 0 to reset.
int Position =                0;
double MaxEquity =            0.0;
double CurrentPnL =           0.0;
double dAnchor =              0.0;
double BeginningBalance =     0.0;
double MinLotSize       =     0.0;
int NormalizeLots =           1;
int Trend =                   0;
int LotMultiplier =           1; // Used for position sizing
int BarTrend =                0;
double BarAnchor =            0.0;
int BarTrendBar =             0;
int MN =                      0;
double initialAnchor =        0.0;
int ordernumber =             0;

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

int deinit()
  {

   return(0);
  }

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

bool ModifyOrder(int ticket) {
   if(ticket == -1) return(false);
   bool dotp = false;
   double sl = 0.0, tp = 0.0; 
   int repeats = 0;
   ordernumber +=1;
   if (MathMod(ordernumber,2) == 0) {

      dotp =true;
   }
   bool result = false;

      RefreshRates();
      while(!IsTradeAllowed()) Sleep(100);
      if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true) {
         Print("Order Selected " + IntegerToString(ticket));
         if(OrderType() == OP_BUY) {
            sl = NormalizeDouble(OrderOpenPrice() - stoploss * Point * NormalizeLots, Digits);
            if (takeprofit > 0 && dotp == true ) {
               tp = NormalizeDouble(takeprofit * Point * NormalizeLots + OrderOpenPrice(), Digits); 
            } else { 
               tp = 0.0;
            }
         }
         if(OrderType() == OP_SELL) {
            sl = NormalizeDouble(stoploss * Point * NormalizeLots + OrderOpenPrice(), Digits);
            if (takeprofit > 0 && dotp == true) {
               tp = NormalizeDouble(-takeprofit * Point * NormalizeLots + OrderOpenPrice(), Digits); 
            } else { 
               tp = 0.0;
            }
         }
         Print("minimum: " + DoubleToStr(MarketInfo(Symbol() , MODE_STOPLEVEL)) +   " Order Type: " + IntegerToString(OrderType()) + " Entry Price: " + DoubleToStr(OrderOpenPrice(),_Digits) +  " Moving SL to: " + DoubleToStr(sl,_Digits) + " and TP to " + DoubleToStr(tp,_Digits));

         result = OrderModify(ticket, NormalizeDouble(OrderOpenPrice(), Digits), sl, tp, OrderExpiration(), CLR_NONE);
         if (result == true) return (true);
      } else 
      repeats += 1;
      if (repeats > 5) {
         Print("Unable to select ticket # " + IntegerToString(ticket));
         return(false); // failure
      }

   return(true);
}

bool EvaluateTime() {
   if(useTime1Trading == false ) return(false);
   int t = TimeHour(TimeLocal()) * 100 + TimeMinute(TimeLocal());

   if(t < Time1Start && useTime1Trading == true) {
      return(true);
   }
   if(t >= Time1Stop && t >= Time1Stop) {

      if(OpenTrades > 0) CloseThis();
      return(true);
   }
   return(false); // allow trading   
}

void EvaluateStopAndTarget()
{
  if (takeprofit !=0 || stoploss != 0) 
  {
      int i =0;
      double tgt = 0.0;
      double stp = 0.0;
      double PN = Point * NormalizeLots;
      bool closed = false;
      for(i = 0; i < OrdersTotal(); i++) 
      {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
         {
         if(OrderMagicNumber() == MN && OrderSymbol() == Symbol()) 
         {
            if(OrderType() == OP_BUY) 
            {
               tgt = takeprofit * PN;
               stp = - stoploss * PN;
               if(Bid >= tgt + OrderOpenPrice() && tgt != 0 && MathMod(i, 2) == 0) {
                  closed = OrderClose( OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits),Slippage * NormalizeLots,White);
                  Print(Symbol(), " Closing single Target Buy order # ", i, " ", NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)));
            }
            if(Ask <= stp + OrderOpenPrice() && stp != 0) 
            {
                  closed = OrderClose( OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),Digits),Slippage * NormalizeLots,White);
            

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

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

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

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

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

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

Стоимость полного кода
1 324,50₽ ≈ $16.19