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

Fracture

fracture-7.4.0.mq4

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

one shoot ai v4.mq5MQL5 / MetaTrader 5 · 1 общих теговindicatorgoldy.pineTradingView · 1 общих теговeatelemetry.mqhMQL4 / MetaTrader 4 · 1 общих теговdrawdownmeter.mq4MQL4 / MetaTrader 4 · 1 общих теговaccountequityanalyzer@lifeindreamsworld.mq4MQL4 / MetaTrader 4 · 1 общих теговaccountequityanalyzer v1.1.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Fracture — это советник для MetaTrader 4, написанный на MQL4, который автоматизирует принятие торговых решений на основе комбинации индикаторов ATR, ADX, скользящих средних (SMMA) и фракталов. Советник адаптирует размер позиции в зависимости от текущего состояния рынка и параметров счёта, а также отображает ключевые торговые данные на графике через механизм Comment.

Программа различает два режима работы: торговля в боковом рынке (при низком значении ADX) и открытие коротких позиций при более сильном тренде (при высоком ADX). Управление открытыми позициями осуществляется автоматически с проверкой прибыли и убытков по закрытым и текущим ордерам.

В качестве входных параметров доступны настройки лота, риска, количества максимальных сделок, уровней индикаторов и таймфреймов. Советник использует торговый API MetaTrader 4 для открытия и закрытия позиций.

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

НастройкаОписание
TOOLS Инструменты — разделитель — Текстовый разделитель общих параметров.
CloseAll Закрыть все — Переключатель принудительного закрытия всех открытых позиций.
ContinueTrading Продолжать торговлю — Переключатель продолжения торговли при наличии открытых позиций.
RISK Риск — разделитель — Текстовый разделитель параметров риска.
BaseLotSize Базовый лот — Базовый размер лота для расчёта торгового объёма.
RangeUsage Использование при боковом рынке — Доля свободного маржа, используемая для расчёта лота в боковом рынке.
TrendUsage Использование при трендовом рынке — Доля свободного маржа, используемая для расчёта лота в трендовом рынке.
TRADING Торговля — разделитель — Текстовый разделитель параметров торговли.
MaxTrades Макс. сделок — Максимальное количество одновременно открытых позиций.
MaxScalping Макс. скальпинг — Максимальное количество одновременно открытых скальпинг-позиций.
Aggressive Агрессивность — Коэффициент, влияющий на расчёт расстояния до ближайших позиций в трендовом режиме.
TradeSpace Расстояние до позиций — Множитель ATR, определяющий допустимое расстояние до ближайших позиций.
DynamicSlippage Динамическое проскальзывание — Коэффициент проскальзывания, зависящий от значения ATR.
PROFITS Прибыль — разделитель — Текстовый разделитель параметров прибыли и управления позициями.
QueryHistory Запрос истории — Количество исторических ордеров, анализируемых при расчёте итогов торговли.
BasketProfit Прибыль корзины — Множитель прибыли, используемый при условии закрытия группы позиций по итогам истории.
OpenProfit Прибыль открытия — Множитель убытков, используемый как условие для закрытия позиций по текущим ордерам.
MinProfit Мин. прибыль — Минимальный множитель ATR для прибыли при закрытии скальпинг-позиций.
TRENDING Тренд — разделитель — Текстовый разделитель параметров трендового рынка.
CrossBars Бары пересечения — Количество баров, анализируемых при формировании сигналов пересечения скользящих средних.
RangingMarket Боковой рынок — Пороговое значение ATR для определения бокового рынка.
TurboStart Турбо-старт — Параметр, влияющий на условия начала активной торговли.
INDICATOR_ATR ATR — разделитель — Текстовый разделитель параметров индикатора ATR.
ATRTimeFrame Таймфрейм ATR — Таймфрейм для расчёта индикатора ATR.
ATRPeriod Период ATR — Период расчёта индикатора ATR.
ATRShift Сдвиг ATR — Сдвиг индикатора ATR по горизонтали.
INDICATOR_MA СМА — разделитель — Текстовый разделитель параметров скользящих средних.
MATimeFrame Таймфрейм СМА — Таймфрейм для расчёта скользящих средних.
MA1Period Период СМА 1 — Период первой скользящей средней (SMMA).
MA2Period Период СМА 2 — Период второй скользящей средней (SMMA).
MA3Period Период СМА 3 — Период третьей скользящей средней (SMMA).
MMAShift Сдвиг SMMA — Сдвиг для расчёта сглаженной скользящей средней (SMMA).
MAShift Сдвиг СМА — Сдвиг скользящих средних по горизонтали.
INDICATOR_ADX ADX — разделитель — Текстовый разделитель параметров индикатора ADX.
ADXLine1 Линия ADX 1 — Пороговое значение ADX для определения режима торговли (боковой рынок или тренд).
ADXLine2 Линия ADX 2 — Второе пороговое значение ADX, используемое при формировании сигналов пересечения скользящих.
ADXTimeFrame Таймфрейм ADX — Таймфрейм для расчёта индикатора ADX.
ADXPeriod Период ADX — Период расчёта индикатора ADX.
ADXShift Сдвиг ADX — Сдвиг индикатора ADX по горизонтали.
INDICATOR_FRACTAL Фрактал — разделитель — Текстовый разделитель параметров индикатора фракталов.
FractalTimeFrame Таймфрейм фрактала — Таймфрейм для расчёта индикатора фракталов.
FractalShift Сдвиг фрактала — Сдвиг индикатора фракталов по горизонтали.
FractalBars Бары фрактала — Количество баров, анализируемых при поиске фракталов.
Получить полный код

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

