MultiBreakout_v5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «multibreakout_v5.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
MultiBreakout_v5 — торговый советник для MetaTrader 4, работающий по принципу breakout-системы. Советник определяет уровни пробоя на основе максимума и минимума за заданное количество баров и размещает отложенные ордера выше и ниже текущей цены. Работа ведётся в настраиваемых временных окнах с возможностью ручного запуска входа.
Советник поддерживает несколько торговых сессий с настраиваемым временем начала. При срабатывании отложенных ордеров реализуются уровни фиксации прибыли с заданным приращением, автоматический перевод в безубыток и опциональное перемещение стоп-лосса вслед за ценой.
Перед размещением ордеров проверяется свободный маржинал на счёте. Советник управляет существующими позициями: удаляет устаревшие отложенные ордера в начале торгового окна и модифицирует стоп-лосс и тейк-профит активных позиций в соответствии с заданными параметрами.
Настройки программы
| Настройка | Описание |
|---|---|
| LotSize | Размер лота — Размер торгового лота для открытия позиций |
| BrokerOffsetToGMT | Смещение брокера к GMT — Часовой сдвиг брокера относительно GMT для корректного определения торгового времени |
| NumberOfOrdersPerSide X TakeProfitIncrement = Highest TakeProfit Level (NumberOfOrdersPerSide) | Количество ордеров на сторону — Количество отложенных ордеров, размещаемых по каждой стороне |
| TakeProfitIncrement | Приращение Take Profit — Шаг в пунктах между уровнями фиксации прибыли для последовательных ордеров |
| EnterNOW | Вход немедленно — Включает режим немедленного входа в позицию при наступлении текущего времени |
| Trade1 | Торговля в окне 1 — Включает или отключает первый торговый период |
| Time1Hour | Час начала окна 1 — Час начала первого торгового окна |
| Time1Minutes | Минута начала окна 1 — Минута начала первого торгового окна |
| Trade2 | Торговля в окне 2 — Включает или отключает второй торговый период |
| Time2Hour | Час начала окна 2 — Час начала второго торгового окна |
| Time2Minutes | Минута начала окна 2 — Минута начала второго торгового окна |
| Trade3 | Торговля в окне 3 — Включает или отключает третий торговый период |
| Time3Hour | Час начала окна 3 — Час начала третьего торгового окна |
| Time3Minutes | Минута начала окна 3 — Минута начала третьего торгового окна |
| Trade4 | Торговля в окне 4 — Включает или отключает четвёртый торговый период |
| Time4Hour | Час начала окна 4 — Час начала четвёртого торгового окна |
| Time4Minutes | Минута начала окна 4 — Минута начала четвёртого торгового окна |
| ExitMinute | Минута выхода — Минута, до которой действует торговое окно перед закрытием |
| StopLoss | Стоп-лосс — Размер стоп-лосса в пунктах от цены входа |
| PipsForEntry | Пункты для входа — Смещение в пунктах от экстремума диапазона для размещения отложенного ордера |
| BreakEven | Брейк-эвен — Уровень в пунктах, при достижении которого позиция переводится в безубыток |
| MovingStopLoss | Движущийся стоп-лосс — Включает автоматическое перемещение стоп-лосса при росте или падении цены |
| PipsToStartMSL | Пункты для начала движения стоп-лосса — Расстояние в пунктах от цены входа, после которого стоп-лосс начинает перемещаться |
| BarsForRange | Баров для диапазона — Количество баров, используемых для определения экстремумов диапазона пробоя |
Поиск по коду файла
#include <stdlib.mqh>
#include <WinUser32.mqh>
#define NewLine "\n"
#define SkipLine "\n\n"
#define Tab " "
extern double LotSize = 3;
extern int BrokerOffsetToGMT = 0;
extern int NumberOfOrdersPerSide = 1; // NumberOfOrdersPerSide X TakeProfitIncrement = Highest TakeProfit Level
extern int TakeProfitIncrement = 30;
extern bool EnterNOW = false;
extern bool Trade1 = true;
extern int Time1Hour = 6;
extern int Time1Minutes = 30;
extern bool Trade2 = true;
extern int Time2Hour = 9;
extern int Time2Minutes = 15;
extern bool Trade3 = true;
extern int Time3Hour = 12;
extern int Time3Minutes = 30;
extern bool Trade4 = true;
extern int Time4Hour = 23;
extern int Time4Minutes = 46;
extern int ExitMinute = 55;
extern int StopLoss = 20;
extern int PipsForEntry = 8;
extern int BreakEven = 10;
extern bool MovingStopLoss = true;
extern int PipsToStartMSL = 25;
extern int BarsForRange = 2;
int start() {
// код доступен только после оплаты
}
int ticket;
if(Bars<100) {
Print("bars less than 100");
return(0);
}
double TradeTime1 = (Time1Hour*3600)+(Time1Minutes*60);
double TradeTime2 = (Time2Hour*3600)+(Time2Minutes*60);
double TradeTime3 = (Time3Hour*3600)+(Time3Minutes*60);
double TradeTime4 = (Time4Hour*3600)+(Time4Minutes*60);
double TradeTime = OrderOpenTime();
double PFE = PipsForEntry;
double CurrentTime=(TimeHour(CurTime())*3600+TimeMinute(CurTime())*60-(BrokerOffsetToGMT*3600));
int total=OrdersTotal();
double Spread=Ask-Bid;
double hprice=High[Highest(NULL,0,MODE_HIGH,BarsForRange,0)]+Point*PFE+Spread;
double lprice=Low[Lowest(NULL,0,MODE_LOW,BarsForRange,0)]-Point*PFE;
int TPI=TakeProfitIncrement;
int i,j,k;
int Volume0 = Volume[0];
int Volume1 = Volume[1];
int Volume2 = Volume[2];
int Volume3 = Volume[3];
int Volume4 = Volume[4];
bool need_long = true;
bool need_short = true;
if ((CurrentTime==(TradeTime1-300)&& Trade1)
|| (CurrentTime==(TradeTime2-300)&& Trade2)
|| (CurrentTime==(TradeTime3-300)&& Trade3)
|| (CurrentTime==(TradeTime4-300)&& Trade4)) {
for(i = OrdersTotal(); i > 0; i--) {
OrderSelect(i, SELECT_BY_POS);
if(OrderSymbol()==Symbol()) {
bool result = false;
if(OrderType()==OP_BUYSTOP()) result = OrderDelete( OrderTicket() );
if(OrderType()==OP_SELLSTOP()) result = OrderDelete( OrderTicket() );
}
}//End for loop
}//End Closing All Open and Pending Orders
else {
for(total = OrdersTotal(); total > 0; total--) {
OrderSelect(total, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()) {
int shift=iBarShift(NULL,0,OrderOpenTime(), true); //to get the number of bars back to the Open Bar
if(OrderType()==OP_BUY) {
if(High[Highest(NULL,0,MODE_HIGH,shift,0)]<OrderOpenPrice()+Point*BreakEven){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point*StopLoss,OrderTakeProfit(),0,White);
Показано первые 50% кода (символов: 5028)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.