Moving Average
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «moving average tp.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник разработан для платформы MetaTrader 4 и автоматизирует процесс открытия и закрытия торговых позиций на основе анализа ценовых данных и технического индикатора. Программа запускается на каждом новом тике и выполняет расчёт оптимального размера лота с учётом доступного маржинального баланса и истории предыдущих сделок.
Советник отслеживает пересечение цены с движущейся средней для принятия решения об открытии или закрытии позиции. При формировании нового бара проверяются условия для входа в сделку с фиксированным уровнем тейк-профита. При обратном пересечении среднего открытые позиции закрываются.
Лот рассчитывается динамически на основе свободных средств счёта и параметра риска, с возможностью уменьшения размера позиции при серии убыточных сделок. Все позиции маркируются уникальным идентификатором для корректного управления.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Lots — Начальный размер лота |
| TakeProfit | TakeProfit — Уровень тейк-профита в пунктах |
| MaximumRisk | MaximumRisk — Максимальный риск как доля от свободного маржинального баланса |
| DecreaseFactor | DecreaseFactor — Коэффициент уменьшения лота при серии убыточных сделок |
| MovingPeriod | MovingPeriod — Период расчёта движущейся средней |
| MovingShift | MovingShift — Сдвиг движущейся средней |
Поиск по коду файла
#define MAGICMA 20050610
extern double Lots = 0.1;
extern double TakeProfit =30;
extern double MaximumRisk = 0.02;
extern double DecreaseFactor = 3;
extern double MovingPeriod = 25;
extern double MovingShift = 5;
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
if(buys>0) return(buys);
else return(-sells);
}
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
if(lot<0.1) Показано первые 50% кода (символов: 2025)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.