trailingstop.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trailingstop.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
TrailingStop — это торговый советник для MetaTrader 4, реализующий функцию трейлинг-стоп-лосса для открытых позиций. Советник способен работать в двух режимах: на конкретном графике (только позиции данного символа) или на весь счёт (модификация стоп-лосса по всем открытым ордерам). При активации режима ProfitTrailing трейлинг применяется только к позициям, находящимся в прибыли.
Советник поддерживает функцию достижения целевой прибыли: при установленном значении ProfitTarget он рассчитывает все открытые сделки и закрывает их, если совокупная прибыль достигает заданного уровня. В этом режим трейлинг-стоп отключается. Также реализована звуковая уведомления при модификации стоп-лосса с возможностью выбора звукового файла.
Логика трейлинга основана на смещении стоп-лосса в направлении роста цены для длинных позиций и в направлении снижения для коротких. Шаг смещения и минимальное расстояние до стоп-лосса задаются параметрами TrailingStep и TrailingStop. Советник также очищает комментарии графика и отображает текущую информацию о прибыли и количестве открытых сделок.
Настройки программы
| Настройка | Описание |
|---|---|
| (True To modify all positions ) False(modify chart positions) (AllPositions) | AllPositions — (True To modify all positions ) False(modify chart positions) — при значении True модифицируются стоп-лоссы всех открытых ордеров на счёте, при False — только позиции на текущем графике. |
| (To Trail only postions on profit not loss ) (ProfitTrailing) | ProfitTrailing — (To Trail only postions on profit not loss) — при значении True трейлинг-стоп применяется только к позициям, находящимся в прибыли. |
| Minimum is 5 (TrailingStop) | TrailingStop — Минимальное расстояние до стоп-лосса (в пунктах). Минимальное допустимое значение — 5. |
| Setting this value will calculate all open trades and close if profit reached. (ProfitTarget) | ProfitTarget — Задаёт целевой уровень прибыли (в USD). При достижении указанной прибыли все открытые сделки закрываются, а трейлинг-стоп отключается. Значение 0 отключает функцию. |
| TrailingStep | TrailingStep — Шаг смещения стоп-лосса (в пунктах) при движении цены в пользу позиции. |
| UseSound | UseSound — Включает или отключает звуковое уведомление при успешной модификации стоп-лосса. |
| NameFileSound | NameFileSound — Имя звукового файла, воспроизводимого при успешной модификации стоп-лосса. |
Поиск по коду файла
extern bool AllPositions = false; // (True To modify all positions ) False(modify chart positions)
extern bool ProfitTrailing = True; //(To Trail only postions on profit not loss )
extern int TrailingStop=5; // Minimum is 5
extern int ProfitTarget=0; // Setting this value will calculate all open trades and close if profit reached.
extern int TrailingStep = 1;
extern bool UseSound = True;
extern string NameFileSound = "expert.wav";
bool runnable=true;
bool init=true;
bool result;
double pBid, pAsk, pp;
int i=0;
datetime timeprev=0;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
void TrailingAlls(int trail)
{
if (trail==0)
return;
double stopcrnt;
double stopcal;
int trade;
int trades=OrdersTotal();
for(trade=0;trade<trades;trade++)
{
OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol())
continue;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if(OrderType()==OP_BUY)
{
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
stopcrnt=OrderStopLoss();
stopcal=Bid-(trail*Point);
if(stopcrnt==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
}
else
{
if(stopcal>stopcrnt)
{
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);
}
}
}
return;
}
}//Long
if(OrderType()==OP_SELL)
{
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
stopcrnt=OrderStopLoss();
stopcal=Ask+(trail*Point);
if(stopcrnt==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
}
else
{
if(stopcal<stopcrnt)
{
OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);
}
}
}
return;
}
}//Shrt
}//for
}
void TrailingPositions() {
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrdeПоказано первые 50% кода (символов: 4434)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.