Ilan_VS_TrendTrading_LastTP_v1_2
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ilan_vs_trendtrading_lasttp_v1_2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Ilan_VS_TrendTrading_LastTP_v1_2 — торговый советник для MetaTrader 4, использующий перехват тренда с пирамидированием позиций. Советник открывает сделки при пересечении скользящей средней с заданным порогом дельты и дополнительном подтверждении индикатором CCI. Лоты нарастает по экспоненциальной схеме, а расстояние между входами регулируется через параметр PipStep.
Советник поддерживает два режима управления тейк-профитом: фиксированный для первого ордера и сериальный для последующих. При активации функции UseLastTradeTP последний ордер в серии получает отдельный тейк-профит, который корректируется при закрытии предыдущих позиций. Встроенный режим MM рассчитывает лот на основе процента риска от баланса.
Для фильтрации ордеров используется MagicNumber, максимальное количество открытых позиций ограничивается параметром MaxTrades. Режим debug позволяет выводить промежуточные вычисления в журнал для диагностики работы стратегии.
Настройки программы
| Настройка | Описание |
|---|---|
| ??????????? ?????????? ???????? (PipStepExponent) | Экспонента для расчёта расстояния между ордерами в пунктах. Определяет скорость нарастания шага пирамидирования: значение 1 означает постоянный шаг, большее значение — увеличивающийся. |
| ?????????????? ???????? PipStep (DefaultPips) | Базовое расстояние в пунктах между уровнями входа при пирамидировании. Умножается на степень PipStepExponent для расчёта шага для каждого последующего ордера. |
| ???????????? ???????? PipStep (MaxPips) | Максимально допустимое расстояние в пунктах между уровнями входа. Если рассчитанный PipStep превышает это значение, используется MaxPips. |
| ?????? ???? ??? ?????? ?????? (Lots) | Размер лота для первого ордера и базовый размер лота при расчёте экспоненциального наращивания позиции. |
| ??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ?? (lotdecimal) | Количество знаков после запятой для округления размера лота. 0 — целые лоты (1), 1 — десятые (0.1), 2 — сотые (0.01). |
| ?? ?????????? ???????? ??????? ??????? ????????? ?????? (TakeProfitFirstOrder) | Расстояние в пунктах до тейк-профита для первого ордера в серии. |
| ?? ?????????? ???????? ??????? ??????? ????????? ????? (TakeProfitSeria) | Расстояние в пунктах до тейк-профита для ордеров, открытых после первого, в серии. |
| ???? ????? ?? (MA_TimeFrame) | Таймфрейм для расчёта скользящей средней. Допустимые значения: 0 — текущий график, 1 — M1, 2 — M5, 3 — M15, 4 — M30, 5 — H1, 6 — H4, 7 — D1. |
| ?????? ?? (MA_Period) | Период расчёта скользящей средней, используемой для определения направления тренда и генерации торговых сигналов. |
| ?? ??????? ?????? ?????????? ?? ?? ???????? ?????, ????? ?????? ???????? (MA_Delta) | Минимальная разница в ценах между текущим и предыдущим значением скользящей средней, необходимая для генерации торгового сигнала. |
| ??????? ?? ?????? CCI ?? ???????, ???? ??????? ????????, ?? ????? ?? ????? ??????????? (CCIlevel) | Пороговое значение индикатора CCI для дополнительного подтверждения входа в сделку. Сигнал BUY требует, чтобы CCI был ниже этого уровня со знаком минус, а сигнал SELL — выше положительного значения. |
| ????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????) (MagicNumber) | Идентификационный номер, присваиваемый ордерам советника для их фильтрации и отличия от ордеров других советников и ручных сделок. |
| ??????????? ?????????? ???????????? ???????? ??????? (MaxTrades) | Максимальное количество одновременно открытых ордеров, управляемых советником. При достижении этого лимита новые входы блокируются. |
| ???????????? ?? ????? ?????????? ??????????? ?? ?? ????????? ????? (UseLastTradeTP) | Переключатель, активирующий отдельный тейк-профит для последнего ордера в серии. При достижении заданного количества ордеров последняя позиция получает свой уровень фиксации прибыли. |
| ? ?????? ?????? ???????????? ??????????? ???????? ?? ?? ????????? ????? (LastTradeNumber) | Номер ордера в серии, начиная с которого активируется функция UseLastTradeTP для установки отдельного тейк-профита на последней позиции. |
| MM | Переключатель, активирующий режим управления денежным риском, при котором размер лота рассчитывается автоматически на основе процента риска и баланса. |
| ?? 0.01 - ???. (risk) | Процент риска от баланса, используемый при расчёте размера лота в режиме управления денежным риском. Значение 0.01 означает 0.01%. |
| ?????? ????????????????, ?? ?????? 1000 ???? ????? ????????? ??? ?? ???? (balans) | Базовый баланс для расчёта размера лота в режиме управления денежным риском. Используется в формуле расчёта лота на основе процента риска от баланса. |
| ????????? ?????? ????? ??????? (ManualFirstOrder) | Переключатель, при активации которого отключается автоматическое открытие первого ордера. Используется для ручного управления начальной позицией. |
| debug | Переключатель режима отладки. При активации советник выводит подробную информацию о вычислениях и действиях в журнал торгового терминала. |
Поиск по коду файла
#include <stderror.mqh>
#include <stdlib.mqh>
double Stoploss = 500.0; // ??????? ?????????
double TrailStart = 10.0;
double TrailStop = 10.0;
string w1 = "??? Exponent 0-??????????/1-??????????/2-?????????";
int TypeLotExponent = 0; //??? ??????????:
double LotExponent = 1.4; // ?? ??????? ???????? ??? ??? ??????????? ?????????? ??????. ??????: ?????? ??? 0.1, ?????: 0.16, 0.26, 0.43 ...
extern double PipStepExponent = 1; //??????????? ?????????? ????????
extern int DefaultPips = 50; //?????????????? ???????? PipStep
extern int MaxPips = 100; //???????????? ???????? PipStep
double slip = 4.0; // ?? ??????? ????? ?????????? ???? ? ?????? ???? ?? ???????? ??????? (? ????????? ?????? ??????? ???????? ????)
extern double Lots = 0.1; // ?????? ???? ??? ?????? ??????
extern int lotdecimal = 2; // ??????? ?????? ????? ??????? ? ???? ???????????? 0 - ?????????? ???? (1), 1 - ???????? (0.1), 2 - ????? (0.01)
extern int TakeProfitFirstOrder = 20.0; // ?? ?????????? ???????? ??????? ??????? ????????? ??????
extern int TakeProfitSeria = 10.0; // ?? ?????????? ???????? ??????? ??????? ????????? ?????
extern int MA_TimeFrame = 7; // ???? ????? ??
extern int MA_Period = 6; // ?????? ??
extern int MA_Delta = 3; // ?? ??????? ?????? ?????????? ?? ?? ???????? ?????, ????? ?????? ????????
extern int CCIlevel = 160; // ??????? ?? ?????? CCI ?? ???????, ???? ??????? ????????, ?? ????? ?? ????? ???????????
extern int MagicNumber = 2222; // ????????? ????? (???????? ????????? ???????? ???? ?????? ?? ?????)
int PipStep=0;
extern int MaxTrades = 10; // ??????????? ?????????? ???????????? ???????? ???????
extern bool UseLastTradeTP = FALSE; //???????????? ?? ????? ?????????? ??????????? ?? ?? ????????? ?????
extern int LastTradeNumber = 5; //? ?????? ?????? ???????????? ??????????? ???????? ?? ?? ????????? ?????
extern bool MM = false;
extern double risk = 1; // ?? 0.01 - ???.
extern int balans = 1000; // ?????? ????????????????, ?? ?????? 1000 ???? ????? ????????? ??? ?? ????
extern bool ManualFirstOrder = false; // ????????? ?????? ????? ???????
extern bool debug = false;
double PriceTarget, TakeProfit;
double AveragePrice;
double LastBuyPrice, LastSellPrice, Spread, LastTP;
string EAName="Ilan_VS_TrendTrading_LastTP_v1_2";
int timeprev = 0;
int NumOfTrades = 0;
double iLots;
int cnt = 0, total, prev_total, i1, ma_tf;
bool LongTrade = FALSE, ShortTrade = FALSE;
int ticket, Error;
double Exponent, TP_Shift, LastTP_Lot, LastTP_Price_shift;
double Sum_series_lot;
string gvOrderTicket, gvPriseShift;
int init() {
// код доступен только после оплаты
}
int deinit()
{
if(IsTesting()) // ???? ???????? ? ???????, ??????? ?? ????????? ???????? ??
{
GlobalVariableDel(gvOrderTicket);
GlobalVariableDel(gvPriseShift);
}
return (0);
}
int start()
{
// код доступен только после оплаты
}
int CountOfOrders()
{
int count = 0;
for (int i = 0; i < OrdersTotal(); i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == MagicNumber))
if ((OrderType() == OP_SELL) || (OrderType() == OP_BUY))
count++;
return(count);
}
int SendMarketOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& Error)
{
double Price, Take, Stop;
int Ticket, Slippage, Color, Err;
bool Delay = False;
if (debug) Print("??????? SendMarketOrder");
while(!IsStopped())
{
if(!IsExpertEnabled())
{
Error = ERR_TRADE_DISABLED;
Print("???????? ????????? ?????????! ?????? \"????????\" ??????.");
return(-1);
}
if (debug) Print("???????? ????????? ?????????");
if(!IsConnected())
{
Error = ERR_NO_CONNECTION;
Print("????? ???????????!");
return(-1);
}
Print("????? ? ???????? ???????????");
if(IsTradeContextBusy())
{
Print("???????? ????? ?????!");
Print("??????? 3 ???...");
Sleep(3000);
Delay = True;
continue;
}
if (debug) Print("???????? ????? ????????");
if(Показано первые 50% кода (символов: 15365)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.