← К каталогу
Исходный код · ID 352

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 и перейдите к оплате.

Стоимость полного кода
196,10₽ ≈ $2.40