Aggressive Grid Martingale EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «aggressivegridmartingaleea_5400032011547083593.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник для 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.