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

Aggressive Grid Martingale EA

aggressivegridmartingaleea_5400032011547083593.mq5

Похожие материалы по тегам

indicatorgoldy.pineTradingView · 2 общих теговgeniusv101-ecn.mq4MQL4 / MetaTrader 4 · 2 общих теговmarket crusher ea guidlines.txtMQL · 2 общих теговtt scalper_6257861182422522623.pineTradingView · 2 общих теговblessing_3_v3_9_6.mq4MQL4 / MetaTrader 4 · 2 общих теговblessing_3_v3.9.6.15.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный советник для MetaTrader 5 реализует агрессивную систему сеточной торговли с использованием Мартингейла и хеджирования. Он открывает позиции покупки и продажи через заданные интервалы в пипсах, увеличивая размер лота по схеме Мартингейла на каждом последующем уровне сетки. Поддерживается двусторонняя сетка, хеджирование после определённого уровня, восстановление зоны при возврате цены в зону старта, а также пирамидирование на выигрышных позициях.

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

Встроена визуальная панель, отображающая дневную прибыль, плавающий P/L, уровни сетки, статус хеджа, количество сделок и процент выигрыша. На графике отрисовываются линии сетки. Основная торговая логика обрабатывается в OnTick, обновление панели и проверка аварийных условий — в OnTimer. Для управления ордерами и позициями используются классы CTrade и CPositionInfo.

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

