servant avg+++..mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «servant avg+++..mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Сервисный советник для MetaTrader 4, который анализирует дневной тренд по индикатору RSI(14) и управляет торговыми позициями на текущем символе. При отсутствии стоп-лосса и тейк-профита на ордере советник устанавливает их согласно параметрам, а при наличии убытка — перемещает стоп-лосс в сторону прибыли (трейлинг-стоп) при активированной функции DiLockProfit.
Советник поддерживает усреднение позиций: если цена удаляется от открытого ордера на заданное расстояние Range, открывается дополнительный ордер с увеличенным лотом по множителю Lot_Multiplier. Количество допустимых позиций ограничивается параметром Level. Также реализована функция принудительного закрытия всех ордеров при достижении прибыли в денежном выражении TP_in_Money.
В качестве дополнительной информации на график выводятся авторские данные, текущий тренд, параметры советника и серверное время. Советник учитывает количество знаков после запятой у брокера (4 или 2/3/5) для корректного расчёта уровней стоп-лосса и тейк-профита.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Тейк-профит — Уровень тейк-профита в пунктах, устанавливаемый на ордера при их открытии или модификации. |
| StopLoss | Стоп-лосс — Уровень стоп-лосса в пунктах, устанавливаемый на ордера при их открытии или модификации. |
| DiLockProfit | Блокировка прибыли — Переключатель функции перемещения стоп-лосса в сторону прибыли при достижении заданного уровня LockProfit. |
| LockProfit | Расстояние блокировки прибыли — Расстояние в пунктах от открытой цены, при достижении которого активируется перемещение стоп-лосса. |
| Averaging | Усреднение — Включает или отключает режим усреднения позиций при достижении ценового расстояния Range от открытого ордера. |
| Lot_Multiplier | Множитель лота — Множитель для увеличения лота при усреднении позиции. |
| Range | Диапазон для усреднения — Ценовое расстояние в пунктах от открытой цены, при котором открывается дополнительный усредняющий ордер. |
| Level | Уровень количества позиций — Максимальное количество позиций, при превышении которого усреднение не выполняется. |
| Bila false maka TP_in_Money juga tidak berfungsi (Modify_TPSL) | Модификация ТП/СЛ — Переключатель модификации тейк-профита и стоп-лосса существующих ордеров. При значении false параметр TP_in_Money не функционирует. |
| TP_in_Money | Прибыль для закрытия в деньгах — Порог прибыли в денежном выражении, при достижении которого закрываются все позиции. Работает только при активном Modify_TPSL. |
Поиск по коду файла
extern int TakeProfit = 4;
extern int StopLoss = 10;
extern bool DiLockProfit = false;
extern int LockProfit = 100;
extern bool Averaging = true;
extern double Lot_Multiplier = 1.0;
extern double Range = 4;
extern int Level = 100;
extern bool Modify_TPSL = false; //Bila false maka TP_in_Money juga tidak berfungsi
extern double TP_in_Money = 0.40;
string gsa_88[4];
int ticket=0;
int a=0;
int init() {
// код доступен только после оплаты
}
int deinit() {
ObjectDelete("ObjLabel1");
ObjectDelete("ObjLabel2");
ObjectDelete("ObjLabel3");
ObjectDelete("ObjLabel4");
return (0);
}
int start() {
// код доступен только после оплаты
}
Info();
double l_irsi_0 = iRSI(NULL, PERIOD_D1, 14, PRICE_CLOSE, 0);
int l_pos_8 = 0;
gsa_88[0] = "Dwi Malistyo - e*@dwim.web.id";
gsa_88[1] = "";
gsa_88[2] = "";
gsa_88[4] = "";
gsa_88[3] = "";
if (l_irsi_0 < 45.0) gsa_88[2] = "Daily Trend : Downtrend";
else {
if (l_irsi_0 > 55.0) gsa_88[4] = "Daily Trend : Uptrend";
else gsa_88[2] = "Daily Trend : Sideways";
}
ObjectCreate("ObjLabel1", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel1", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel1", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel1", OBJPROP_YDISTANCE, 15);
ObjectSetText("ObjLabel1", gsa_88[0], 7, "Arial", SteelBlue);
ObjectCreate("ObjLabel2", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel2", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel2", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel2", OBJPROP_YDISTANCE, 25);
ObjectSetText("ObjLabel2", gsa_88[1], 7, "Arial", SteelBlue);
ObjectCreate("ObjLabel3", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel3", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel3", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel3", OBJPROP_YDISTANCE, 35);
ObjectSetText("ObjLabel3", gsa_88[2], 7, "Arial", Red);
ObjectSetText("ObjLabel3", gsa_88[4], 7, "Arial", Lime);
ObjectCreate("ObjLabel4", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
if (Digits == 4) {
for (l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY) {
if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - StopLoss * Point, OrderOpenPrice() + TakeProfit * Point, 0) == TRUE) gsa_88[3] = "Put SL and TP at trade BUY no: #" + OrderTicket();
else gsa_88[3] = "ERROR -- Put SL and TP at trade BUY no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
} else {
if (DiLockProfit && Bid - OrderOpenPrice() > LockProfit * Point) {
if (OrderStopLoss() <= OrderOpenPrice()) {
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + 1.0 * Point, OrderTakeProfit(), 0) == TRUE) gsa_88[3] = "Modify SL at trade BUY no: #" + OrderTicket();
else gsa_88[3] = "ERROR -- Modifying SL at trade BUY no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
} else {
if (DiLockProfit && Bid - OrderStopLoss() > LockProfit * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - LockProfit * Point, OrderTakeProfit(), 0);
gsa_88[3] = "Trailing SL trade no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
}
}
}
} else {
if (OrderType() == OP_SELL) {
if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + StopLoss * Point, OrderOpenPrice() - TakeProfit * Point, 0) == TRUE) gsa_88[3] = "Put SL and TP at trade SELL no: #" + OrderTicket();
else gsa_88[3] = "ERROR -- Put SL and TP at trade SELL no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
} else {
if (DiLockProfit && OrderOpenPrice() - Ask > LockProfit * Point) {
if (OrderStopLoss() >= OrderOpenPrice()) {
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - 1.0 * Point, OrderTakeProfit(), 0) == TRUE) gsa_88[3] = "Modify SL at trade SELL no: #" + OrderTicket();
else gsa_88[3] = "ERROR -- Modifying SL at trade SELL no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
} else {
if (DiLockProfit && OrderStopLoss() - Ask > LockProfit * Point) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + LockProfit * Point, OrderTakeProfit(), 0);
gsa_88[3] = "Trailing SL at trade no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
}
}
}
}
}
}
}
} else {
if (Digits == 2 || Digits == 3 || Digits == 5) {
for (l_pos_8 = 0; l_pos_8 < OrdersTotal(); l_pos_8++) {
OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderType() == OP_BUY) {
if (OrderStopLoss() == 0.0 && OrderTakeProfit() == 0.0) {
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - 10.0 * (StopLoss * Point), OrderOpenPrice() + 10.0 * (TakeProfit * Point), 0) == TRUE) gsa_88[3] = "Put SL and TP at trade BUY no: #" + OrderTicket();
else gsa_88[3] = "ERROR -- Put SL and TP at trade BUY no: #" + OrderTicket();
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 45);
ObjectSetText("ObjLabel4", gsa_88[3], 7, "Arial", Yellow);
} else {
if (DiLockProfit && Bid - OrderOpenPПоказано первые 50% кода (символов: 10588)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.