#define MAGIC 20130706
extern string TOOLS = ".............................................................................................................";
extern bool CloseAll = false;
extern bool ContinueTrading = true;
extern string RISK = ".............................................................................................................";
extern double BaseLotSize = 0.01;
extern double RangeUsage = 0.05;
extern double TrendUsage = 0.1;
extern string TRADING = ".............................................................................................................";
extern int MaxTrades = 9;
extern int MaxScalping = 5; 
extern double Aggressive = 10; 
extern double TradeSpace = 2;
extern double DynamicSlippage = 0.5;
extern string PROFITS = ".............................................................................................................";
extern int QueryHistory = 22; 
extern double BasketProfit = 3;
extern double OpenProfit = 0.85;
extern double MinProfit = 1; 
extern string TRENDING = ".............................................................................................................";
extern double CrossBars = 30;
extern double RangingMarket = 0.7;
extern double TurboStart = 0.4; 
extern string INDICATOR_ATR = ".............................................................................................................";
extern int ATRTimeFrame = 0;
extern int ATRPeriod = 14;
extern int ATRShift = 0;
extern string INDICATOR_MA = ".............................................................................................................";
extern int MATimeFrame = 0;
extern int MA1Period = 5;
extern int MA2Period = 9;
extern int MA3Period = 18;
extern int MMAShift = 0;
extern int MAShift = 0;
extern string INDICATOR_ADX = ".............................................................................................................";
extern double ADXLine1 = 45;
extern double ADXLine2 = 55;
extern int ADXTimeFrame = 0;
extern int ADXPeriod = 14;
extern int ADXShift = 0;
extern string INDICATOR_FRACTAL = ".............................................................................................................";
extern int FractalTimeFrame = 0;
extern int FractalShift = 1;
extern int FractalBars = 5;

double slippage, marginRequirement, lotSize, lastProfit, totalHistoryProfit, totalProfit, totalLoss, symbolHistory, 
eATR, eATRPrev, eADX, MA1Cur, MA2Cur, MA3Cur, MA1Prev, MA2Prev, MA3Prev ;

int digits, totalTrades, totalScalping;

int totalHistory = 100;
double pipPoints = 0.00010;
double fractalUpPrice = 0 ;
double fractalDownPrice = 0;  
double trendStrength = 0;
double drawdown = 0; 
bool nearLongPosition = false;
bool nearShortPosition = false;
bool longTrendUp = false;
bool longTrendDown = false;
bool shortTrendUp = false;
bool shortTrendDown = false;
bool rangingMarket = false; 
bool shortBullishCross1 = false;
bool shortBullishCross2 = false; 
bool shortBearishCross1 = false;
bool shortBearishCross2 = false; 

int totalHistoryScalpingBuys = 0;
int totalHistoryScalpingSells = 0;

int totalOpenScalpingBuys = 0;
int totalOpenScalpingSells = 0;

string display = "\n"; 

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

double marginCalculate( string symbol, double volume ){ 
   return ( MarketInfo( symbol, MODE_MARGINREQUIRED ) * volume ) ; 
} 