НастройкаОписание
Daily Profit Target ($) (InpDailyProfitTarget) Дневная цель прибыли ($) — Целевая дневная прибыль в долларах. При достижении советник останавливает торговлю.
Max Daily Loss ($) - CRITICAL! (InpMaxDailyLoss) Максимальный дневной убыток ($) — Максимальный допустимый дневной убыток в долларах. При превышении все позиции закрываются.
Grid Profit Target ($) (InpGridProfitTarget) Цель прибыли сетки ($) — Цель прибыли сетки в долларах. При достижении все позиции закрываются.
Stop After Daily Target (InpStopAfterTarget) Остановка после достижения дневной цели — При активации советник останавливает торговлю после достижения дневной цели прибыли.
Initial Lot Size (InpInitialLot) Начальный размер лота — Начальный размер лота для первого уровня сетки.
Grid Distance (Pips) (InpGridDistance) Расстояние сетки (пипсы) — Расстояние между уровнями сетки в пипсах.
Maximum Grid Levels ⚠️ (InpMaxGridLevels) Максимальное количество уровней сетки — Максимальное количество уровней сетки.
Dynamic Grid (ATR-based) (InpUseDynamicGrid) Динамическая сетка (на базе ATR) — Включает динамическое расстояние сетки на основе ATR вместо фиксированного.
ATR Multiplier for Grid (InpGridATRMultiplier) Множитель ATR для сетки — Множитель ATR для расчёта динамического расстояния сетки.
Enable Martingale (InpUseMartingale) Включить Мартингейл — Включает Мартингейл — увеличение лота на каждом уровне сетки.
Martingale Multiplier ⚠️ (InpMartingaleMultiplier) Множитель Мартингейла — Множитель увеличения лота при каждом уровне Мартингейла.
Max Martingale Levels (InpMaxMartingaleLevels) Максимальное количество уровней Мартингейла — Максимальное количество уровней Мартингейла.
Progressive Martingale (InpUseProgressiveMartingale) Прогрессивный Мартингейл — Использует прогрессивный Мартингейл с поэтапным увеличением лота вместо простого возведения в степень.
Maximum Lot Size (Safety) (InpMaxLotSize) Максимальный размер лота (безопасность) — Максимально допустимый размер лота для ограничения рисков.
Enable Hedging (InpEnableHedging) Включить хеджирование — Включает или отключает систему хеджирования позиций.
Hedge After Grid Level (InpHedgeAfterLevel) Хедж после уровня сетки — Количество позиций в сетке, после которых открывается хедж-позиция в противоположном направлении.
Hedge Lot Multiplier (InpHedgeLotMultiplier) Множитель лота хеджа — Множитель лота для открытия хедж-позиции.
Close Hedge When Profitable (InpCloseHedgeOnProfit) Закрыть хедж при прибыли — Автоматически закрывает хедж-позицию, когда она становится прибыльной.
Dynamic Hedge Adjustment (InpDynamicHedging) Динамическая корректировка хеджа — Включает динамическую корректировку размера хедж-позиций.
Zone Recovery System (InpUseZoneRecovery) Система восстановления зоны — Включает систему восстановления зоны — перевод позиций в безубыток при возврате цены в зону старта.
Recovery Zone Size (Pips) (InpZoneSize) Размер зоны восстановления (пипсы) — Размер зоны восстановления в пипсах.
Zone Recovery Lot Multiplier (InpZoneRecoveryMultiplier) Множитель лота восстановления зоны — Множитель лота для позиций, открытых в рамках восстановления зоны.
Move to Breakeven in Zone (InpBreakevenZone) Перевод в безубыток в зоне — Включает автоматический перевод позиций в безубыток при восстановлении цены в зоне.
Both Buy & Sell Grids (InpDoubleSidedGrid) Сетка в обе стороны (покупка и продажа) — При активации открываются сетки покупок и продаж одновременно.
Add to Winners ⚠️ (InpPyramiding) Добавление к выигрышным позициям — Включает пирамидирование — добавление позиций к выигрышным.
Pyramid Distance (Pips) (InpPyramidDistance) Расстояние пирамиды (пипсы) — Расстояние в пипсах между уровнями пирамидирования.
Max Pyramid Levels (InpMaxPyramidLevels) Максимальное количество уровней пирамиды — Максимальное количество уровней пирамидирования.
Breakeven All Positions (InpUseBreakevenAll) Безубыток для всех позиций — Включает перевод всех позиций в безубыток при достижении заданной суммарной прибыли.
Breakeven at Total Profit ($) (InpBreakevenProfit) Безубыток при общей прибыли ($) — Суммарная прибыль в долларах, при достижении которой все позиции переводятся в безубыток.
Virtual Take Profit (InpUseVirtualTP) Виртуальный тейк-профит — Включает виртуальный тейк-профит — закрытие сетки при достижении цели прибыли сетки.
Close All in Profit (InpCloseInProfit) Закрытие всех в прибыли — При активации советник закрывает все позиции при достижении минимальной прибыли.
Min Profit to Close All ($) (InpMinProfitToClose) Минимальная прибыль для закрытия ($) — Минимальная общая прибыль в долларах для закрытия всех позиций при активированной опции закрытия в прибыли.
Trailing for Grid (InpTrailingGrid) Трейлинг для сетки — Включает трейлинг-стоп для сеточных позиций.
Trailing Distance (Pips) (InpTrailingDistance) Расстояние трейлинга (пипсы) — Расстояние в пипсах для трейлинг-стопа сетки.
Trade Only in Trend (InpTradeOnlyTrend) Торговля только в тренде — При активации советник открывает позиции только в направлении тренда, определённого скользящей средней.
Trend MA Period (InpTrendMAPeriod) Период MA тренда — Период скользящей средней для определения направления тренда.
Avoid High Volatility (InpAvoidHighVolatility) Избегать высокой волатильности — Включает или отключает фильтр высокой волатильности. При активации советник не торгует, если ATR превышает заданный порог.
Max ATR to Trade (InpMaxVolatilityATR) Максимальный ATR для торговли — Максимальное значение ATR в пипсах, при превышении которого советник приостанавливает торговлю.
Max Spread (Pips) (InpMaxSpread) Максимальный спред (пипсы) — Максимально допустимый спред в пипсах. При превышении советник не торгует.
Equity Stop Loss (InpUseEquityStop) Стоп-лосс по капиталу — Включает стоп-лосс по капиталу с заданным процентом падения.
Equity Stop % ⚠️ (InpEquityStopPercent) Процент стоп-лосса по капиталу — Процент падения капитала от начального уровня, при достижении которого происходит аварийное закрытие позиций.
Max Drawdown % (InpMaxDrawdownPercent) Максимальная просадка (%) — Максимальный процент просадки от пика капитала, при достижении которого происходит закрытие позиций.
Emergency Close Button (InpEmergencyCloseAll) Кнопка аварийного закрытия — Включает функцию аварийного закрытия всех позиций.
Max Floating Loss ($) (InpMaxFloatingLoss) Максимальный плавающий убыток ($) — Максимальный допустимый плавающий убыток в долларах. При превышении открываются новые позиции блокируются.
Use Time Filter (InpUseTimeFilter) Использовать фильтр времени — Включает фильтр по времени торговли, ограничивая открытие позиций заданным временным окном.
Start Hour (InpStartHour) Час начала — Час начала торгового окна (в сочетании с часом окончания).
End Hour (InpEndHour) Час окончания — Час окончания торгового окна (в сочетании с часом начала).
Avoid Weekend (InpAvoidWeekend) Избегать выходных — При активации советник не открывает новые позиции в выходные дни.
Show Dashboard (InpShowPanel) Показать панель — Включает отображение информационной панели с данными торговли.
Show Grid Lines (InpShowGridLines) Показать линии сетки — Включает отрисовку линий сетки на графике.
Send Alerts (InpSendAlerts) Отправлять уведомления — Включает отправку уведомлений при ключевых событиях торговли.
Buy Grid Color (InpBuyColor) Цвет сетки покупок — Цвет линий сетки покупок на графике.
Sell Grid Color (InpSellColor) Цвет сетки продаж — Цвет линий сетки продаж на графике.
Hedge Color (InpHedgeColor) Цвет хеджа — Цвет хедж-позиций на графике.
Magic Number Buy (InpMagicBuy) Магический номер покупок — Магический номер для идентификации позиций покупок.
Magic Number Sell (InpMagicSell) Магический номер продаж — Магический номер для идентификации позиций продаж.
Magic Number Hedge (InpMagicHedge) Магический номер хеджа — Магический номер для идентификации хедж-позиций.
Trade Comment (InpComment) Комментарий к сделке — Текстовый комментарий, добавляемый к каждой открытой сделке.
Получить полный код

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

