trailingstopfrcnsar.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trailingstopfrcnsar.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализующий функцию трейлинга стоп-лосса. Советник автоматически перемещает стоп-лосс открытых позиций в зависимости от выбранного метода расчёта: по свечам, фракталам, пользовательскому индикатору Velosity или индикатору Parabolic SAR. Также доступен режим фиксированного расстояния в пунктах.
Советник обрабатывает все открытые ордера в цикле, проверяя условия по magic number и символу. Для каждой позиции BUY или SELL рассчитывается новый уровень стоп-лосса, после чего выполняется модификация ордера через стандартные торговые функции платформы. Доступны режимы ограничения трейлинга: только при наличии прибыли, без перевода в убыток, а также портфельный расчёт уровня безубыточности.
В качестве дополнительных настроек предусмотрены визуализация уровней на графике в виде стрелок, фильтрация по magic number и возможность применения трейлинга ко всем символам одновременно. Советник отображает информационный текст с текущими параметрами работы прямо на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| 0 off (TrailingStop) | Метод трейлинга стоп-лосса: 0 — выключен, 1 — по свечам, 2 — по фракталам, 3 — по индикатору Velosity, 4 — по Parabolic SAR, больше 4 — фиксированное расстояние в пунктах. |
| ?????? ?? ???????? ??? ????? ??? Parabolic (delta) | Дополнительное смещение стоп-лосса в пунктах для методов фракталов и Parabolic SAR. |
| ??????? ?????? ?????????? ?????? (only_Profit) | Перемещение стоп-лосса только при наличии нереализованной прибыли на позиции. |
| ?????? ?????? ?????? ?????????? ? ????????? (only_NoLoss) | Запрет перемещения стоп-лосса в зону убытка. При включении стоп-лосс не сдвигается ниже уровня открытия. |
| ??????? ?????? ?? ??????, ? ??????? ??? ???? SL (only_SL) | Перемещение стоп-лосса только если он уже установлен на позиции. Если стоп-лосс отсутствует, модификация не выполняется. |
| ???????? ??? ??????????? (SymbolAll) | При включении трейлинг применяется ко всем символам, а не только к текущему графику. |
| ?? ???????????? ??????? (Portfel) | Включает портфельный режим, при котором уровень безубыточности рассчитывается по суммарному портфелю позиций. |
| Step | Параметр шага для индикатора Parabolic SAR. |
| Maximum | Параметр максимума для индикатора Parabolic SAR. |
| Magic | Число-идентификатор для фильтрации позиций. При значении 0 обрабатываются все позиции. |
| visualization | Отображение стрелок и уровней стоп-лосса на графике текущего символа. |
| VelosityPeriodBar | Период расчёта пользовательского индикатора Velosity. |
| ??????????? ?????????? ????????? ?? Velosity (K_Velosity) | Множитель для расчёта смещения стоп-лосса по пользовательскому индикатору Velosity. |
Поиск по коду файла
#property show_inputs
extern string parameters.trailing="0-off 1-Candle 2-Fractals 3-Velosity 4-Parabolic >4-pips";
extern int TrailingStop = 2; //0 off
extern int delta = 0; //?????? ?? ???????? ??? ????? ??? Parabolic
extern bool only_Profit = true; //??????? ?????? ?????????? ??????
extern bool only_NoLoss = false; //?????? ?????? ?????? ?????????? ? ?????????
extern bool only_SL = false; //??????? ?????? ?? ??????, ? ??????? ??? ???? SL
extern bool SymbolAll = true; //???????? ??? ???????????
extern bool Portfel = true; //?? ???????????? ???????
extern string parameters.Parabolic = "";
extern double Step = 0.02;
extern double Maximum = 0.2;
extern int Magic = 0;
extern bool visualization = true;
extern int VelosityPeriodBar = 30;
extern double K_Velosity = 1.0; //??????????? ?????????? ????????? ?? Velosity
int STOPLEVEL,n,DIGITS;
double BID,ASK,POINT;
string SymbolTral,TekSymbol;
int start()
{
// код доступен только после оплаты
}
void TrailingStop()
{
int tip,Ticket;
bool error;
double StLo,OSL,OOP,NoLoss;
n=0;
for (int i=OrdersTotal(); i>=0; i--)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
TekSymbol=OrderSymbol();
if (tip<2 && (TekSymbol==SymbolTral || SymbolAll) && (OrderMagicNumber()==Magic || Magic==0))
{
/* if (visualization && TekSymbol==SymbolTral)
{
ObjectDelete("SL Buy"); ObjectDelete("STOPLEVEL-");
ObjectDelete("SL Sell"); ObjectDelete("STOPLEVEL+");
ObjectDelete("NoLossSell"); ObjectDelete("NoLossBuy");
ObjectDelete("NoLossSell_");ObjectDelete("NoLossBuy_");
}*/
POINT = MarketInfo(TekSymbol,MODE_POINT);
DIGITS = MarketInfo(TekSymbol,MODE_DIGITS);
BID = MarketInfo(TekSymbol,MODE_BID);
ASK = MarketInfo(TekSymbol,MODE_ASK);
OSL = OrderStopLoss();
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY)
{ n++;
if (Portfel) NoLoss = TProfit(1,TekSymbol);
OrderSelect(i, SELECT_BY_POS);
StLo = SlLastBar(1,BID);
if ((StLo < NoLoss && Portfel) || NoLoss==0) continue;
if (StLo < OOP && only_Profit && !Portfel) continue;
if (OSL >= OOP && only_NoLoss) continue;
if (OSL == 0 && only_SL) continue;
if (StLo > OSL)
{ error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,DIGITS),OrderTakeProfit(),0,White);
Comment(TekSymbol," TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
if (!error) Print(TekSymbol," Error order ",Ticket," TrailingStop ",
GetLastError()," ",SymbolTral," SL ",StLo);
}
}
if (tip==OP_SELL)
{ n++;
if (Portfel) NoLoss = TProfit(-1,TekSymbol);
OrderSelect(i, SELECT_BY_POS);
StLo = SlLastBar(-1,ASK);
if (StLo > NoLoss && Portfel) continue;
if (StLo==0) conПоказано первые 50% кода (символов: 7831)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.