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

Join the dots

join the dots-v1.5.mq4
Вы автор или правообладатель?

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

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

О программе

Join the dots — торговый советник для MetaTrader 4, который генерирует торговые сигналы на основе трёх пользовательских индикаторов: Mega trend, Trend Histo и Swing_ZZ. Советник отслеживает направление каждого индикатора и формирует сигналы на покупку или продажу при совпадении их состояний, с возможностью дополнительной фильтрации через режим тройной индикаторной проверки.

Советник поддерживает задержку сделок (TradeDelay), чтобы дождаться следующей свечи и избежать перерисовки сигналов. Доступны фильтр по времени торговли, автоматический выбор тейк-профита в зависимости от торгового инструмента, управление размером лота на основе свободных средств на счёте и функция закрытия ордеров при появлении противоположного сигнала.

Для управления рисками предусмотрены стоп-лосс и тейк-профит с возможностью включения/отключения, параметр проскальзывания, а также комментарии к ордерам. Все сделки идентифицируются через магическое число, формируемое из идентификатора советника, кода символа и кода таймфрейма.

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

НастройкаОписание
ExpertID Идентификатор советника — Идентификатор советника, используемый для формирования уникального магического числа и идентификации управляемых ордеров.
TakeProfit Тейк-профит — Значение тейк-профита в пунктах, используемое по умолчанию или при автоматическом выборе.
autoChooseProfit Автоматический выбор тейк-профита — Переключатель автоматического выбора значения тейк-профита в зависимости от торгового инструмента.
StopLoss Стоп-лосс — Значение стоп-лосса в пунктах, задаваемое вручную если использование стоп-лосса включено.
LotSize Размер лота — Фиксированный размер лота для открытия сделки, если управление денежными средствами отключено.
useTakeProfit Использовать тейк-профит — Переключатель включения/отключения тейк-профита для открытых ордеров.
useStopLoss Использовать стоп-лосс — Переключатель включения/отключения стоп-лосса для открытых ордеров.
CloseOrdersOnNextDot Закрытие ордеров на следующем сигнале — При включении автоматически закрывает позиции при появлении противоположного сигнала от индикатора Swing_ZZ.
UseTripleIndicators Использовать тройные индикаторы — Переключатель фильтрации сигналов по трём индикаторам одновременно (Mega trend, Trend Histo, Swing_ZZ). При отключении используются только сигналы Swing_ZZ.
TradeDelay Задержка сделок — Переключатель задержки сделок: при включении советник ожидает следующую свечу и совершает сделку только если сигнал не перерисовался.
MoneyManagement Управление денежными средствами — Переключатель, включающий автоматический расчёт размера лота на основе свободных средств на счёте, процента риска и кредитного плеча.
PercentageToTrade Процент для торговли — Процент свободных средств, используемый для расчёта размера лота при включённом управлении денежными средствами.
Leverage Кредитное плечо — Кредитное плечо, используемое при расчёте размера лота в режиме управления денежными средствами.
useTimeFilter Использовать временной фильтр — Переключатель временного фильтра. При включении советник торгует только в заданном временном диапазоне.
startTradeTime Время начала торговли — Час начала временного фильтра торговли (в часах). Ордера не открываются до этого часа.
endTradeTime Время окончания торговли — Час окончания временного фильтра торговли (в часах). Ордера не открываются после этого часа.
Slippage Проскальзывание — Допустимое проскальзывание цены при выполнении ордеров.
BuyComment Комментарий покупки — Комментарий, добавляемый к ордерам на покупку.
SellComment Комментарий продажи — Комментарий, добавляемый к ордерам на продажу.
Получить полный код

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

#include <stdlib.mqh>
int MagicNumber = 0;
int ticket = 0;
double Price[2];
int    giSlippage;
extern int    ExpertID             = 994488;
extern int    TakeProfit           = 200;
extern bool   autoChooseProfit = true;
extern double StopLoss             = 50;
extern double LotSize              = 0.1;
extern bool   useTakeProfit        = true;
extern bool   useStopLoss          = true;
extern bool   CloseOrdersOnNextDot = true;
extern bool   UseTripleIndicators  = true;
extern bool   TradeDelay           = true;
extern bool   MoneyManagement      = false;
extern int    PercentageToTrade    = 80;
extern int    AccountType          = 3;
extern int    Leverage             = 100;

extern bool   useTimeFilter        = false;
extern int   startTradeTime       = 07;
extern int   endTradeTime         = 22;

extern int    Slippage             = 5;
color ExitLongColor = CLR_NONE;
color ExitShortColor = CLR_NONE;
extern string BuyComment           = "Join the Dots BUY";
extern string SellComment          = "Join the Dots SELL";

double PricePerPip;
double DecimalCorrection;
double DecimalPlaces;
double TP;
bool   BuySignal;
bool   SellSignal;

bool   CurrentBuyDot;
bool   CurrentSellDot;

bool   PreviousBuyDot;
bool   PreviousSellDot;

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

int deinit()
  {

   return(0);
  }