#property version   "3.00"
#property strict

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>

/*
   ⚠️⚠️⚠️ CRITICAL WARNING ⚠️⚠️⚠️

   This EA uses MARTINGALE and GRID strategies which are EXTREMELY RISKY!

   - Can wipe out your account in unfavorable conditions
   - Requires large capital and proper risk management
   - Strong trending markets can cause catastrophic losses
   - Only use with money you can afford to LOSE COMPLETELY
   - Recommended: Demo test for 3+ months minimum
   - Professional traders only

   You have been warned!
*/

input group "=== ???? Profit & Risk Targets ==="
input double InpDailyProfitTarget = 200.0;        // Daily Profit Target ($)
input double InpMaxDailyLoss = 500.0;             // Max Daily Loss ($) - CRITICAL!
input double InpGridProfitTarget = 50.0;          // Grid Profit Target ($)
input bool   InpStopAfterTarget = true;           // Stop After Daily Target

input group "=== ???? Grid Settings ==="
input double InpInitialLot = 0.01;                // Initial Lot Size
input double InpGridDistance = 20.0;              // Grid Distance (Pips)
input int    InpMaxGridLevels = 10;               // Maximum Grid Levels ⚠️
input bool   InpUseDynamicGrid = true;            // Dynamic Grid (ATR-based)
input double InpGridATRMultiplier = 1.5;          // ATR Multiplier for Grid

input group "=== ???? Martingale Settings ==="
input bool   InpUseMartingale = true;             // Enable Martingale
input double InpMartingaleMultiplier = 1.5;       // Martingale Multiplier ⚠️
input int    InpMaxMartingaleLevels = 8;          // Max Martingale Levels
input bool   InpUseProgressiveMartingale = true;  // Progressive Martingale
input double InpMaxLotSize = 10.0;                // Maximum Lot Size (Safety)

input group "=== ???? Hedging System ==="
input bool   InpEnableHedging = true;             // Enable Hedging
input int    InpHedgeAfterLevel = 3;              // Hedge After Grid Level
input double InpHedgeLotMultiplier = 1.0;         // Hedge Lot Multiplier
input bool   InpCloseHedgeOnProfit = true;        // Close Hedge When Profitable
input bool   InpDynamicHedging = true;            // Dynamic Hedge Adjustment

