RoNz Auto SL n TP
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ronz_auto_sl-ts-tp.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
RoNz Auto SL n TP — торговый советник для платформы MetaTrader 4, предназначенный для автоматического управления уровнями стоп-лосса и тейк-профитом на открытых ордерах. Советник поддерживает два режима работы с SL и TP: серверный (ордера размещаются на сервере с видимыми уровнями) и клиентский (скрытые уровни, при которых позиции закрываются программно при достижении заданных ценовых условий).
В состав советника входит функция фиксации прибыли, перемещающая стоп-лосс в безубыточную зону после достижения определённой прибыли, а также несколько режимов Trailing Stop с настраиваемым шагом. Доступны уведомления о закрытии позиций скрытыми уровнями.
Советник обрабатывает открытые ордера на каждом тике, работая как с текущим графиком, так и со всеми открытыми ордерами. В тестовом режиме платформы предусмотрена демонстрационная логика открытия позиций для проверки функций управления ордерами.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Тейк-профит — Уровень тейк-профита в пунктах, автоматически устанавливаемый на открытых позициях. |
| StopLoss | Стоп-лосс — Уровень стоп-лосса в пунктах, автоматически устанавливаемый на открытых позициях. |
| SLnTPMode | Режим SL и TP — Режим размещения стоп-лосса и тейк-профита: серверный (видимый на сервере) или клиентский (скрытый). |
| Target Pips to Lock Profit (LockProfitAfter) | LockProfitAfter — Целевое количество пунктов прибыли, после которого активируется фиксация прибыли и/или Trailing Stop. |
| Profit To Lock (ProfitLock) | ProfitLock — Количество пунктов фиксации прибыли — расстояние перемещения стоп-лосса в безубыточную зону. |
| Trailing Method (TrailingStopMethod) | Метод Trailing Stop — Метод работы Trailing Stop: классический, с сохранением дистанции или пошаговый. |
| Trailing Stop (TrailingStop) | Trailing Stop — Дистанция Trailing Stop в пунктах для автоматического перемещения стоп-лосса. |
| Trailing Stop Step (TrailingStep) | Шаг Trailing Stop — Шаг Trailing Stop в пунктах, используемый в зависимости от выбранного метода. |
| ChartSymbolSelection | Выбор символа — Выбор символа для обработки ордеров: только текущий график или все открытые ордера. |
| Enable Alert (inpEnableAlert) | Включить уведомления — Включает уведомления при закрытии позиций скрытыми стоп-лоссом или тейк-профитом. |
Поиск по коду файла
#property version "2.05"
#property strict
/*
v1.0
+ Auto SL and TP
v1.22
+ Correcting Min Stop Level
v2.0
+ Added modes for SL and TP (Hidden or Placed)
+ Added profit lock
+ Added stepping Trailing Stop
v2.01
+ Added option to enable/disable alert when closed by hidden sl/tp
v2.03
+ Fixed initial locking profit
+ Fixed trailing stop
v2.04
+ Fixed trailing stop step
+ Rearrange lock profit to a function
v2.05
+ Added Trailing Stop Method (Classic, Step Keep Distance, Step By Step)
NOTE:
+ First of all, your orders SL and TP must be set to 0, then this EA will set appropriate SL and TP.
+ To disable SL, TP, Profit Lock, and Trailing Stop, set its value to 0.
*/
enum ENUM_CHARTSYMBOL
{
CurrentChartSymbol=0,//Current Chart Only
AllOpenOrder=1,//All Opened Orders
};
enum ENUM_SLTP_MODE
{
Server=0,//Place SL n TP
Client=1,//Hidden SL n TP
};
enum ENUM_TRAILINGSTOP_METHOD
{
TS_NONE=0,//No Trailing Stop
TS_CLASSIC=1,//Classic
TS_STEP_DISTANCE=2,//Step Keep Distance
TS_STEP_BY_STEP=3, //Step By Step
};
string STR_OPTYPE[]={"Buy","Sell","Buy Limit","Sell Limit","Buy Stop","Sell Stop"};
input int TakeProfit=500;
input int StopLoss=250;
input ENUM_SLTP_MODE SLnTPMode=Client;
input int LockProfitAfter=100;//Target Pips to Lock Profit
input int ProfitLock=60;//Profit To Lock
input ENUM_TRAILINGSTOP_METHOD TrailingStopMethod=TS_STEP_DISTANCE;//Trailing Method
input int TrailingStop=50;//Trailing Stop
input int TrailingStep=10;//Trailing Stop Step
input ENUM_CHARTSYMBOL ChartSymbolSelection=AllOpenOrder;
input bool inpEnableAlert=false;//Enable Alert
int CalculateCurrentOrders()
{
int buys=0,sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(ChartSymbolSelection==CurrentChartSymbol && OrderSymbol()!=Symbol()) continue;
if(OrderType()==OP_BUY)
buys++;
if(OrderType()==OP_SELL)
sells++;
}
if(buys>0) return(buys);
else return(-sells);
}
bool LockProfit(int TiketOrder,int TargetPoints,int LockedPoints)
{
if(TargetPoints==0 || LockedPoints==0) return false;
if(OrderSelect(TiketOrder,SELECT_BY_TICKET,MODE_TRADES)==false) return false;
double CurrentSL=(OrderStopLoss()!=0)?OrderStopLoss():OrderOpenPrice();
double point=MarketInfo(OrderSymbol(),MODE_POINT);
int digits=(int)MarketInfo(OrderSymbol(),MODE_DIGITS);
double minstoplevel=MarketInfo(OrderSymbol(),MODE_STOPLEVEL);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double PSL=0;
if((OrderType()==OP_BUY) && (bid-OrderOpenPrice()>=TargetPoints*point) && (CurrentSL<=OrderOpenPrice()))
{
PSL=NormalizeDouble(OrderOpenPrice()+(LockedPoints*point),digits);
}
else if((OrderType()==OP_SELL) && (OrderOpenPrice()-ask>=TargetPoints*point) && (CurrentSL>=OrderOpenPrice()))
{
PSL=NormalizeDouble(OrderOpenPrice()-(LockedPoints*point),digits);
}
else
return false;
Print(STR_OPTYPE[OrderType()]," #",OrderTicket()," ProfitLock: OP=",OrderOpenPrice()," CSL=",CurrentSL," PSL=",PSL," LP=",LockedPoints);
if(OrderModify(OrderTicket(),OrderOpenPrice(),PSL,OrderTakeProfit(),0,clrRed))
return true;
else
return false;
return false;
}
bool RZ_TrailingStop(int TiketOrder,int JumlahPoin,int Step=1,ENUM_TRAILINGSTOP_METHOD Method=TS_STEP_DISTANCE)
{
if(JumlahPoin==0) return false;
if(OrderSelect(TiketOrder,SELECT_BY_TICKET,MODE_TRADES)==false) return false;
double CurrentSL=(OrderStopLoss()!=0)?OrderStopLoss():OrderOpenPrice();
double point=MarketInfo(OrderSymbol(),MODE_POINT);
int digits=(int)MarketInfo(OrderSymbol(),MODE_DIGITS);
double minstoplevel=MarketInfo(OrderSymbol(),MODE_STOPLEVEL);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double TSL=0;
JumlahPoin=JumlahPoin+(int)minstoplevel;
if((OrderType()==OP_BUY) && (bid-OrderOpenPrice()>JumlahPoin*point))
{
if(CurrentSL<OrderOpenPrice())
CurrentSL=OrderOpenPrice();
if((bid-CurrentSL)>=JumlahPoin*point)
{
switch(Method)
{
case TS_CLASSIC://Classic, no step
TSL=NormalizeDouble(bid-(JumlahPoin*point),digits);
break;
case TS_STEP_DISTANCE://Step keeping distance
TSL=NormalizeDouble(bid-((JumlahPoin-Step)*point),digits);
break;
case TS_STEP_BY_STEP://Step by step (slow)
TSL=NormalizeDouble(CurrentSL+(Step*point),digits);
break;
default:
TSL=0;
}
}
}
else if((OrderType()==OP_SELL) && (OrderOpenPrice()-ask>JumlahPoin*point))
{
iПоказано первые 50% кода (символов: 7533)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.