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