input group "=== ???? Zone Recovery ==="
input bool   InpUseZoneRecovery = true;           // Zone Recovery System
input double InpZoneSize = 50.0;                  // Recovery Zone Size (Pips)
input double InpZoneRecoveryMultiplier = 2.0;     // Zone Recovery Lot Multiplier
input bool   InpBreakevenZone = true;             // Move to Breakeven in Zone

input group "=== ???? Aggressive Features ==="
input bool   InpDoubleSidedGrid = true;           // Both Buy & Sell Grids
input bool   InpPyramiding = false;               // Add to Winners ⚠️
input double InpPyramidDistance = 30.0;           // Pyramid Distance (Pips)
input int    InpMaxPyramidLevels = 3;             // Max Pyramid Levels
input bool   InpUseBreakevenAll = true;           // Breakeven All Positions
input double InpBreakevenProfit = 100.0;          // Breakeven at Total Profit ($)

input group "=== ???? Smart Features ==="
input bool   InpUseVirtualTP = true;              // Virtual Take Profit
input bool   InpCloseInProfit = true;             // Close All in Profit
input double InpMinProfitToClose = 30.0;          // Min Profit to Close All ($)
input bool   InpTrailingGrid = true;              // Trailing for Grid
input double InpTrailingDistance = 25.0;          // Trailing Distance (Pips)

input group "=== ???? Market Filters ==="
input bool   InpTradeOnlyTrend = false;           // Trade Only in Trend
input int    InpTrendMAPeriod = 100;              // Trend MA Period
input bool   InpAvoidHighVolatility = true;       // Avoid High Volatility
input double InpMaxVolatilityATR = 30.0;          // Max ATR to Trade
input double InpMaxSpread = 5.0;                  // Max Spread (Pips)

input group "=== ????️ Emergency Protection ==="
input bool   InpUseEquityStop = true;             // Equity Stop Loss
input double InpEquityStopPercent = 30.0;         // Equity Stop % ⚠️
input double InpMaxDrawdownPercent = 25.0;        // Max Drawdown %
input bool   InpEmergencyCloseAll = true;         // Emergency Close Button
input double InpMaxFloatingLoss = 300.0;          // Max Floating Loss ($)

input group "=== ⏰ Trading Times ==="
input bool   InpUseTimeFilter = false;            // Use Time Filter
input int    InpStartHour = 0;                    // Start Hour
input int    InpEndHour = 23;                     // End Hour
input bool   InpAvoidWeekend = true;              // Avoid Weekend

input group "=== ???? Visual & Alerts ==="
input bool   InpShowPanel = true;                 // Show Dashboard
input bool   InpShowGridLines = true;             // Show Grid Lines
input bool   InpSendAlerts = true;                // Send Alerts
input color  InpBuyColor = clrBlue;               // Buy Grid Color
input color  InpSellColor = clrRed;               // Sell Grid Color
input color  InpHedgeColor = clrOrange;           // Hedge Color

input group "=== ⚙️ System ==="
input int    InpMagicBuy = 111111;                // Magic Number Buy
input int    InpMagicSell = 222222;               // Magic Number Sell
input int    InpMagicHedge = 333333;              // Magic Number Hedge
input string InpComment = "GridMartingale";       // Trade Comment

CTrade trade;
CPositionInfo positionInfo;
CAccountInfo accountInfo;

double dailyProfit = 0.0;
datetime lastResetDate = 0;
bool tradingEnabled = true;
double startingBalance = 0.0;
double startingEquity = 0.0;

double lastBuyPrice = 0.0;
double lastSellPrice = 0.0;
int buyGridLevel = 0;
int sellGridLevel = 0;
double buyGridLots[];
double sellGridLots[];
ulong buyTickets[];
ulong sellTickets[];
ulong hedgeTickets[];

double buyZoneStart = 0.0;
double sellZoneStart = 0.0;
bool inBuyZone = false;
bool inSellZone = false;

int totalGridTrades = 0;
int gridWins = 0;
int gridLosses = 0;
double totalProfit = 0.0;
double maxDrawdown = 0.0;
double peakEquity = 0.0;

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

