RUBBERBANDS
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «rubberbands_1_6.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
RUBBERBANDS — торговый советник для MetaTrader 4, предназначенный для управления ордерами на финансовых рынках. Советник позволяет открывать и закрывать сделки по сигналам пользователя, а также автоматически управлять позицией на основе текущей прибыли.
В основе работы лежит система управления ордерами с возможностью установки целевой прибыли (sessionTP) и стоп-лосса (sessionSL) на сессию. При достижении заданных уровней советник закрывает все открытые позиции. Также реализован режим «safety mode» — защитный механизм, который активируется при достижении определённого уровня убытка и предусматривает открытие дополнительных ордеров с меньшим лотом.
Советник поддерживает ручное управление через переключатели: запуск сделок, приостановка, принудительное закрытие и остановка. Все параметры настраиваются пользователем, включая размеры лотов, целевые уровни прибыли и убытка.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Размер лота — Размер лота для открытия стандартных ордеров. |
| dollars per lot (dollar_profit) | Целевая прибыль на лот — Целевая прибыль в долларах на лот для стандартных ордеров. |
| quiesce_now | Приостановка работы — Переключатель для приостановки работы советника без закрытия ордеров. |
| do_now | Открыть ордер — Переключатель для запуска открытия нового ордера. |
| stop_now | Полная остановка — Переключатель для полной остановки советника с выводом сообщения об остановке. |
| close_now | Закрыть все ордера — Переключатель для принудительного закрытия всех открытых ордеров. |
| use_sessionTP | Включение тейк-профита сессии — Включение или отключение тейк-профита сессии. |
| dollars per lot (sessionTP) | Тейк-профит сессии — Уровень тейк-профита сессии в долларах на лот. |
| use_sessionSL | Включение стоп-лосса сессии — Включение или отключение стоп-лосса сессии. |
| dollars per lot (sessionSL) | Стоп-лосс сессии — Уровень стоп-лосса сессии в долларах на лот. |
| set to true on restart (use_in_values) | Восстановление значений при перезапуске — Переключатель для восстановления ранее сохранённых значений при перезапуске. |
| set profit so far if not zero (in_profit_sofar) | Прибыль на момент перезапуска — Учтённая прибыль на момент перезапуска, используется для восстановления состояния. |
| set to true if already in safety mode (in_safety_mode) | Режим safety mode при перезапуске — Флаг, указывающий, был ли активирован режим safety mode к моменту перезапуска. |
| set "safety_to_buy" or sell (in_safety_to_buy) | Направление safety-ордера при перезапуске — Направление safety-ордера при перезапуске: true — покупка, false — продажа. |
| set "used safety count" (in_used_safety_count) | Количество safety-ордеров при перезапуске — Количество уже использованных safety-ордеров на момент перезапуска. |
| use_safety_mode | Включение safety mode — Включение или отключение защитного режима safety mode. |
| dollars per lot (safety_start) | Уровень убытка для активации safety mode — Уровень убытка в долларах на лот, при котором активируется safety mode. |
| safety_lots | Размер лота safety-ордеров — Размер лота для safety-ордеров. |
| =(1500*2) -- dollars per lot (safety_step) | Шаг увеличения уровня убытка — Шаг увеличения уровня убытка для каждого дополнительного safety-ордера, в долларах на лот. |
| dollars per lot (safety_profit) | Целевая прибыль на safety-лот — Целевая прибыль в долларах на safety-лот для закрытия отдельного ордера в safety mode. |
| dollars per lot (safety_modeTP) | Целевая прибыль в safety mode — Целевая прибыль в долларах на лот для закрытия всех ордеров в safety mode. |
Поиск по коду файла
extern double Lots = 0.05;
extern double dollar_profit = 1000; // dollars per lot
extern bool quiesce_now = false;
extern bool do_now = false;
extern bool stop_now = false;
extern bool close_now = false;
extern bool use_sessionTP = true;
extern double sessionTP = 1300; // dollars per lot
extern bool use_sessionSL = false;
extern double sessionSL = 300; // dollars per lot
extern bool use_in_values = false; // set to true on restart
extern int in_profit_sofar = 0; // set profit so far if not zero
extern int in_safety_mode = false; // set to true if already in safety mode
extern int in_safety_to_buy = false; // set "safety_to_buy" or sell
extern int in_used_safety_count = 0; // set "used safety count"
extern bool use_safety_mode = true;
extern double safety_start = 2000; // dollars per lot
extern double safety_lots = 0.05;
extern double safety_step = 3000; // =(1500*2) -- dollars per lot
extern double safety_profit = 1300; // dollars per lot
extern double safety_modeTP = 500; // dollars per lot
double GLBprofit;
bool GLBclose_all;
bool GLBbuy_now;
bool GLBsell_now;
bool GLBuse_in_values;
bool GLBsafety_mode;
bool GLBsafety_to_buy;
int GLBused_safety_count;
bool GLBsafety_buy_now;
bool GLBsafety_sell_now;
int Magic_Number_Buy = 1111;
int Magic_Number_Sell = 2222;
int Magic_Number_Safety_Buy = 3333;
int Magic_Number_Safety_Sell = 4444;
int Is_Trade_Allowed(int MaxWaiting_sec = 30)
{
if(!IsTradeAllowed())
{
int StartWaitingTime = GetTickCount();
Print("Trade context is busy! Wait until it is free...");
while(true)
{
if(IsStopped())
{
Print("The expert was terminated by the user!");
return(-1);
}
if(GetTickCount() - StartWaitingTime > MaxWaiting_sec * 1000)
{
Print("The waiting limit exceeded (" + MaxWaiting_sec + " seconds.)!");
return(-2);
}
if(IsTradeAllowed())
{
Print("Trade context has become free!");
return(0);
}
}
}
else
{
return(1);
}
}
double Calculate_Profit()
{
double myprofit=0;
int total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
myprofit+=OrderProfit();
} //-if
} //-for
return(myprofit);
}
int Count_All()
{
int cnt, total, xcnt;
total=OrdersTotal();
if (total==0)
{
return(0);
}
xcnt=0;
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol())
{
xcnt++;
}
} // for
return(xcnt);
}
bool Close_Single_Order()
{
int cnt, total, xcnt;
bool result;
total=OrdersTotal();
if (total==0)
{
return(false);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
result=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
return(result);
}
else /*OP_SELL*/
{
result=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
return(result);
}
} // if ordertype
} // for
return(false);
}
bool Open_Buy(string magicnumber, double lots)
{
int ticket;
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"RUBBERBANDS",magicnumber,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY order opened : ",OrderOpenPrice());
return(true);
}
}
else
{
Print("Error opening BUY order : ",GetLastError());
return(false);
}
}
bool Open_Sell(string magicnumber, double lots)
{
int ticket;
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,"RUBBERBANDS",magicnumber,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("SELL order opened : ",OrderOpenPrice());
return(true);
}
}
else
{
Print("Error opening SELL order : ",GetLastError());
return(false);
}
}
void Comment_Stopped()
{
Comment(
"SummerSoft Labs","\n",
"Lots = "+DoubleToStr(Lots,2),"\n",
"dollar_profit = "+DoubleToStr(dollar_profit,0),"\n",
"sessionTP = "+DoubleToStr(sessionTP,0),"\n",
"sessionSL = "+DoubleToStr(sessionSL,0)+" ("+use_sessionSL+")","\n",
"use safety mode = "+use_safety_mode,"\n",
"safety mode = "+GLBsafety_mode,"\n",
"safety to buy = "+GLBsafety_to_buy,"\n",
"used safety count = "+GLBused_safety_count,"\n",
"Profit So Far = "+DoubleToStr(GLBprofit,2),"\n","\n",
"STOPPED BY USER"
);
}
void Comment_Quiesced()
{
Comment(
"SummerSoft Labs","\n",
"Lots = "+DoubleToStr(Lots,2),"\n",
"dollar_profit = "+DoubleToStr(dollar_profit,0),"\n",
"sessionTP = "+DoubleToStr(sessionTP,0),"\n",
"sessionSL = "+DoubleToStr(sessionSL,0)+" ("+use_sessionSL+")","\n",
"use safety mode = "+use_safety_mode,"\n",
"safety mode = "+GLBsafety_mode,"\n",
"safety to buy = "+GLBsafety_to_buy,"\n",
"used safety count = "+GLBused_safety_count,"\n",
"Profit So Far = "+DoubleToStr(GLBprofit,2),"\n","\n",
"QUIESCED BY USER"
);
}
void Comment_Idle()
{
Comment(
"SummerSoft Labs","\n",
"Lots = "+DoubleToStr(Lots,2),"\n",
"dollar_profit = "+DoubleToStr(dollar_profit,0),"\n",
"sessionTP = "+DoubleToStr(sessionTP,0),"\n",
"sessionSL = "+DoubleToStr(sessionSL,0)+" ("+use_sessionSL+")","\n",
"use safety mode = "+use_safety_mode,"\n",
"safety mode = "+GLBsafety_mode,"\n",
"safety to buy = "+GLBsafety_to_buy,"\n",
"used safety count = "+GLBused_safety_count,"\n",
"Profit So Far = "+DoubleToStr(GLBprofiПоказано первые 50% кода (символов: 8690)
Что вы получите после оплаты
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? Адрес передаётся вместе с заказом в магазин и сохраняется для связи заказа с оплатой. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.