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

pipebomb_ea.mq4

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

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

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

О программе

PipeBomb — торговый советник для MetaTrader 4, использующий пересечение линий индикатора N_StepMA_1_Email для генерации торговых сигналов. При пересечении быстрой и медленной линий индикатора вверх формируется сигнал на покупку, при пересечении вниз — на продажу. Советник автоматически закрывает позиции противоположного направления при появлении нового сигнала.

Советник поддерживает два режима управления размером позиции: фиксированный лот или автоматический расчёт на основе процента риска от equity. Также реализованы трейлинг-стопы, которые перемещают стоп-лосс в прибыльном направлении для открытых ордеров.

Внутренняя логика включает подсчёт текущих открытых ордеров, модификацию стоп-лоссов по трейлингу и отправку рыночных ордеров через стандартные торговые функции MetaTrader 4. При неудачной отправке ордера выводится сообщение об ошибке.

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

НастройкаОписание
LotSize Фиксированный размер лота, используемый при отключённом автоматическом управлении рисками.
Slippage Допустимое проскальзывание цены исполнения ордера в пунктах.
StopLoss Уровень стоп-лосса в пунктах, задаваемый относительно цены открытия ордера.
TakeProfit Уровень тейк-профита в пунктах, задаваемый относительно цены открытия ордера.
RiskPercent Процент риска от чистой стоимости счёта, используемый для автоматического расчёта размера лота при включённом управлении рисками.
UseMoneyMgmt Переключатель автоматического управления рисками. При включении размер лота рассчитывается на основе процента риска от equity, при выключении используется фиксированный размер лота.
Получить полный код

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

extern double LotSize=5;
extern int    Slippage=3;
extern double StopLoss=20;
extern double TakeProfit=600;
extern double RiskPercent=2.0;
extern bool   UseMoneyMgmt=true;

int           MagicNumber=0;
int           ticket;
int           BuyOrders=0;
int           SellOrders=0;
int           i;

bool          Buy_A_Bomb=false, Sell_A_Bomb=false;
double        StepMA_Up_1=0;
double        StepMA_Up_2=0;
double        StepMA_Dn_1=0;
double        StepMA_Dn_2=0;
double        MM_MinLotSize=0;
double        MM_MaxLotSize=0;
double        MM_LotStep=0;
double        MM_Decimals=0;
double        MM_OrderLotSize=0;
int           MM_AcctLeverage=0;
int           MM_CurrencyLotSize=0;

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

int deinit()
{
 return(0);
}

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

  MM_AcctLeverage = AccountLeverage();
  MM_MinLotSize = MarketInfo(Symbol(),MODE_MINLOT);
  MM_MaxLotSize = MarketInfo(Symbol(),MODE_MAXLOT);
  MM_LotStep = MarketInfo(Symbol(),MODE_LOTSTEP);
  MM_CurrencyLotSize = MarketInfo(Symbol(),MODE_LOTSIZE);

  if(MM_LotStep == 0.01) {MM_Decimals = 2;}
  if(MM_LotStep == 0.1) {MM_Decimals = 1;}

  if (UseMoneyMgmt == true)
   {
    MM_OrderLotSize = AccountEquity() * (RiskPercent * 0.01) / (MM_CurrencyLotSize / MM_AcctLeverage);
    MM_OrderLotSize = StrToDouble(DoubleToStr(MM_OrderLotSize,MM_Decimals));
   }
    else
   {
    MM_OrderLotSize = LotSize;
   }

  if (MM_OrderLotSize < MM_MinLotSize) {MM_OrderLotSize = MM_MinLotSize;}
  if (MM_OrderLotSize > MM_MaxLotSize) {MM_OrderLotSize = MM_MaxLotSize;}

  double StepMA_Up_1 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,0,1);
  double StepMA_Up_2 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,0,2);
  double StepMA_Dn_1 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,1,1);
  double StepMA_Dn_2 = iCustom(NULL,Period(),"N_StepMA_1_Email",7,1,0,500,false,1,2);

  if(StepMA_Up_1 < StepMA_Dn_1 && StepMA_Up_2 > StepMA_Dn_2) {Sell_A_Bomb=true;Buy_A_Bomb=false;}
  if(StepMA_Up_1 > StepMA_Dn_1 && StepMA_Up_2 < StepMA_Dn_2) {Sell_A_Bomb=false;Buy_A_Bomb=true;}

  BuyOrders=0;
  SellOrders=0; 

  for(i=OrdersTotal();i >= 0;i--) 
   {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) 
     {
      if (OrderType() == OP_BUY && StopLoss > 0)
       {
        BuyOrders++;
        if (StopLoss > 0 && Bid - (StopLoss * Point) > OrderStopLoss())
         {
          OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid - (StopLoss * Point),Digits),OrderTakeProfit(),0);
         }
       }   
      if (OrderType() == OP_SELL)
       {
        SellOrders++;
        if (StopLoss > 0 && Ask + (StopLoss * Point) < OrderStopLoss())
         {
          OrderModify(OrderTicket(),O

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

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

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

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

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

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

Стоимость полного кода
615,50₽ ≈ $7.52