Asisten TP-SL Averaging
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «asisten tp averaging.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот советник для MetaTrader 5 автоматически управляет уровнями тейк-профита открытых позиций по текущему символу. Он не открывает новые сделки, а изменяет уже существующие позиции, устанавливая тейк-профит относительно средней цены входа.
Советник работает по таймеру: каждые 5 секунд он анализирует все позиции по символу графика. Для длинных позиций рассчитывается средневзвешенная цена открытия, и тейк-профит устанавливается выше неё на заданное расстояние. Для коротких позиций тейк-профит устанавливается ниже средней цены входа.
Изменение уровней выполняется через торговые запросы MetaTrader 5. Если для позиции уже установлен нужный тейк-профит, повторная модификация не производится. Советник не использует стоп-лосс и не управляет объёмом позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Расстояние от средней цены входа до уровня тейк-профита в пунктах. Для длинных позиций тейк-профит устанавливается выше средней цены, для коротких — ниже. |
Поиск по коду файла
#property version "1.00"
MqlTradeRequest m_request; // request data
MqlTradeResult m_result; // result data
MqlTradeCheckResult m_check_result; // result check data
input double TakeProfit = 100;//Take Profit in Point
int OnInit() {
// код доступен только после оплаты
}
void OnDeinit(const int reason) {
EventKillTimer();
}
void OnTimer() {
double tPriceBuy = 0,
tPriceSell = 0,
tLotsBuy = 0,
tLotsSell = 0,
BEPBuy = 0,
BEPSell = 0;
positionInformation(tPriceBuy, tPriceSell, tLotsBuy, tLotsSell, BEPBuy, BEPSell);
if(BEPBuy != 0) {
modifyPosition(POSITION_TYPE_BUY, BEPBuy + TakeProfit * Point());
}
if(BEPSell != 0) {
modifyPosition(POSITION_TYPE_SELL, BEPSell - TakeProfit * Point());
}
}
void clearStructures() {
ZeroMemory(m_request);
ZeroMemory(m_result);
ZeroMemory(m_check_result);
}
void modifyPosition(ENUM_POSITION_TYPE Type, double TP) {
int digit = Digits();
for(int i = 0; i < PositionsTotal(); i++) {
if(!PositionGetTicket(i)) continue;
if(PositionGetSymbol(i) == Symbol())
if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) == Type)
if(NormalizeDouble(PositionGetDouble(POSITION_TP), digit) != NormalizeDouble(TP, digit) || NormalizeDouble(PositionGetDouble(POSITION_TP), digit) =Показано первые 50% кода (символов: 2101)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.