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

Ilan_VS_TrendTrading_LastTP_v1_2

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

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

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

О программе

Ilan_VS_TrendTrading_LastTP_v1_2 — торговый советник для MetaTrader 4, использующий перехват тренда с пирамидированием позиций. Советник открывает сделки при пересечении скользящей средней с заданным порогом дельты и дополнительном подтверждении индикатором CCI. Лоты нарастает по экспоненциальной схеме, а расстояние между входами регулируется через параметр PipStep.

Советник поддерживает два режима управления тейк-профитом: фиксированный для первого ордера и сериальный для последующих. При активации функции UseLastTradeTP последний ордер в серии получает отдельный тейк-профит, который корректируется при закрытии предыдущих позиций. Встроенный режим MM рассчитывает лот на основе процента риска от баланса.

Для фильтрации ордеров используется MagicNumber, максимальное количество открытых позиций ограничивается параметром MaxTrades. Режим debug позволяет выводить промежуточные вычисления в журнал для диагностики работы стратегии.

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

НастройкаОписание
??????????? ?????????? ???????? (PipStepExponent) Экспонента для расчёта расстояния между ордерами в пунктах. Определяет скорость нарастания шага пирамидирования: значение 1 означает постоянный шаг, большее значение — увеличивающийся.
?????????????? ???????? PipStep (DefaultPips) Базовое расстояние в пунктах между уровнями входа при пирамидировании. Умножается на степень PipStepExponent для расчёта шага для каждого последующего ордера.
???????????? ???????? PipStep (MaxPips) Максимально допустимое расстояние в пунктах между уровнями входа. Если рассчитанный PipStep превышает это значение, используется MaxPips.
?????? ???? ??? ?????? ?????? (Lots) Размер лота для первого ордера и базовый размер лота при расчёте экспоненциального наращивания позиции.
??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ?? (lotdecimal) Количество знаков после запятой для округления размера лота. 0 — целые лоты (1), 1 — десятые (0.1), 2 — сотые (0.01).
?? ?????????? ???????? ??????? ??????? ????????? ?????? (TakeProfitFirstOrder) Расстояние в пунктах до тейк-профита для первого ордера в серии.
?? ?????????? ???????? ??????? ??????? ????????? ????? (TakeProfitSeria) Расстояние в пунктах до тейк-профита для ордеров, открытых после первого, в серии.
???? ????? ?? (MA_TimeFrame) Таймфрейм для расчёта скользящей средней. Допустимые значения: 0 — текущий график, 1 — M1, 2 — M5, 3 — M15, 4 — M30, 5 — H1, 6 — H4, 7 — D1.
?????? ?? (MA_Period) Период расчёта скользящей средней, используемой для определения направления тренда и генерации торговых сигналов.
?? ??????? ?????? ?????????? ?? ?? ???????? ?????, ????? ?????? ???????? (MA_Delta) Минимальная разница в ценах между текущим и предыдущим значением скользящей средней, необходимая для генерации торгового сигнала.
??????? ?? ?????? CCI ?? ???????, ???? ??????? ????????, ?? ????? ?? ????? ??????????? (CCIlevel) Пороговое значение индикатора CCI для дополнительного подтверждения входа в сделку. Сигнал BUY требует, чтобы CCI был ниже этого уровня со знаком минус, а сигнал SELL — выше положительного значения.
????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????) (MagicNumber) Идентификационный номер, присваиваемый ордерам советника для их фильтрации и отличия от ордеров других советников и ручных сделок.
??????????? ?????????? ???????????? ???????? ??????? (MaxTrades) Максимальное количество одновременно открытых ордеров, управляемых советником. При достижении этого лимита новые входы блокируются.
???????????? ?? ????? ?????????? ??????????? ?? ?? ????????? ????? (UseLastTradeTP) Переключатель, активирующий отдельный тейк-профит для последнего ордера в серии. При достижении заданного количества ордеров последняя позиция получает свой уровень фиксации прибыли.
? ?????? ?????? ???????????? ??????????? ???????? ?? ?? ????????? ????? (LastTradeNumber) Номер ордера в серии, начиная с которого активируется функция UseLastTradeTP для установки отдельного тейк-профита на последней позиции.
MM Переключатель, активирующий режим управления денежным риском, при котором размер лота рассчитывается автоматически на основе процента риска и баланса.
?? 0.01 - ???. (risk) Процент риска от баланса, используемый при расчёте размера лота в режиме управления денежным риском. Значение 0.01 означает 0.01%.
?????? ????????????????, ?? ?????? 1000 ???? ????? ????????? ??? ?? ???? (balans) Базовый баланс для расчёта размера лота в режиме управления денежным риском. Используется в формуле расчёта лота на основе процента риска от баланса.
????????? ?????? ????? ??????? (ManualFirstOrder) Переключатель, при активации которого отключается автоматическое открытие первого ордера. Используется для ручного управления начальной позицией.
debug Переключатель режима отладки. При активации советник выводит подробную информацию о вычислениях и действиях в журнал торгового терминала.
Получить полный код

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

