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

MultiHedge

multihedge v1.1.mq4
Вы автор или правообладатель?

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

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

О программе

MultiHedge — торговый советник для MetaTrader 4, разработанный компанией MyLuckySoft Software Corp. Советник одновременно управляет позициями по трём валютным парам, открывая сделки в заданных направлениях (покупка или продажа) и отслеживая совокупную прибыль в пунктах.

При достижении суммарной прибыли по всем открытым позициям целевого значения в пунктах (TargetPips) советник закрывает все управляемые позиции. После закрытия активируется период охлаждения (CoolingTime), в течение которого новые сделки не открываются. По истечении охлаждения советник повторно открывает позиции по трём парам.

В случае неудачной попытки отправки ордера советник повторяет попытку до пяти раз с паузой в полсекунды и выводит уведомление об ошибке. Информация о текущей прибыли в пунктах, состоянии закрытия и количестве позиций отображается на графике через комментарий. Также используются оповещения (Alert) при сбоях отправки ордеров.

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

НастройкаОписание
Lots Размер лота для каждой открытой позиции.
TargetPips Целевое количество пунктов совокупной прибыли, при достижении которого все позиции закрываются.
Slippage Допустимое проскальгивание в пунктах при открытии и закрытии позиций.
Magic Магический номер для идентификации ордеров, управляемых советником.
CoolingTime Время охлаждения в минутах после закрытия всех позиций, в течение которого советник не открывает новые сделки.
Suffix Суффикс, добавляемый к имени символа (например, для брокерских суффиксов серверных имён).
Pair1 Валютная пара для первой позиции.
TradeType1 Направление торговли для первой пары: Buy (покупка) или Sell (продажа).
Pair2 Валютная пара для второй позиции.
TradeType2 Направление торговли для второй пары: Buy (покупка) или Sell (продажа).
Pair3 Валютная пара для третьей позиции.
TradeType3 Направление торговли для третьей пары: Buy (покупка) или Sell (продажа).
Получить полный код

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

#property version   "1.10"
#property strict

#include <stdlib.mqh>

enum TrType { Buy=0, Sell=1 };

input double   Lots = 1;
input int      TargetPips = 10;
input int      Slippage = 3;
input int      Magic = 332255;
input int      CoolingTime = 5;
input string   Suffix = "";
input string   Pair1 = "AUDUSD";
input TrType   TradeType1 = Sell;
input string   Pair2 = "USDCAD";
input TrType   TradeType2 = Buy;
input string   Pair3 = "USDJPY";
input TrType   TradeType3 = Buy;

int TotalCount = 0;
int Slip;
bool CloseAll;
int DigFactor = 1;
datetime TradeStart;

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

void OnDeinit(const int reason)
{

}

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

   double BidPrice=0, AskPrice=0;
   double PipsProfit=0;
   double MyPoin;
   TotalCount = 0;
   for (int i=0; i<OrdersTotal(); i++)
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderMagicNumber() == Magic && (OrderSymbol() == Pair1+Suffix || OrderSymbol() == Pair2+Suffix || OrderSymbol() == Pair3+Suffix))
         {
            TotalCount++;
            BidPrice = MarketInfo(OrderSymbol(),MODE_BID);
            AskPrice = MarketInfo(OrderSymbol(),MODE_ASK);
            MyPoin = MarketInfo(OrderSymbol(),MODE_POINT)*DigFactor;
            if (OrderType() == OP_BUY)
            {
               PipsProfit += (BidPrice-OrderOpenPrice())/MyPoin;
            }
            if (OrderType() == OP_SELL)
            {
               PipsProfit += (OrderOpenPrice()-AskPrice)/MyPoin;
            }
         }
      }
   }
   if (PipsProfit > TargetPips)
   {
      CloseAll = true;
   }

   if (TotalCount == 0 && CloseAll)
   {
      CloseAll = false;
      TradeStart = TimeCurrent()+CoolingTime*60;
   }

   Comment("PipsProfit = ",DoubleToStr(PipsProfit,1),"\nCloseAll = ",CloseAll,"\nTotalCount = ",TotalCount);

   if (TotalCount == 0 && !CloseAll && TimeCurrent() > TradeStart)
   {
      int Tries;
      int Tiket1=-1, Tiket2=-1, Tiket3=-1;
      Tries = 0;
      while(Tiket1 == -1)
      {
         Tiket1 = SendOrder(Pair1+Suffix,TradeType1);
         if (Tiket1 == -1)
         {
      

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

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

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

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

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

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

Стоимость полного кода
299,80₽ ≈ $3.66