moving average.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «moving average.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник автоматизирует процесс принятия торговых решений на основе анализа ценовых данных с использованием скользящей средней.
Основная функция советника — открытие и закрытие позиций при пересечении цены заданным скользящим средним. Перед открытием новой позиции проверяется наличие текущих ордеров по данному символу, что позволяет управлять позицией в рамках одной сделки.
Советник включает механизм оптимизации размера лота с учётом свободного маркша счёта и истории убыточных сделок. Это позволяет адаптировать объём позиции к текущим условиям торговли.
Для работы советника требуется не менее 100 баров на графике и разрешение на торговлю. Обработка осуществляется на каждом новом тике, при этом торговые операции выполняются через стандартные средства MetaTrader.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Начальный размер лота, используемый при расчёте оптимального объёма позиции. |
| MaximumRisk | Максимальный коэффициент риска, определяющий долю свободного маркша счёта, используемого для расчёта размера лота. |
| DecreaseFactor | Коэффициент уменьшения лота на основе количества убыточных сделок. При значении больше нуля размер лота снижается пропорционально числу убыточных ордеров без разрыва серии. |
| MovingPeriod | Период расчёта скользящей средней, задающий количество баров, используемых для усреднения цены закрытия. |
| MovingShift | Сдвиг скользящей средней, определяющий горизонтальное смещение линии индикатора относительно текущего бара. |
Поиск по коду файла
#define MAGICMA 20050610
extern double Lots = 0.1;
extern double MaximumRisk = 0.02;
extern double DecreaseFactor = 3;
extern double MovingPeriod = 12;
extern double MovingShift = 6;
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) loПоказано первые 50% кода (символов: 1961)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.