VFX London Breakout
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «vfx_london_breakout.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
VFX London Breakout — торговый советник для MetaTrader 4, предназначенный для автоматической торговли в ходе лондонской торговой сессии. Советник определяет диапазон цены на таймфрейме M15 и открывает позицию при её пробое за заданные параметры.
В начале каждой торговой сессии (время и длительность настраиваются) эксперт проверяет, находится ли текущая цена в допустимом диапазоне спреда и соответствует ли объём диапазона заданным ограничениям. При подтверждении условий он оценивает направление сделки по настройкам для конкретного дня недели и открывает ордер на покупку или продажу.
Управление позицией осуществляется через стоп-лосс и тейк-профит, задаваемые в пунктах. Размер лота рассчитывается в зависимости от выбранного метода риска: процент от баланса, фиксированная сумма или фиксированный лот. Дополнительно задаются максимальный спред, проскальзывание и магический номер для идентификации ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| London Opening Time (LondonOpen) | Время открытия Лондона — Время открытия лондонской сессии — момент начала торговой сессии в формате часового смещения от полуночи. |
| Positions On Monday (PosMonday) | Позиции в понедельник — Направление позиций в понедельник — определяет, в какую сторону открываются позиции в понедельник (только лонг, только шорт, оба или нет). |
| Positions On Tuesday (PosTuesday) | Позиции во вторник — Направление позиций во вторник — определяет, в какую сторону открываются позиции во вторник (только лонг, только шорт, оба или нет). |
| Positions On Wednesday (PosWednesday) | Позиции в среду — Направление позиций в среду — определяет, в какую сторону открываются позиции в среду (только лонг, только шорт, оба или нет). |
| Positions On Thursday (PosThursday) | Позиции в четверг — Направление позиций в четверг — определяет, в какую сторону открываются позиции в четверг (только лонг, только шорт, оба или нет). |
| Positions On Friday (PosFriday) | Позиции в пятницу — Направление позиций в пятницу — определяет, в какую сторону открываются позиции в пятницу (только лонг, только шорт, оба или нет). |
| Set Positions Risk By (PosRiskBy) | Метод расчёта риска — Метод расчёта риска — определяет, как рассчитывается размер позиции: по проценту от баланса, по фиксированной сумме или по фиксированному лоту. |
| Positions Risk (PosRisk) | Размер риска — Размер риска — числовое значение риска на позицию, интерпретация зависит от выбранного метода расчёта риска. |
| Stop Loss (Points) (StopLoss) | Стоп-лосс — Стоп-лосс (в пунктах) — расстояние в пунктах от цены входа для установки уровня стоп-лосса. |
| Take Profit (Points) (TakeProfit) | Тейк-профит — Тейк-профит (в пунктах) — расстояние в пунктах от цены входа для установки уровня тейк-профита. |
| Maximum Trading Range (Points) (MaxRange) | Максимальный торговый диапазон — Максимальный торговый диапазон (в пунктах) — верхняя граница допустимого размера ценового диапазона для торговли. |
| Minimum Trading Range (Points) (MinRange) | Минимальный торговый диапазон — Минимальный торговый диапазон (в пунктах) — нижняя граница допустимого размера ценового диапазона для торговли. |
| Break Of Trading Range (Points) (BreakRange) | Прорыв торгового диапазона — Прорыв торгового диапазона (в пунктах) — количество пунктов, на которое цена должна пробить верхнюю или нижнюю границу диапазона для открытия позиции. |
| Maximum Spread (Points) (MaxSpread) | Максимальный спред — Максимальный спред (в пунктах) — пороговое значение спреда, при превышении которого торговля не осуществляется. |
| Maximum Price Slippage (Points) (Slippage) | Максимальное проскальзывание — Максимальное проскальзывание цены (в пунктах) — допустимое отклонение цены исполнения от запрашиваемой. |
| Magic Number (MagicNumber) | Магический номер — Магический номер — идентификатор, присваиваемый ордерам для их распознавания среди других советников. |
Поиск по коду файла
#property description "System of automatic trading during the London session which uses"
#property description "a strategy to identify a valid trading range in the intraday timeframes"
#property description "and awaits the breakout to open position."
#property version "1.10"
#property strict
enum ENUM_LON_OPEN
{
H00M00 = 0, // 00:00
H00M30 = 1800, // 00:30
H01M00 = 3600, // 01:00
H01M30 = 5400, // 01:30
H02M00 = 7200, // 02:00
H02M30 = 9000, // 02:30
H03M00 = 10800, // 03:00
H03M30 = 12600, // 03:30
H04M00 = 14400, // 04:00
H04M30 = 16200, // 04:30
H05M00 = 18000, // 05:00
H05M30 = 19800, // 05:30
H06M00 = 21600, // 06:00
H06M30 = 23400, // 06:30
H07M00 = 25200, // 07:00
H07M30 = 27000, // 07:30
H08M00 = 28800, // 08:00
H08M30 = 30600, // 08:30
H09M00 = 32400, // 09:00
H09M30 = 34200, // 09:30
H10M00 = 36000, // 10:00
H10M30 = 37800, // 10:30
H11M00 = 39600, // 11:00
H11M30 = 41400, // 11:30
H12M00 = 43200, // 12:00
H12M30 = 45000, // 12:30
H13M00 = 46800, // 13:00
H13M30 = 48600, // 13:30
H14M00 = 50400, // 14:00
H14M30 = 52200, // 14:30
H15M00 = 54000, // 15:00
H15M30 = 55800, // 15:30
H16M00 = 57600, // 16:00
H16M30 = 59400, // 16:30
H17M00 = 61200, // 17:00
H17M30 = 63000, // 17:30
H18M00 = 64800, // 18:00
H18M30 = 66600, // 18:30
H19M00 = 68400, // 19:00
H19M30 = 70200, // 19:30
H20M00 = 72000, // 20:00
H20M30 = 73800, // 20:30
H21M00 = 75600, // 21:00
H21M30 = 77400, // 21:30
H22M00 = 79200, // 22:00
H22M30 = 81000, // 22:30
H23M00 = 82800, // 23:00
H23M30 = 84600 // 23:30
};
enum ENUM_POS_DAY
{
PosLongOnly, // Long Only
PosShortOnly, // Short Only
PosLongShort, // Long & Short
PosNo // None
};
enum ENUM_RISK_BY
{
RiskPercentage, // Percentage
RiskAmount, // Amount
RiskFixedLot // Fixed Lot
};
input ENUM_LON_OPEN LondonOpen = H10M00; // London Opening Time
input ENUM_POS_DAY PosMonday = PosNo; // Positions On Monday
input ENUM_POS_DAY PosTuesday = PosShortOnly; // Positions On Tuesday
input ENUM_POS_DAY PosWednesday = PosShortOnly; // Positions On Wednesday
input ENUM_POS_DAY PosThursday = PosShortOnly; // Positions On Thursday
input ENUM_POS_DAY PosFriday = PosShortOnly; // Positions On Friday
input ENUM_RISK_BY PosRiskBy = RiskPercentage; // Set Positions Risk By
input double PosRisk = 0.5; // Positions Risk
input int StopLoss = 300; // Stop Loss (Points)
input int TakeProfit = 600; // Take Profit (Points)
input int MaxRange = 380; // Maximum Trading Range (Points)
input int MinRange = 110; // Minimum Trading Range (Points)
input int BreakRange = 10; // Break Of Trading Range (Points)
input int MaxSpread = 15; // Maximum Spread (Points)
input int Slippage = 10; // Maximum Price Slippage (Points)
input int MagicNumber = 112233; // Magic Number
ENUM_POS_DAY Positions[7];
double RangeSpread;
string ErrMsg;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
double CalculateVolume(int OpType, double SL)
{
double TickValue, Risk, Lot;
if(PosRiskBy == RiskFixedLot) {return(PosRisk);}
if(OpType == OP_BUY)
{
TickValue = ((Ask - SL) / Point) * MarketInfo(Symbol(), MODE_TICKVALUE);
}
else
{
TickValue = ((SL - Bid) / Point) * MarketInfo(Symbol(), MODE_TICKVALUE);
}
if(TickValue == 0.0) {return(0.0);}
Risk = PosRisk;
if(PosRiskBy == RiskPercentage) {Risk = (AccountBalance() + AccountCredit()) * (PosRisk / 100);}
Lot = NormalizeDouble(Risk / TickValue, 2);
return(Lot);
}
bool CheckVolume(double Lot)
{
double MinVolume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN);
if(Lot < MinVolume)
{
ErrMsg = StringConcatenate("Volume less than the minimum allowed. The minimum volume is ", MinVolume, ".");
return(false);
}
double MaxVolume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX);
if(Lot > MaxVolume)
{
ErrMsg = StringConcatenate("Volume greater than the maximum allowed. The maximum volume is ", MaxVolume, ".");
return(false);
}
double VolumeStep = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP);
int Ratio = (int)MathRound(Lot / VolumeStep);
if(MathAbs(Ratio * VolumeStep - Lot) > 0.0000001)
{
ErrMsg = StringConcatenate("The volume is not multiple of the minimum gradation ", VolumeStep,
". Volume closest to the valid ", Ratio * VolumeStep, ".");
return(false);
}
return(true);
}
string ErrorDescription(int ErrorCode)
{
string ErrorMsg;
switch(ErrorCode)
{
case 0: ErrorMsg="No error returned."; break;
case 1: ErrorMsg="No error returned, but the result is unknown."; break;
case 2: ErrorMsg="Common error."; break;
case 3: ErrorMsg="Invalid trade parameters."; break;
case 4: ErrorMsg="Trade server is busy."; break;
case 5: ErrorMsg="Old version of the client terminal."; break;
case 6: ErrorMsg="No connection with trade server."; break;
case 7: ErrorMsg="Not enough rights."; break;
case 8: ErrorMsg="Too frequent requests."; break;
case 9: ErrorMsg="Malfunctional trade operation."; break;
case 64: ErrorMsg="Account disabled."; break;
case 65: ErrorMsg="Invalid account."; break;
case 128: ErrorMsg="Trade timeout."; break;
case 129: ErrorMsg="Invalid price."; break;
case 130: ErrorMsg="Invalid stops."; break;
case 131: ErrorMsg="Invalid trade volume."; break;
case 132: ErrorMsg="Market is closed."; break;
case 133: ErrorMsg="Trade is disabled."; break;
case 134: ErrorMsg="Not enough money."; break;
case 135: ErrorMsg="Price changed."; break;
case 136: ErrorMsg="Off quotes."; break;
case 137: ErrorMsg="Broker is busy."; break;
case 138: ErrorMsg="Requote."; break;
case 139: ErrorMsg="Order is locked."; break;
case 140: ErrorMsg="Buy orders only allowed."; break;
case 141: ErrorMsg="Too many requests."; break;
case 145: ErrorMsg="Modification denied because order is too close to market."; break;
case 146: ErrorMsg="Trade context is busy."; break;
case 147: ErrorMsg="Expirations are denied by broker."; break;
case 148: ErrorMsg="The amount of open and pending orders has reached the limit."; break;
case 149: ErrorMsg="An attempt to open an order opposite when hedging is disabled."; break;
case 150: ErrorMsg="An attempt to close an order contravening the FIFO rule."; break;
case 4000: ErrorMsg="No error returned."; break;
case 4001: ErrorMsg="Wrong function pointer."; break;
case 4002: ErrorMsg="Array index is out of range."; break;
case 4003: ErrorMsg="No memory for function cПоказано первые 50% кода (символов: 14429)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.