DragonPips Ultimate v2.02
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dragon pips v2.02 rev.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
DragonPips Ultimate v2.02 — торговый советник для платформы MetaTrader 4, работающий на таймфрейме M15. Советник анализирует рынок с помощью набора технических индикаторов, включая фракталы, RSI, CCI, Momentum, WPR, Force, скользящие средние и полосы Боллинджера. Реализованы четыре стратегии входа в рынок с различными комбинациями индикаторов и условиями открытия позиций.
Советник поддерживает три режима управления размером позиции — по свободному маржиналу, equity и балансу, а также ручной режим с фиксированным размером лота. Встроена система временных уровней защиты, позволяющая закрывать прибыльные позиции по времени и прибыли, фильтр диапазона цены для избежания торговли в периоды высокой волатильности, а также функция остановки торговли при достижении целевого баланса.
Дополнительно реализовано управление торговой сессией по времени GMT, ограничение максимального количества сделок и допустимого спреда, поддержка работы с ECN/STP-брокерами, а также система уведомлений через алерты и звуковые файлы. Советник корректно обрабатывает ручное и автоматическое определение GMT-смещения, включая режим бэктестирования.
Настройки программы
| Настройка | Описание |
|---|---|
| SetYourBalanceTargetBelow | Описание цели по балансу — Текстовая строка-заголовок, описывающая условие остановки торговли при достижении целевого баланса. |
| BalanceTarget | Целевой баланс — Значение баланса, при достижении которого советник прекращает открытие новых сделок и закрывает существующие позиции. |
| za | Разделитель группы времени — Текстовый разделитель, обозначающий начало группы настроек торгового времени. |
| TradingTime | Описание торгового времени — Текстовая строка с описанием времени торговли по умолчанию. |
| 19:00 GMT (OpenHour) | Час открытия сессии — Время начала торговой сессии в формате ЧЧ:ММ по GMT. |
| 23:00 GMT (CloseHour) | Час закрытия сессии — Время окончания торговой сессии в формате ЧЧ:ММ по GMT. |
| xa | Разделитель группы управления средствами — Текстовый разделитель, обозначающий начало группы настроек управления денежными средствами. |
| lotsInfo | Информация о лотах — Текстовая строка с подсказкой о минимальном размере лота при низком балансе. |
| Change to false to shutdown money management controls. (MoneyManagement) | Управление размером позиции — Включает или отключает автоматический расчёт размера лота в зависимости от средств на счёте. |
| mmm | Описание режимов управления — Текстовая строка с перечислением доступных режимов расчёта размера позиции. |
| MM_Mode | Режим расчёта лота — Режим расчёта размера позиции: 1 — по свободному маржиналу, 2 — по equity, 3 — по балансу. |
| Change to whatever percent of equity you wish to risk. (TradeSizePercent) | Процент риска — Процент средств счёта, используемых для расчёта размера позиции в каждом из режимов управления. |
| standard lot size. (Lots) | Базовый размер лота — Фиксированный размер позиции в лотах при отключённом управлении или как базовое значение. |
| MaxLots | Максимальный размер лота — Максимально допустимый размер позиции в лотах. |
| zb | Разделитель — Текстовый разделитель между группами настроек. |
| Aggressive | Агрессивный режим — Включает увеличение размера позиции при открытии сделки в определённых стратегиях. |
| xb | Разделитель группы управления сделками — Текстовый разделитель, обозначающий начало группы настроек управления сделками. |
| MaxTrades | Максимум сделок — Максимальное количество одновременно открытых сделок на одном символе. |
| MaxTrades_x_Bar | Максимум сделок за бар — Максимальное количество сделок, которые могут быть открыты за один тиковый бар. |
| xc | Разделитель — Текстовый разделитель между группами настроек. |
| BrokerSpread | Описание ограничения спреда — Текстовая строка с подсказкой о максимально допустимом спреде. |
| Spread | Максимальный спред — Максимально допустимый спред в пунктах для открытия сделки. |
| TakeProfit | Тейк-профит — Уровень фиксации прибыли в пунктах для стандартного закрытия сделки. |
| StopLoss | Стоп-лосс — Уровень стоп-лосса в пунктах для стандартной защиты позиции. |
| x0 | Разделитель — Текстовый разделитель между группами настроек. |
| ECN_STP | Режим ECN/STP — Включает обновление цен перед закрытием ордеров при работе с ECN/STP-брокерами. |
| x1 | Разделитель — Текстовый разделитель между группами настроек. |
| Use_TimeProtectionLevels | Уровни временной защиты — Включает систему поэтапного закрытия позиций по времени и прибыли. |
| MinutesToClose_Level_1 | Время для уровня 1 — Минимальное время удержания позиции перед проверкой условия закрытия на первом уровне защиты. |
| PipsToClose_Level_1 | Прибыль для уровня 1 — Минимальная прибыль в пунктах для закрытия позиции на первом уровне защиты. |
| MinutesToClose_Level_2 | Время для уровня 2 — Минимальное время удержания позиции перед проверкой условия закрытия на втором уровне защиты. |
| PipsToClose_Level_2 | Прибыль для уровня 2 — Минимальная прибыль в пунктах для закрытия позиции на втором уровне защиты. |
| MinutesToClose_Level_3 | Время для уровня 3 — Минимальное время удержания позиции перед проверкой условия закрытия на третьем уровне защиты. |
| PipsToClose_Level_3 | Прибыль для уровня 3 — Минимальная прибыль в пунктах для закрытия позиции на третьем уровне защиты. |
| MinutesToClose_Level_4 | Время для уровня 4 — Минимальное время удержания позиции перед проверкой условия закрытия на четвёртом уровне защиты. |
| PipsToClose_Level_4 | Прибыль для уровня 4 — Минимальная прибыль в пунктах для закрытия позиции на четвёртом уровне защиты. |
| MinutesToClose_Level_5 | Время для уровня 5 — Минимальное время удержания позиции перед проверкой условия закрытия на пятом уровне защиты. |
| PipsToClose_Level_5 | Прибыль для уровня 5 — Минимальная прибыль в пунктах для закрытия позиции на пятом уровне защиты. |
| s1 | Разделитель — Текстовый разделитель между группами настроек. |
| Use_RangeFilter | Фильтр диапазона — Включает фильтр, блокирующий открытие сделок при превышении диапазона цены за указанное количество баров. |
| Range_PreviousBars | Баров для диапазона — Количество баров, используемых для расчёта текущего диапазона цены. |
| Max_Range | Максимальный диапазон — Максимально допустимый диапазон цены в пунктах для разрешения открытия сделок. |
| s2 | Разделитель — Текстовый разделитель между группами настроек. |
| Use_Close_AllTrades | Закрытие всех сделок — Включает автоматическое закрытие всех открытых позиций в указанное время. |
| Close_AllTrades_At | Время закрытия всех сделок — Время в формате ЧЧ:ММ по GMT, в которое все открытые сделки будут закрыты автоматически. |
| s3 | Разделитель — Текстовый разделитель между группами настроек. |
| Use_Strategy1 | Стратегия 1 — Включает первую стратегию входа в рынок на основе RSI и скользящей средней. |
| Use_Strategy2 | Стратегия 2 — Включает вторую стратегию входа в рынок на основе CCI и фракталов. |
| Use_Strategy3 | Стратегия 3 — Включает третью стратегию входа в рынок на основе Momentum, CCI и фракталов. |
| Use_Strategy4 | Стратегия 4 — Включает четвёртую стратегию входа в рынок на основе WPR, MA и полос Боллинджера. |
| x2 | Заголовок расширенных настроек — Текстовый заголовок группы расширенных настроек советника. |
| ATR_Threshold | Порог ATR — Пороговое значение ATR для фильтрации сделок по волатильности. |
| Slippage | Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров в пунктах. |
| x3 | Разделитель — Текстовый разделитель между группами настроек. |
| MagicNumber | Магический номер — Базовый магический номер, используемый для идентификации ордеров советника. |
| x4 | Разделитель — Текстовый разделитель между группами настроек. |
| ExpertInfo | Информация об эксперте — Текстовая строка с описанием настройки идентификации советника. |
| ExpertName | Имя эксперта — Имя советника, используемое в комментариях к ордерам и для их идентификации. |
| x90 | Заголовок уведомлений — Текстовый заголовок группы настроек уведомлений. |
| MessageAlert | Алерт-уведомления — Включает вывод окон с алертами при открытии и закрытии сделок. |
| SoundAlert | Звуковые уведомления — Включает воспроизведение звуковых файлов при открытии и закрытии сделок. |
| SoundFileAtOpen | Звук при открытии — Имя звукового файла для воспроизведения при открытии сделки. |
| SoundFileAtClose | Звук при закрытии — Имя звукового файла для воспроизведения при закрытии сделки. |
| x91 | Заголовок GMT-смещения — Текстовый заголовок группы настроек ручного GMT-смещения. |
| Use_Manual_GMTOffset | Ручное GMT-смещение — Включает использование вручную заданного значения GMT-смещения вместо автоматического определения. |
| Manual_GMTOffset | Ручное GMT-смещение — Ручное значение смещения GMT в часах, используемое при включённом ручном режиме. |
| x92 | Заголовок бэктестов — Текстовый заголовок группы настроек, используемых при бэктестировании. |
| GMTOffset_for_Backtests | GMT для бэктестов — Значение GMT-смещения, применяемое при проведении тестирования на исторических данных. |
Поиск по коду файла
#include <stdlib.mqh>
#import "kernel32.dll"
void GetLocalTime(int& TimeArray[]);
int GetTimeZoneInformation(int& TZInfoArray[]);
#import
extern string SetYourBalanceTargetBelow = "- Stop if balance target equal or bigger than --";
extern double BalanceTarget = 10000000.0;
extern string za="-- Trading Time (GMT) --------------------------------------------";
extern string TradingTime = "19:00-23:00 GMT is default";
extern string OpenHour = "19:00"; // 19:00 GMT
extern string CloseHour = "23:00"; // 23:00 GMT
extern string xa="-- Money Management ----------------------------------------------";
extern string lotsInfo = "-- balance under $1000 start with 0.01 Lots";
extern bool MoneyManagement = false; // Change to false to shutdown money management controls.
extern string mmm="Mode: 1-FreeMargin 2-Equity 3-Balance";
extern int MM_Mode = 1;
extern double TradeSizePercent = 5; // Change to whatever percent of equity you wish to risk.
extern double Lots = 0.1; // standard lot size.
extern double MaxLots = 10;
extern string zb="----------------------------------------------";
extern bool Aggressive = true;
extern string xb="-- Trade Management ----------------------------------------------";
extern int MaxTrades = 3;
extern int MaxTrades_x_Bar = 1;
extern string xc = "---------------------------";
extern string BrokerSpread = "-- Set spread not over than 4 --";
extern double Spread = 4.0;
extern double TakeProfit = 5.0;
extern double StopLoss = 25.0;
extern string x0 = "---------------------------";
extern bool ECN_STP = true;
extern string x1 = "---------------------------";
extern bool Use_TimeProtectionLevels = true;
extern int MinutesToClose_Level_1 = 60;
extern double PipsToClose_Level_1 = 3.0;
extern int MinutesToClose_Level_2 = 140;
extern double PipsToClose_Level_2 = 2.0;
extern int MinutesToClose_Level_3 = 170;
extern double PipsToClose_Level_3 = 1.0;
extern int MinutesToClose_Level_4 = 200;
extern double PipsToClose_Level_4 = -1.0;
extern int MinutesToClose_Level_5 = 240;
extern double PipsToClose_Level_5 = -4.0;
extern string s1 = "---------------------------";
extern bool Use_RangeFilter = true;
extern int Range_PreviousBars = 8;
extern double Max_Range = 45.0;
extern string s2 = "---------------------------";
extern bool Use_Close_AllTrades = false;
extern string Close_AllTrades_At = "23:30";
extern string s3 = "---------------------------";
extern bool Use_Strategy1 = true;
extern bool Use_Strategy2 = true;
extern bool Use_Strategy3 = true;
extern bool Use_Strategy4 = true;
extern string x2 = "-- Extreme Edition -------------------------";
extern int ATR_Threshold = 20;
extern int Slippage = 1;
extern string x3 = "---------------------------";
extern int MagicNumber = 0;
extern string x4 = "---------------------------";
extern string ExpertInfo = "-- Change EA name to hide EA identity -----------------";
extern string ExpertName = "DragonPips Ultimate v2.02";
extern string x90="-- Alerts control ----------------------------------------------";
extern bool MessageAlert = false;
extern bool SoundAlert = false;
extern string SoundFileAtOpen = "alert.wav";
extern string SoundFileAtClose = "news.wav";
extern string x91="-- Manual GMT Offset -------------------------------------------";
extern bool Use_Manual_GMTOffset = false;
extern int Manual_GMTOffset = 0;
extern string x92="-- Backtests use only ------------------------------------------";
extern int GMTOffset_for_Backtests=0;
bool gi_76;
bool gi_80;
bool gi_84;
bool gi_88;
bool gi_196 = TRUE;
bool gi_200 = TRUE;
double gd_164 = 0.0001;
int g_slippage_220;
int gi_224 = 32;
int gi_232 = 3;
int g_magic_240 = 371443;
int g_magic_244 = 3714431;
int g_magic_248 = 3714432;
int g_magic_252 = 3714433;
int gi_256;
double gi_260;
int gi_264;
double gi_268;
int gi_272;
double gi_276;
int gi_280;
double gi_284;
int gi_288;
double gi_292;
bool gi_296 = TRUE;
double gd_300 = 0.001;
double gd_308 = 0.001;
double gd_316 = 0.0012;
int gi_324 = 55;
bool gi_328 = TRUE;
bool gi_332 = TRUE;
bool gi_336 = TRUE;
bool gi_340 = TRUE;
bool gi_344 = TRUE;
bool gi_348 = TRUE;
bool gi_352 = TRUE;
bool gi_356 = TRUE;
double g_minlot_360 = 0.0;
double g_maxlot_368 = 0.0;
int g_lotsize_376 = 0;
int g_leverage_380 = 0;
double g_lots_384;
double g_lots_392;
int g_pos_400;
int gi_404 = 0;
int g_count_408 = 0;
int g_count_412 = 0;
int g_count_416 = 0;
int g_count_420 = 0;
int g_count_424 = 0;
int gi_428 = 0;
int gi_432 = 0;
int gi_436 = 0;
int gi_440 = 0;
int gi_444 = 0;
int gi_448 = 0;
int gi_452 = 0;
int gi_456 = 0;
int gi_460 = 0;
int gi_464 = 0;
double g_ord_open_price_468 = 0.0;
double g_ord_open_price_476 = 0.0;
double g_ord_open_price_484 = 0.0;
double g_ord_open_price_492 = 0.0;
double g_ord_open_price_500 = 0.0;
double g_ord_open_price_508 = 0.0;
double g_ord_open_price_516 = 0.0;
double g_ord_open_price_524 = 0.0;
double g_ord_open_price_532 = 0.0;
double g_ord_open_price_540 = 0.0;
double g_price_564 = 0.0;
double g_price_572 = 0.0;
double g_ifractals_580;
double g_ifractals_588;
double g_ifractals_612;
double g_ifractals_620;
int gi_644 = 0;
double gd_652 = 0.0;
int gi_660 = 0;
bool HighRange=false;
double Rx;
string msg1;
int err;
string ddx[] = {".", "..", "...", "....", "....."};
int gmt_shift=0;
int GMTOffset;
datetime GMT;
int time;
int BarCount;
int TradesITB = 0;
int DigitsLots = 1;
double iMinLot;
int TimeH;
int OpenH;
int CloseH;
bool TimeOK;
int minX;
int init() {
// код доступен только после оплаты
}
int deinit() {
ObjectDelete("Session");
return (0);
}
int start() {
// код доступен только после оплаты
}
if (StringFind(OpenHour, ":",2)==-1 || StringLen(OpenHour)!=5) return(0);
if (StringFind(CloseHour, ":",2)==-1 || StringLen(CloseHour)!=5) return(0);
if (StringFind(Close_AllTrades_At, ":",2)==-1 || StringLen(Close_AllTrades_At)!=5) return(0);
if (!IsDllsAllowed()) return (0);
if (GMTOffset <= -8 || GMTOffset >= 8)
{
Atenea();
return (0);
}
if (Use_Manual_GMTOffset==true) GMTOffset = Manual_GMTOffset;
GMT = TimeCurrent() - (GMTOffset * 3600);
time = GMT;
g_price_564 = TakeProfit;
g_price_572 = 0;
int l_cmd_0;
g_count_408 = 0;
g_count_412 = 0;
g_count_416 = 0;
g_count_420 = 0;
g_count_424 = 0;
gi_428 = 0.0;
gi_432 = 0.0;
gi_436 = 0.0;
gi_440 = 0.0;
gi_444 = 0.0;
gi_448 = 0.0;
gi_452 = 0.0;
gi_456 = 0.0;
gi_460 = 0.0;
gi_464 = 0.0;
g_ord_open_price_468 = 0.0;
g_ord_open_price_476 = 0.0;
g_ord_open_price_484 = 0.0;
g_ord_open_price_492 = 0.0;
g_ord_open_price_500 = 0.0;
g_ord_open_price_508 = 0.0;
g_ord_open_price_516 = 0.0;
g_ord_open_price_524 = 0.0;
g_ord_open_price_532 = 0.0;
g_ord_open_price_540 = 0.0;
for (int l_pos_32 = 0; l_pos_32 < OrdersTotal(); l_pos_32++) {
OrderSelect(l_pos_32, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && (OrderMagicNumber() == g_magic_240 || OrderMagicNumber() == g_magic_244 || OrderMagicNumber() == g_magic_248 || OrderMagicNumber() == g_magic_252)) {
g_count_408++;
if (OrderType() == OP_BUY) {
gi_448++;
g_ord_open_price_508 = OrderOpenPrice();
}
if (OrderType() == OP_SELL) {
gi_428++;
g_ord_open_price_468 = OrderOpenPrice();
}
}
}
if (BalanceTarget > 0.0 && AccountEquity() >= BalanceTarget)
{
if (g_count_408>0)
{
CloseAll();
Print("Account Profit Reached. All Open Trades Have Been Closed");
}
Comment("\n\n Dragon Ultimate\n\n Account Profit Reached. New trades are NOT allowed.");
return (0);
}
if (Use_Close_AllTrades==true && g_count_408>0)
{
if (minX!=Minute())
{
if (TimeHour(GMT)==TimeHour(StrToTime(Close_AllTrades_At)) && TimeMinute(GMT)==TimeMinute(StrToTime(Close_AllTrades_At)))
{
CloseAll();
g_count_408=0;
if (MessageAlert) Alert ("All Open Trades Have Been Closed at " + Close_AllTrades_At + " GMT.");
else Print("All Open Trades Have Been Closed at " + Close_AllTrades_At + " GMT.");
}
}
}
onScreenComment();
HideTestIndicators(TRUE);
for (int li_12 = 1; li_12 < Bars; li_12++) {
if (iFractals(NULL, PERIOD_M15, MODE_UPPER, li_12) != 0.0) {
g_ifractals_580 = iFractals(NULL, PERIOD_M15, MODE_UPPER, li_12);
break;
}
}
for (int li_16 = 1; li_16 < Bars; li_16++) {
if (iFractals(NULL, PERIOD_M15, MODE_LOWER, li_16) != 0.0) {
g_ifractals_588 = iFractals(NULL, PERIOD_M15, MODE_LOWER, li_16);
break;
}
}
for (int li_20 = 1; li_20 < Bars; li_20++) {
if (iFractals(NULL, PERIOD_H1, MODE_UPPER, li_20) != 0.0) {
g_ifractals_612 = iFractals(NULL, PERIOD_H1, MODE_UPPER, li_20);
break;
}
}
for (int li_24 = 1; li_24 < Bars; li_24++) {
if (iFractals(NULL, PERIOD_H1, MODE_LOWER, li_24) != 0.0) {
g_ifractals_620 = iFractals(NULL, PERIOD_H1, MODE_LOWER, li_24);
break;
}
}
gi_644 = MathRound((g_ifractals_580 - g_ifractals_588) / gd_164);
gd_652 = 0;
gd_652 = g_ifractals_580 - (g_ifractals_580 - g_ifractals_588) / 2.0;
gi_660 = MathRound(iATR(Symbol(), PERIOD_M15, 4, 0) / gd_164);
bool li_28 = FALSE;
if (Close[0] <= g_ifractals_612 && Close[0] >= g_ifractals_620) li_28 = TRUE;
if (gi_196 == TRUE) {
double OOPx=0, MP, MyB, MyA;
for (int l_pos_36 = 0; l_pos_36 < OrdersTotal(); l_pos_36++) {
OrderSelect(l_pos_36, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()!=Symbol()) continue;
OOPx = OrderOpenPrice();
MP = Bid;
MyB = NormalizeDouble(MP, Digits);
MP = Ask;
MyA = NormalizeDouble(MP, Digits);
if (OrderType() == OP_BUY && OrderMagicNumber() == g_magic_240) {
if (MyB >= NormalizeDouble(OOPx + (TakeProfit * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP."); //*********************
}
}
if (OrderType() == OP_BUY && OrderMagicNumber() == g_magic_244) {
if (MyB >= NormalizeDouble(OOPx + ((TakeProfit - 2.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-2."); //*********************
}
}
if (OrderType() == OP_BUY && OrderMagicNumber() == g_magic_248) {
if (MyB >= NormalizeDouble(OOPx + ((TakeProfit - 1.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-1."); //*********************
}
}
if (OrderType() == OP_BUY && OrderMagicNumber() == g_magic_252) {
if (MyB >= NormalizeDouble(OOPx + ((TakeProfit - 2.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-2."); //*********************
}
}
if (OrderType() == OP_SELL && OrderMagicNumber() == g_magic_240) {
if (MyA <= NormalizeDouble(OOPx - (TakeProfit * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP."); //*********************
}
}
if (OrderType() == OP_SELL && OrderMagicNumber() == g_magic_244) {
if (MyA <= NormalizeDouble(OOPx - ((TakeProfit - 2.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-2."); //*********************
}
}
if (OrderType() == OP_SELL && OrderMagicNumber() == g_magic_248) {
if (MyA <= NormalizeDouble(OOPx - ((TakeProfit - 1.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-1."); //*********************
}
}
if (OrderType() == OP_SELL && OrderMagicNumber() == g_magic_252) {
if (MyA <= NormalizeDouble(OOPx - ((TakeProfit - 2.0) * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print ("Trade Closed on TP-2."); //*********************
}
}
}
}
if (Use_TimeProtectionLevels==TRUE) {
for (int l_pos_40 = 0; l_pos_40 < OrdersTotal(); l_pos_40++) {
OrderSelect(l_pos_40, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()!=Symbol()) continue;
if (OrderType() == OP_BUY && (OrderMagicNumber() == g_magic_240 || OrderMagicNumber() == g_magic_244 || OrderMagicNumber() == g_magic_248 || OrderMagicNumber() == g_magic_252)) {
if (TimeCurrent() - OrderOpenTime() > 60 * gi_256 && TimeCurrent() - OrderOpenTime() < 60 * gi_264 && Bid >= NormalizeDouble(OrderOpenPrice() + (gi_260 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_264 && TimeCurrent() - OrderOpenTime() < 60 * gi_272 && Bid >= NormalizeDouble(OrderOpenPrice() + (gi_268 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_272 && TimeCurrent() - OrderOpenTime() < 60 * gi_280 && Bid >= NormalizeDouble(OrderOpenPrice() + (gi_276 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_280 && TimeCurrent() - OrderOpenTime() < 60 * gi_288 && Bid >= NormalizeDouble(OrderOpenPrice() + (gi_284 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_288 && Bid >= NormalizeDouble(OrderOpenPrice() + (gi_292 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeDayOfWeek(time) == 5 && TimeHour(time) >= 19) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Bid, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
}
if (OrderType() == OP_SELL && (OrderMagicNumber() == g_magic_240 || OrderMagicNumber() == g_magic_244 || OrderMagicNumber() == g_magic_248 || OrderMagicNumber() == g_magic_252)) {
if (TimeCurrent() - OrderOpenTime() > 60 * gi_256 && TimeCurrent() - OrderOpenTime() < 60 * gi_264 && Ask <= NormalizeDouble(OrderOpenPrice() - (gi_260 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_264 && TimeCurrent() - OrderOpenTime() < 60 * gi_272 && Ask <= NormalizeDouble(OrderOpenPrice() - (gi_268 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_272 && TimeCurrent() - OrderOpenTime() < 60 * gi_280 && Ask <= NormalizeDouble(OrderOpenPrice() - (gi_276 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_280 && TimeCurrent() - OrderOpenTime() < 60 * gi_288 && Ask <= NormalizeDouble(OrderOpenPrice() - (gi_284 * gd_164),Digits)) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) +
" Profit : $ " + DoubleToStr(OrderProfit(), 2));
}
if (TimeCurrent() - OrderOpenTime() > 60 * gi_288 && Ask <= (OrderOpenPrice() - (gi_292 * gd_164))) {
if (ECN_STP==false) RefreshRates();
if (!OrderClose(OrderTicket(), OrderLots(), Ask, g_slippage_220, Orange)) errClose(OrderTicket());
if (SoundAlert) PlaySound(SoundFileAtClose);
Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), Digits) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoПоказано первые 50% кода (символов: 34298)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.