void OnDeinit(const int reason)
{
   EventKillTimer();
   ObjectsDeleteAll(0, "GridLine");
   ObjectsDeleteAll(0, "Panel");

   Print("╔═══════════════════════════════════════════════════════════╗");
   Print("║         AGGRESSIVE GRID MARTINGALE EA STOPPED             ║");
   Print("╚═══════════════════════════════════════════════════════════╝");
   Print("Statistics:");
   Print("  Total Grid Trades: ", totalGridTrades);
   Print("  Grid Wins: ", gridWins);
   Print("  Grid Losses: ", gridLosses);
   if(totalGridTrades > 0)
      Print("  Win Rate: ", NormalizeDouble((double)gridWins/totalGridTrades*100, 2), "%");
   Print("  Max Drawdown: $", NormalizeDouble(maxDrawdown, 2));
   Print("═══════════════════════════════════════════════════════════");
}

void OnTimer()
{
   if(InpShowPanel) {
      DrawAdvancedPanel();
   }

   if(InpShowGridLines) {
      DrawGridLines();
   }

   CheckEmergencyStop();
}

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

void CheckAndResetDaily()
{
   datetime currentDate = TimeCurrent();
   MqlDateTime dtCurrent;
   TimeToStruct(currentDate, dtCurrent);

   MqlDateTime dtLast;
   TimeToStruct(lastResetDate, dtLast);

   if(dtCurrent.day != dtLast.day || lastResetDate == 0) {
      dailyProfit = 0.0;
      tradingEnabled = true;
      lastResetDate = currentDate;
      startingBalance = accountInfo.Balance();
      startingEquity = accountInfo.Equity();
      peakEquity = startingEquity;

      buyGridLevel = 0;
      sellGridLevel = 0;
      lastBuyPrice = 0.0;
      lastSellPrice = 0.0;

      ArrayInitialize(buyGridLots, 0);
      ArrayInitialize(sellGridLots, 0);

      Print("═══════════════════════════════════════════════════════════");
      Print("NEW TRADING DAY - Grid Martingale EA");
      Print("Starting Balance: $", NormalizeDouble(startingBalance, 2));
      Print("═══════════════════════════════════════════════════════════");
   }
}

void UpdateDailyProfit()
{
   datetime today = TimeCurrent();
   MqlDateTime dtToday;
   TimeToStruct(today, dtToday);
   dtToday.hour = 0;
   dtToday.min = 0;
   dtToday.sec = 0;
   datetime dayStart = StructToTime(dtToday);

   dailyProfit = 0.0;

   HistorySelect(dayStart, TimeCurrent());
   int totalDeals = HistoryDealsTotal();

   for(int i = 0; i < totalDeals; i++) {
      ulong ticket = HistoryDealGetTicket(i);
      if(ticket > 0) {
         long magic = HistoryDealGetInteger(ticket, DEAL_MAGIC);
         if(magic == InpMagicBuy || magic == InpMagicSell || magic == InpMagicHedge) {
            if(HistoryDealGetInteger(ticket, DEAL_ENTRY) == DEAL_ENTRY_OUT) {
               double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
               double swap = HistoryDealGetDouble(ticket, DEAL_SWAP);
               double commission = HistoryDealGetDouble(ticket, DEAL_COMMISSION);

               double tradeResult = profit + swap + commission;
               dailyProfit += tradeResult;

               if(tradeResult > 0) {
                  gridWins++;
               } else {
                  gridLosses++;
               }
               totalGridTrades++;
            }
         }
      }
   }

   totalProfit = dailyProfit;
}

void UpdateFloatingProfit()
{
   double floatingProfit = 0.0;

   for(int i = 0; i < PositionsTotal(); i++) {
      if(positionInfo.SelectByIndex(i)) {
         long magic = positionInfo.Magic();
         if(magic == InpMagicBuy || magic == InpMagicSell || magic == InpMagicHedge) {
            if(positionInfo.Symbol() == _Symbol) {
               floatingProfit += positionInfo.Profit();
               floatingProfit += positionInfo.Swap();
            }
         }
      }
   }

   double currentEquity = accountInfo.Equity();
   if(currentEquity > peakEquity) {
      peakEquity = currentEquity;
   }

   double drawdown = peakEquity - currentEquity;
   if(drawdown > maxDrawdown) {
      maxDrawdown = drawdown;
   }
}

