RoNz Auto SL n TP
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ronz auto sl-ts-tp.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
[RoNz Auto SL n TP](RoNz Auto SL n TP) — это торговый советник для MetaTrader 4, предназначенный для автоматического управления стоп-лоссом и тейк-профитом на открытых позициях. Советник обрабатывает событие OnTick и анализирует текущие рыночные ордера, применяя к ним настроенные уровни SL и TP.
Продукт поддерживает два режима работы с SL/TP: серверный (размещение ордерами на сервере) и скрытый (клиентский, с закрытием позиции при достижении виртуального уровня). Также реализована функция фиксации прибыли и механизм трейлинг-стопа с несколькими методами управления.
В советнике предусмотрена система уведомлений об закрытии позиций по виртуальным SL/TP, а также параметр выбора символа для обработки ордеров. В тестированной версии присутствует демонстрационная функция открытия сделок на основе скользящих средних.
Автор — Rony Nofrianto (2014–2018), версия 2.06. Советник работает на платформе MetaTrader 4 и ориентирован на автоматизацию управления рисками в торговых операциях.
Настройки программы
| Настройка | Описание |
|---|---|
| =[ SL & TP SETTINGS ]=- (note1) | Настройки SL и TP — Разделитель настроек: SL и TP. |
| Take Profit (TakeProfit) | Тейк-профит — Значение тейк-профита в пунктах. |
| Stop Loss (StopLoss) | Стоп-лосс — Значение стоп-лосса в пунктах. |
| SL & TP Mode (SLnTPMode) | Режим SL и TP — Режим работы стоп-лосса и тейк-профита: серверный (размещение на сервере) или скрытый (клиентский). |
| =[ PROFIT LOCK SETTINGS ]=- (note2) | Настройки фиксации прибыли — Разделитель настроек: фиксация прибыли. |
| Enable/Disable Profit Lock (LockProfitEnable) | Включение фиксации прибыли — Включает или отключает функцию фиксации прибыли. |
| Target Points to Lock Profit (LockProfitAfter) | Пункты для активации фиксации прибыли — Количество пунктов прибыли, после достижения которого активируется фиксация прибыли или трейлинг-стоп. |
| Profit To Lock (ProfitLock) | Размер фиксируемой прибыли — Количество пунктов фиксируемой прибыли при срабатывании условия. |
| =[ TRAILING STOP SETTINGS ]=- (note3) | Настройки трейлинг-стопа — Разделитель настроек: трейлинг-стоп. |
| Trailing Method (TrailingStopMethod) | Метод трейлинг-стопа — Метод трейлинг-стопа: без трейлинга, классический, с сохранением дистанции или пошаговый. |
| Trailing Stop (TrailingStop) | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах. |
| Trailing Stop Step (TrailingStep) | Шаг трейлинг-стопа — Шаг трейлинг-стопа, используемый в определённых методах управления. |
| =[ OTHER SETTINGS ]=- (note4) | Прочие настройки — Разделитель настроек: прочие параметры. |
| ChartSymbolSelection | Выбор символа графика — Определяет, какие ордера обрабатываются: только на текущем графике или по всем открытым ордерам. |
| Enable Alert (inpEnableAlert) | Включение уведомлений — Включает или отключает уведомления при закрытии позиций по виртуальным SL/TP. |
Поиск по коду файла
#property version "2.06"
#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)
v2.06
+ Added Option to Enable/Disable Profit Lock
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_LOCKPROFIT_ENABLE
{
LP_DISABLE=0,//Disable
LP_ENABLE=1,//Enable
};
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"};
sinput string note1="";//-=[ SL & TP SETTINGS ]=-
input int TakeProfit=500;//Take Profit
input int StopLoss=250;//Stop Loss
input ENUM_SLTP_MODE SLnTPMode=Client;//SL & TP Mode
sinput string note2="";//-=[ PROFIT LOCK SETTINGS ]=-
input ENUM_LOCKPROFIT_ENABLE LockProfitEnable=LP_ENABLE;//Enable/Disable Profit Lock
input int LockProfitAfter=100;//Target Points to Lock Profit
input int ProfitLock=60;//Profit To Lock
sinput string note3="";//-=[ TRAILING STOP SETTINGS ]=-
input ENUM_TRAILINGSTOP_METHOD TrailingStopMethod=TS_NONE;//Trailing Method
input int TrailingStop=50;//Trailing Stop
input int TrailingStep=10;//Trailing Stop Step
sinput string note4="";//-=[ OTHER SETTINGS ]=-
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(LockProfitEnable==False || 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)
Показано первые 50% кода (символов: 7960)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.