#include <stderror.mqh>
#include <stdlib.mqh>

double Stoploss = 500.0;            // ??????? ?????????
double TrailStart = 10.0;
double TrailStop = 10.0;

string w1 = "??? Exponent 0-??????????/1-??????????/2-?????????";
int    TypeLotExponent = 0;  //??? ??????????:

double LotExponent = 1.4;              // ?? ??????? ???????? ??? ??? ??????????? ?????????? ??????. ??????: ?????? ??? 0.1, ?????: 0.16, 0.26, 0.43 ...
extern double  PipStepExponent = 1;     //??????????? ?????????? ????????
extern int     DefaultPips     = 50;    //?????????????? ???????? PipStep
extern int     MaxPips         = 100;   //???????????? ???????? PipStep
double         slip            = 4.0;   // ?? ??????? ????? ?????????? ???? ? ?????? ???? ?? ???????? ??????? (? ????????? ?????? ??????? ???????? ????)
extern double  Lots            = 0.1;   // ?????? ???? ??? ?????? ??????
extern int     lotdecimal      = 2;     // ??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ????? (0.01)
extern int     TakeProfitFirstOrder      = 20.0;  // ?? ?????????? ???????? ??????? ??????? ????????? ??????
extern int     TakeProfitSeria      = 10.0;  // ?? ?????????? ???????? ??????? ??????? ????????? ?????
extern int     MA_TimeFrame    = 7;     // ???? ????? ??

extern int     MA_Period       = 6;     // ?????? ??
extern int     MA_Delta        = 3;     // ?? ??????? ?????? ?????????? ?? ?? ???????? ?????, ????? ?????? ????????
extern int     CCIlevel = 160;          // ??????? ?? ?????? CCI ?? ???????, ???? ??????? ????????, ?? ????? ?? ????? ???????????
extern int     MagicNumber = 2222;      // ????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????)
int PipStep=0;

extern int MaxTrades = 10;                 // ??????????? ?????????? ???????????? ???????? ???????
extern bool UseLastTradeTP = FALSE;     //???????????? ?? ????? ?????????? ??????????? ?? ?? ????????? ?????
extern int LastTradeNumber = 5;        //? ?????? ?????? ???????????? ??????????? ???????? ?? ?? ????????? ?????         

extern bool    MM             = false;
extern double  risk           = 1;    // ?? 0.01 - ???.
extern int     balans         = 1000; // ?????? ????????????????, ?? ?????? 1000 ???? ????? ????????? ??? ?? ????

extern bool ManualFirstOrder = false;      // ????????? ?????? ????? ???????
extern bool debug = false; 

double PriceTarget, TakeProfit;
double AveragePrice;
double LastBuyPrice, LastSellPrice, Spread, LastTP;
string EAName="Ilan_VS_TrendTrading_LastTP_v1_2";
int timeprev = 0;
int NumOfTrades = 0;
double iLots;
int cnt = 0, total, prev_total, i1, ma_tf;
bool LongTrade = FALSE, ShortTrade = FALSE;
int ticket, Error;
double Exponent, TP_Shift, LastTP_Lot, LastTP_Price_shift;
double Sum_series_lot;
string gvOrderTicket, gvPriseShift;

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

int deinit() 
{

if(IsTesting()) // ???? ???????? ? ???????, ??????? ?? ????????? ???????? ??
   {
   GlobalVariableDel(gvOrderTicket);
   GlobalVariableDel(gvPriseShift);
   }              

   return (0);
}

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

int CountOfOrders()
{
  int count = 0;
  for (int i = 0; i < OrdersTotal(); i++) 
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == MagicNumber)) 
        if ((OrderType() == OP_SELL) || (OrderType() == OP_BUY)) 
          count++;
  return(count);
}

int SendMarketOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& Error)
{
  double Price, Take, Stop;
  int Ticket, Slippage, Color, Err; 
  bool Delay = False;
  if (debug) Print("??????? SendMarketOrder");
  while(!IsStopped())
  {
    if(!IsExpertEnabled())
    {
      Error = ERR_TRADE_DISABLED;
      Print("???????? ????????? ?????????! ?????? \"????????\" ??????.");
      return(-1);
    }
    if (debug) Print("???????? ????????? ?????????");
    if(!IsConnected())
    {
      Error = ERR_NO_CONNECTION;
      Print("????? ???????????!");
      return(-1);
    }
    Print("????? ? ???????? ???????????");
    if(IsTradeContextBusy())
    {
      Print("???????? ????? ?????!");
      Print("??????? 3 ???...");
      Sleep(3000);
      Delay = True;
      continue;
    }
    if (debug) Print("???????? ????? ????????");
    if(

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

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

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

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

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

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

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