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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.