bool CheckAllSafetyConditions()
{

   if(InpStopAfterTarget && dailyProfit >= InpDailyProfitTarget) {
      if(tradingEnabled) {
         Print("???? DAILY TARGET REACHED: $", NormalizeDouble(dailyProfit, 2));
         CloseAllPositions();
         tradingEnabled = false;

         if(InpSendAlerts) {
            Alert("Daily profit target reached!");
         }
      }
      return false;
   }

   if(dailyProfit <= -InpMaxDailyLoss) {
      if(tradingEnabled) {
         Print("⛔ MAX DAILY LOSS HIT: $", NormalizeDouble(dailyProfit, 2));
         CloseAllPositions();
         tradingEnabled = false;

         if(InpSendAlerts) {
            Alert("Max daily loss reached! Trading stopped.");
         }
      }
      return false;
   }

   if(InpUseEquityStop) {
      double equityPercent = (accountInfo.Equity() / startingEquity - 1.0) * 100.0;
      if(equityPercent <= -InpEquityStopPercent) {
         Print("???? EQUITY STOP TRIGGERED: ", NormalizeDouble(equityPercent, 2), "%");
         CloseAllPositions();
         tradingEnabled = false;
         return false;
      }
   }

   double drawdownPercent = (maxDrawdown / peakEquity) * 100.0;
   if(drawdownPercent >= InpMaxDrawdownPercent) {
      Print("???? MAX DRAWDOWN REACHED: ", NormalizeDouble(drawdownPercent, 2), "%");
      CloseAllPositions();
      tradingEnabled = false;
      return false;
   }

   double floatingLoss = GetTotalFloatingProfit();
   if(floatingLoss < -InpMaxFloatingLoss) {
      Print("⚠️ Max floating loss reached: $", NormalizeDouble(floatingLoss, 2));

      return false;
   }

   if(!CheckSpread()) {
      return false;
   }

   if(InpUseTimeFilter && !IsWithinTradingHours()) {
      return false;
   }

   if(InpAvoidWeekend && IsWeekend()) {
      return false;
   }

   if(InpAvoidHighVolatility) {
      double atr = iATRGet(_Symbol, PERIOD_CURRENT, 14);
      double pipSize = GetPipSize();
      double atrPips = atr / pipSize;

      if(atrPips > InpMaxVolatilityATR) {
         return false;
      }
   }

   return tradingEnabled;
}

void CheckEmergencyStop()
{

}

bool ShouldOpenNewGrid()
{

   int totalPos = CountAllPositions();
   if(totalPos == 0) {
      return true;
   }

   double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   double gridDistance = GetDynamicGridDistance();

   if(InpDoubleSidedGrid || lastSellPrice == 0.0) {
      if(lastBuyPrice == 0.0 || 
         (currentPrice < lastBuyPrice - gridDistance && buyGridLevel < InpMaxGridLevels)) {
         return true;
      }
   }

   if(InpDoubleSidedGrid || lastBuyPrice == 0.0) {
      if(lastSellPrice == 0.0 || 
         (currentPrice > lastSellPrice + gridDistance && sellGridLevel < InpMaxGridLevels)) {
         return true;
      }
   }

   return false;
}

void OpenGridPositions()
{
   double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   double gridDistance = GetDynamicGridDistance();

   bool shouldBuy = false;
   bool shouldSell = false;

   if(InpDoubleSidedGrid) {

      if(lastBuyPrice == 0.0 || currentPrice < lastBuyPrice - gridDistance) {
         if(buyGridLevel < InpMaxGridLevels) {
            shouldBuy = true;
         }
      }

      if(lastSellPrice == 0.0 || currentPrice > lastSellPrice + gridDistance) {
         if(sellGridLevel < InpMaxGridLevels) {
            shouldSell = true;
         }
      }
   }
   else {

      if(InpTradeOnlyTrend) {
         int trend = GetTrendDirection();
         if(trend > 0) shouldBuy = true;
         else if(trend < 0) shouldSell = true;
      }
      else {

         if(lastBuyPrice == 0.0 

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

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

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

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

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

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

Стоимость полного кода
2 335,40₽ ≈ $28.54