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

EA_9_bar

ea_9_bar_v1.01_multipaira.mq4
Вы автор или правообладатель?

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

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

О программе

Данный продукт представляет собой торгового советника для платформы MetaTrader 4, работающего с 26 валютными парами. Советник использует таймер с задаваемой частотой обновления и анализирует три последовательных часовых бара на таймфрейме H1 в заданный час (по умолчанию 9:00, время открытия Франкфурта). Если большинство баров направлены вверх, открывается позиция BUY; если вниз — позиция SELL.

После открытия основной позиции советник выставляет отложенный контравый ордер с увеличенным объёмом (контрамультипликатор). Внутренняя функция мониторинга проверяет отложенные ордера и удаляет их, если родительская сделка уже закрыта. Также присутствует функция корректировки уровней Stop Loss и Take Profit на контравых позициях.

Советник использует собственную обёртку для отправки ордеров с повторными попытками при временных ошибках. Обработка событий реализована через OnTimer, OnTick и OnChartEvent, а торговые операции выполняются через стандартные API MetaTrader 4.

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

НастройкаОписание
Update frequency of ea in seconds (updateFrequency) Частота обновления — Частота обновления советника в секундах
Lot size (lotSize) Размер лота — Размер лота для открытия позиций
Lot multiply for contra trade (contraMultiplier) Множитель контравы — Множитель объёма для контравого отложенного ордера
Magic number for trades of this ea (magicNumber) Магический номер — Магический номер для идентификации сделок данного советника
Allowed slippage (_slippage) Допустимое проскальзывание — Допустимое проскальзывание в пунктах
Take profit value in pips (takeProfit) Тейк-профит — Значение тейк-профита в пунктах
Stop Loss value in pips (slopLoss) Стоп-лосс — Значение стоп-лосса в пунктах
Fill in Frankfurt open time for your broker (compareHour) Час сравнения — Час открытия (например, время открытия Франкфурта) для проверки условий открытия позиций
Pair prefix string (preFix) Префикс пары — Префикс строки названия валютной пары
Pair postfix string (postFix) Суффикс пары — Суффикс строки названия валютной пары
Получить полный код

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

#property version   "1.01"
#property strict

sinput int        updateFrequency = 2;    // Update frequency of ea in seconds
sinput double     lotSize = 0.1;          // Lot size
sinput int        contraMultiplier = 2;   // Lot multiply for contra trade
sinput int        magicNumber = 12346;    // Magic number for trades of this ea
sinput int        _slippage = 5;          // Allowed slippage
sinput int        takeProfit = 10;        // Take profit value in pips
sinput int        slopLoss = 10;          // Stop Loss value in pips
sinput int        compareHour = 9;        // Fill in Frankfurt open time for your broker
sinput string     preFix = "";            // Pair prefix string
sinput string     postFix = "";           // Pair postfix string

string DefaultPairss[] = {  "AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF",
                           "CADJPY","CHFJPY","EURAUD","EURCAD","EURJPY","EURNZD","EURUSD",
                           "GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF",
                           "NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"
                        };

string DefaultPairs[];

static datetime newBar;
datetime check_9;

struct pair_Data
{
   string pairName;

   double MyPoint;
   double MyDigits;
   double MyMultiplier;

   double pBid;
   double pAsk;
};

pair_Data pairData[];

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

void OnDeinit(const int reason)
  {

   EventKillTimer();

  }

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

void OnTimer()
{

   if (newBar != iTime(Symbol(), PERIOD_H1,0))
   {
      newBar = iTime(Symbol(), PERIOD_H1,0);
      Alert("hier");

      int hour = Hour();
      if (hour == compareHour)
      {
         for (int u = 0; u < ArraySize(DefaultPairs); u++)
         {
            int upCounter = 0;
            int downCounter = 0;
            if (iClose(DefaultPairs[u], PERIOD_H1,3) > iOpen(DefaultPairs[u], PERIOD_H1,3))
            {
               upCounter++;
            }
            if (iClose(DefaultPairs[u], PERIOD_H1,3) < iOpen(DefaultPairs[u], PERIOD_H1,3))
            {
               downCounter++;
            }

            if (iClose(DefaultPairs[u], PERIOD_H1,2) > iOpen(DefaultPairs[u], PERIOD_H1,2))
            {
               upCounter++;
            }
            if (iClose(DefaultPairs[u], PERIOD_H1,2) < iOpen(DefaultPairs[u], PERIOD_H1,2))
            {
               downCounter++;
            }

            if (iClose(DefaultPairs[u], PERIOD_H1,1) > iOpen(DefaultPairs[u], PERIOD_H1,1))
            {
               upCounter++;
            }
            if (iClose(DefaultPairs[u], PERIOD_H1,1) < iOpen(DefaultPairs[u], PERIOD_H1,1))
            {
               downCounter++;
            }

            if ((upCounter + downCounter) == 3)
            {
               if (upCounter > 1)
               {

                  int ticket_Buy = OrderSendReliable(DefaultPairs[u], OP_BUY, lotSize, 
                        MarketInfo(DefaultPairs[u], MODE_BID),_slippage, 0.0, 0.0, magicNumber, "BUY: " , 0, clrNONE);
                  if (ticket_Buy > 0)
                  {

                     Sleep(200);
                     OrderSelect(ticket_Buy, SELECT_BY_TICKET);
                     double TP = OrderOpenPrice() + takeProfit / pairData[u].MyMultiplier;
                     double SL = OrderOpenPrice() - takeProfit / pairData[u].MyMultiplier;
                     bool _ok = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u], 
                                    MODE_DIGITS)), NormalizeDouble(TP, (int)MarketInfo(DefaultPairs[u], 
                                    MODE_DIGITS)), 0, clrNONE);

                     if (_ok)
                     {

                        int ticket_SellStop = OrderSendReliable(DefaultPairs[u], OP_SELLSTOP, lotSize * contraMultiplier , 
                           NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u],MODE_DIGITS)),_slippage, 
                           0.0, 0.0, magicNumber+1, IntegerToString(ticket_Buy), 0, clrNONE);

                     }
                  }
               }
               else
               {

                  int ticket_Sell = OrderSendReliable(DefaultPairs[u], OP_SELL, lotSize, 
                        MarketInfo(DefaultPairs[u], MODE_BID),_slippage, 0.0, 0.0, magicNumber, "SELL: " , 0, clrNONE);
                  if (ticket_Sell > 0)
                  {

                     Sleep(200);
                     OrderSelect(ticket_Sell, SELECT_BY_TICKET);
                     double TP = OrderOpenPrice() - takeProfit / pairData[u].MyMultiplier;
                     double SL = OrderOpenPrice() + takeProfit / pairData[u].MyMultiplier;
                     bool _ok = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u], 
                                    MODE_DIGITS)), NormalizeDouble(TP, (int)MarketInfo(DefaultPairs[u], 
                                    MODE_DIGITS)), 0, clrNONE);

                     if (_ok)
                

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

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

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

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

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

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

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