int start()
  {
      // код доступен только после оплаты
   }
   if (useTimeFilter) {
      if (Hour() <= startTradeTime || Hour() >= endTradeTime) {
         return(0);
      }
   }

   if (autoChooseProfit == true) {
      if (Symbol() == "EURUSD" || Symbol() == "EURUSDm" ||
      Symbol() == "GBPUSD" || Symbol() == "GBPUSDm" ||
      Symbol() == "USDCHF" || Symbol() == "USDCHFm") {
         TakeProfit = 50;
      } // end TakeProfit 50's

      else if (Symbol() == "GBPJPY" || Symbol() == "GBPJPYm") {
         TakeProfit = 200;
      } // end TakeProfit 200's

      else if (Symbol() == "USDJPY" || Symbol() == "USDJPYm" ||
      Symbol() == "USDCAD" || Symbol() == "USDCADm") {
         TakeProfit = 100; // end TakeProfit 100's
      }
      else {
            TakeProfit = 75;
      }
   }

   double SL = StopLoss*Point;//by Saidas

   if (AccountType==0)
   {
      PricePerPip       = 10;
      DecimalCorrection = 0.5;
      DecimalPlaces     = 0;
   }

   if (AccountType==1)
   { 
      PricePerPip       = 10;
      DecimalCorrection = 0.05;
      DecimalPlaces     = 1;
   }

   if (AccountType==2)
   {
      PricePerPip       = 10;
      DecimalCorrection = 0.005;
      DecimalPlaces     = 2;
   }

   if (AccountType==3)
   {
      PricePerPip       = 1;
      DecimalCorrection = 0.005;
      DecimalPlaces     = 2;
   }

   if (MoneyManagement)
   {
      LotSize=NormalizeDouble(((AccountFreeMargin()*PercentageToTrade*Leverage)/
         (Ask*PricePerPip*1000000))-DecimalCorrection,DecimalPlaces);
   }

   MagicNumber = MakeMagicNumber( ExpertID, false );
   double MegaTrend_up     = iCustom(NULL, 0, "Mega trend",144,3,0,0,0);
   double MegaTrend_down   = iCustom(NULL, 0, "Mega trend",144,3,0,1,0);
   double MegaTrend_buffer = iCustom(NULL, 0, "Mega trend",144,3,0,2,0);
   string megatrend_direction, trendhisto_direction, swingzz_direction;
   string price_is = "";
   if (Ask > MegaTrend_buffer) {
      price_is = "above_megatrend";
   }
   if (Bid < MegaTrend_buffer) {
      price_is = "bellow_megatrend";
   }
   Comment("MegaTrend_up: ",MegaTrend_up,"\nMegaTrend_down: ", MegaTrend_down, "\nMegaTrend_buffer: ",MegaTrend_buffer,"\nWhere is price: ",price_is);
   if (MegaTrend_buffer == MegaTrend_up) {

      megatrend_direction = "up";
   } else if (MegaTrend_buffer == MegaTrend_down) {

      megatrend_direction = "down";
   } else {

      megatrend_direction = "flat";
   }

   double TrendHisto_up     = iCustom(NULL, 0, "Trend Histo",1500,1,0);
   double TrendHisto_down   = iCustom(NULL, 0, "Trend Histo",1500,2,0);
   double TrendHisto_buffer = iCustom(NULL, 0, "Trend Histo",1500,0,0);

   if (TrendHisto_buffer == TrendHisto_up) {

      trendhisto_direction = "up";
   } else if (TrendHisto_buffer == TrendHisto_down) {

      trendhisto_direction = "down";
   } else {

      trendhisto_direction = "flat";
   }

   double swingzz_up     = iCustom(NULL, 0, "Swing_ZZ",2,1,0);
   double swingzz_down   = iCustom(NULL, 0, "Swing_ZZ",2,2,0);
   double swingzz_buffer = iCustom(NULL, 0, "Swing_ZZ",2,0,0);

   if (TradeDelay)
   {
      if (UseTripleIndicators)
      {
         if (swingzz_down != 0 && megatrend_direction == "up" && trendhisto_direction == "up")
         {
            CurrentBuyDot=true;
         }
         else
         {
            CurrentBuyDot=false;
         }

         if (swingzz_up != 0 && megatrend_direction == "down" && trendhisto_direction == "down")
         {
            CurrentSellDot = true;
         }
         else
         {
            CurrentSellDot = false;
         }

         if (PreviousSellDot==true && CurrentSellDot==false)
         {
            SellSignal = true;
         }
         else
         {
            SellSignal = false;
         }

         if (PreviousBuyDot==true && CurrentBuyDot==false)
         {
            BuySignal = true;
         }
         else
         {
            BuySignal = false;
         }

         PreviousSellDot=CurrentSellDot;
         PreviousBuyDot =CurrentBuyDot;
      }
      else
      {
         if (swingzz_down != 0)
         {
            CurrentBuyDot=true;
         }
         else
         {
            CurrentBuyDot=false;
         }

         if (swingzz_up != 0)
         {
            CurrentSellDot = true;
         }
         else
         {
            CurrentSellDot = false;
         }

         if (PreviousSellDot==true && CurrentSellDot==false)
         {
            SellSignal = true;
         }
         else
         {
            SellSignal = false;
         }

         if (PreviousBuyDot==true && CurrentBuyDot==false)
         {
            BuySignal = true;
         }
         else
         {
            BuySignal = false;
         }

         PreviousSellDot=CurrentSellDot;
         PreviousBuyDot =CurrentBuyDot;
      }
   }
   else
   {
      if (UseTripleIndicators)
      {
         if (swingzz_down != 0 && megatrend_direction == "up" && trendhisto_direction == "up")
         {
            BuySignal = true;
         }
         else
         {
           

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

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

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

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

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

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

Стоимость полного кода
858,70₽ ≈ $10.49