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

amingrid.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный советник работает на платформе MetaTrader 4 и реализует сеточную торговую стратегию с открытием позиций BUY и SELL. На каждом тике он проверяет рыночные условия, управляет открытыми ордерами и отслеживает маржинальный баланс.

Советник открывает новые ордера, когда цена отдаляется от последней точки входа на заданное расстояние в пунктах. Объём лота для каждого последующего ордера того же типа увеличивается по множителю. При достижении максимального уровня количество ордеров ограничивается параметром maxlevel.

Закрытие позиций происходит при достижении заданного уровня прибыли по совокупности или по отдельным типам ордеров. Доступно автоматическое закрытие ордеров по истечении заданного числа дней. Перед открытием новых позиций проверяется достаточность свободного маржинального баланса.

Настройки программы

НастройкаОписание
Magic Магический номер — Магический номер ордера, используемый для идентификации ордеров, открытых данным советником.
Lot Размер лота — Начальный размер лота для открытия ордера. Если LotFor1000 не равен нулю, лот рассчитывается на основе свободного маржинального баланса.
LotFor1000 Лот на 1000 маржи — Коэффициент для расчёта лота на основе свободного маржинального баланса (баланс / 1000 * LotFor1000). При значении 0 используется фиксированный лот.
bdiff Шаг открытия BUY — Расстояние в пунктах от последней цены открытия BUY-ордера, при превышении которого открывается следующая BUY-позиция.
sdiff Шаг открытия SELL — Расстояние в пунктах от последней цены открытия SELL-ордера, при превышении которого открывается следующая SELL-позиция.
maxopenorders Максимальное количество открытых ордеров — Максимальное общее количество одновременно открытых ордеров одного типа (BUY или SELL), при превышении которого новые ордера не открываются.
maxlevel Максимальный уровень ордеров — Максимальное количество ордеров одного типа. При достижении этого уровня размер лота ограничивается произведением начального лота на maxlevel.
dollar Прибыль для закрытия — Пороговая величина прибыли в долларах. При достижении совокупной прибыли BUY и SELL ордеров, превышающей это значение, все позиции закрываются.
lossdollar Убыток для закрытия — Пороговая величина убытка в долларах для потенциального закрытия позиций. В текущей версии кода параметр объявлен, но не используется.
Cmt Комментарий ордера — Текстовый комментарий, присваиваемый каждому открываемому ордеру.
CloseOnExpiration Закрытие по истечении срока — Переключатель автоматического закрытия ордеров по истечении заданного срока. При значении true ордера, открытые более expirationDays дней, закрываются или удаляются.
expirationDays Срок жизни ордера (дни) — Количество дней после открытия ордера, по истечении которых он автоматически закрывается (при включённом CloseOnExpiration).
openbuy Открытие BUY — Переключатель, определяющий возможность открытия BUY-ордеров. При значении false открытие покупок запрещено.
opensell Открытие SELL — Переключатель, определяющий возможность открытия SELL-ордеров. При значении false открытие продаж запрещено.
multiplier Множитель лота — Множитель, на который умножается лот при каждом последующем открытии ордера того же типа.
Получить полный код

Поиск по коду файла

#property version   "1.00"
#property strict

extern int    Magic=123456;     

extern double Lot         =0.01;
extern double LotFor1000 = 0; 
extern int    bdiff = 30; 
extern int    sdiff = 30; 
extern int    maxopenorders = 1000; 
extern int    maxlevel = 1000; 
extern int    dollar = 10; 
extern int    lossdollar = 30; 
extern string Cmt = "grid";
extern bool   CloseOnExpiration = true;
extern int    expirationDays = 7;

extern bool openbuy=true;
extern bool opensell = true;
extern double multiplier = 2.0;
double MinLot, MaxLot, LotDigits, cA = 0; ;
 int    total;
 double prec= 0.0;

double Lot()
 {
  if (LotFor1000 != 0) Lot = AccountFreeMargin() / 1000.0 * LotFor1000;
  return(NormalizeDouble(MathMin(MathMax(MinLot, Lot), MaxLot), LotDigits));
 }

int init(){
      // код доступен только после оплаты
   }

double lastsellprice =0.0;
double lastbuyprice =0.0;
int countbuy=0;
int countsell=0;

  int Count(int type){
  int counter =0;
   for(int order = 0; order < OrdersTotal(); order++)
   {

      if(!OrderSelect(order,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderSymbol() == Symbol()  && OrderMagicNumber() == Magic && OrderType()==type)
      counter++; 
   }
   return counter;
  }

 double ordersprofit(int type){
  double counter =0;
   for(int order = 0; order < OrdersTotal(); order++)
   {

      if(!OrderSelect(order,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderSymbol() == Symbol()  && OrderMagicNumber() == Magic && OrderType()==type){
      counter+=OrderProfit()+OrderCommission()+OrderSwap(); 
      }
   }
   return counter;
  }

    void Closeorders(int type){
  int counter =0;
     for (int i = OrdersTotal(); i >= 0; i--) {
      if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
      if (OrderSymbol() == Symbol()  && OrderMagicNumber() == Magic && OrderType() == type) 
        OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);

   }
  }
void OnTick(void)
  {
      // код доступен только после оплаты
   }

   int    cnt,ticket,total;
   double sl=0.0;

   if(Bars<100)
     {
      Print("bars 

Показано первые 50% кода (символов: 3373)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
337,30₽ ≈ $4.12