void lotSize(){ 
   slippage = NormalizeDouble( ( eATR / pipPoints ) * DynamicSlippage, 1 );
   marginRequirement = marginCalculate( Symbol(), BaseLotSize ); 
   trendStrength = MathAbs( MA1Cur - MA3Cur ) / MathAbs( MA2Cur - MA3Cur );
   drawdown = 1 - AccountEquity() / AccountBalance();
   if( rangingMarket ) lotSize = NormalizeDouble( ( AccountFreeMargin() * RangeUsage / marginRequirement ) * BaseLotSize , 2 ) ;
   else lotSize = NormalizeDouble( ( AccountFreeMargin() * TrendUsage / marginRequirement ) * BaseLotSize, 2 ) ; 
   if( lotSize < 0.01 ) lotSize = 0.01; 
} 

void setPipPoint(){
   digits = MarketInfo( Symbol(), MODE_DIGITS );
   if( digits == 3 ) pipPoints = 0.010;
   else if( digits == 5 ) pipPoints = 0.00010;
} 

void closeAll( string type = "none" ){
   for( int i = 0; i < OrdersTotal(); i++ ) {
   if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
      if( OrderSymbol() == Symbol() ){ 
         RefreshRates();
         if( ( OrderStopLoss() == 0 && OrderProfit() > 0 && type == "profits" ) || type == "none" ){
            if( OrderType() == OP_BUY ) OrderClose( OrderTicket(), OrderLots(), Bid, slippage );
            if( OrderType() == OP_SELL ) OrderClose( OrderTicket(), OrderLots(), Ask, slippage );
         }
      }
   }
}

void prepareFractals(){
   fractalUpPrice = 0;
   fractalDownPrice = 0;
   for( int i = 0; i < FractalBars; i++ ){ 
      double ifractalUp = iFractals( NULL, 0, MODE_UPPER, i );
      double ifractalDown = iFractals( NULL, 0, MODE_LOWER, i );
      if( ifractalUp > 0 && Open[i] > Open[0] ){
         if( Open[i] > Close[i] ) fractalUpPrice = Open[i];
         else fractalUpPrice = Close[i]; 
      } else if( ifractalDown > 0 && Open[i] < Open[0] ){
         if( Open[i] < Close[i] ) fractalDownPrice = Open[i];
         else fractalDownPrice = Close[i];
      }
   }
} 

void prepareHistory(){
   symbolHistory = 0;
   totalHistoryProfit = 0; 
   totalScalping = 0;
   totalHistoryScalpingBuys = 0;
   totalHistoryScalpingSells = 0;
   for( int iPos = OrdersHistoryTotal() - 1 ; iPos > ( OrdersHistoryTotal() - 1 ) - totalHistory; iPos-- ){
      OrderSelect( iPos, SELECT_BY_POS, MODE_HISTORY ) ;
      double QueryHistoryDouble = ( double ) QueryHistory;
      if( symbolHistory >= QueryHistoryDouble ) break;
      if( OrderSymbol() == Symbol() ){ 
         if( OrderComment() == "scalp" ) {
            totalScalping = totalScalping + 1;
            if( OrderType() == OP_BUY ) totalHistoryScalpingBuys = totalHistoryScalpingBuys + 1;
            if( OrderType() == OP_SELL ) totalHistoryScalpingSells = totalHistoryScalpingSells + 1;
         }
         totalHistoryProfit = totalHistoryProfit + OrderProfit() ;
         symbolHistory = symbolHistory + 1 ;
      }
   }
}

void preparePositions() {
   nearLongPosition = false;
   nearShortPosition = false;
   totalTrades = 0;
   totalProfit = 0;
   totalLoss = 0; 
   totalOpenScalpingBuys = 0;
   totalOpenScalpingSells = 0;
   for( int i = 0 ; i < OrdersTotal() ; i++ ) {
      if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break; 
      if( OrderSymbol() == Symbol() ) { 
         if( rangingMarket && eADX < ADXLine1 ){
            if( OrderType() == OP_BUY && MathAbs( OrderOpenPrice() - Ask ) < eATR * TradeSpace ) nearLongPosition = true ;
            if( OrderType() == OP_SELL && MathAbs( OrderOpenPrice() - Bid ) < eATR * TradeSpace ) nearShortPosition = true ;
         } else {
            if( OrderType() == OP_BUY && MathAbs( OrderOpenPrice() - Ask ) < eATR * TradeSpace / Aggressive ) nearLongPosition = true ;
            if( OrderType() == OP_SELL && MathAbs( OrderOpenPrice() - Bid ) < eATR * TradeSpace / Aggressive ) nearShortPosition = true ;
         } 
         if( OrderComment() == "default" ) totalTrades = totalTrades + 1;
         else if( OrderComment() == "scalp" ) {
      

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

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

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

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

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

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

Стоимость полного кода
1 135,80₽ ≈ $13.88