MY MILLIONS EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «my millions ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот исходный файл представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматической торговли на одном выбранном инструменте и использует набор пользовательских настроек для управления рисками, сопровождения позиций и определения моментов входа в рынок.
В коде реализованы функции открытия и закрытия рыночных ордеров, а также сопровождения уже открытых позиций. Присутствуют механизмы управления капиталом, включая автоматический расчёт размера лота, ограничение просадки и защиту от потери связи. Предусмотрены настройки для управления временем торговли, выбора дней недели и учёта пятничных событий, связанных с публикацией экономических данных.
Советник использует технические индикаторы, такие как RSI, скользящие средние и стандартное отклонение, для определения направления сделок и расчёта расстояния между ордерами. Реализованы функции адаптивного RSI и пересечения MA с RSI, которые могут влиять на принятие торговых решений. Также имеется возможность реверса направления торговли и защиты от трендовых движений.
Настройки сгруппированы по категориям: параметры счёта, управление капиталом, торговые параметры, временные фильтры и защита. Советник выводит информационную панель на график с текущими показателями прибыли, состояния счёта и времени торговли.
Настройки программы
| Настройка | Описание |
|---|---|
| 0=Broker GMT. (GMTOffset) | Смещение GMT — Смещение времени брокера относительно GMT. 0 означает время брокера. |
| TradeComment | Комментарий к сделке — Комментарий, добавляемый к торговым ордерам. |
| MoneyManagementset | Настройки управления капиталом — Заголовок группы настроек для управления капиталом. |
| Portion of account you want to trade on this pair (Portion) | Доля счёта — Доля счёта, выделенная для торговли на данной паре. |
| Close all orders when negative Float is excessive. (UseEquityProtection) | Защита капитала — Закрывает все ордера при чрезмерном отрицательном плавающем убытке. |
| Percent of portion for max Float level. (FloatPercent) | Процент плавающего убытка — Процент от выделенной части для максимального уровня плавающего убытка. |
| Set to protect from internet loss (UsePowerOutSL) | Защита при потере связи — Устанавливает защиту на случай потери соединения с интернетом. |
| will autocalculate lot size, lot increment and profit target (MoneyMangement) | Управление капиталом — Если включено, размер лота, шаг увеличения и цель по прибыли рассчитываются автоматически. |
| equals 4% or .04 of account balance for base lot (MaximumRisk) | Максимальный риск — Максимальный риск в процентах от баланса для базового лота. |
| LotSize | Размер лота — Базовый размер лота для торговли. |
| must be set to .01 or greater (LotIncrement) | Шаг увеличения лота — Шаг увеличения лота. Должен быть не менее 0.01. |
| Tolerance for opening and closing of orders (Slippage) | Проскальзывание — Допустимое проскальзывание при открытии и закрытии ордеров. |
| _Piplite_EA_Set_ | Настройки торговых параметров — Заголовок группы настроек для торговых параметров. |
| All orders closed when this profit target amount (in dollars) is reached (ProfitTarget) | Цель по прибыли — Целевая сумма прибыли в долларах, при достижении которой все ордера закрываются. |
| Increase/decrease ProfitTarget when MoneyMangement=true (ProfitSkew) | Смещение цели прибыли — Увеличение или уменьшение цели по прибыли при включённом управлении капиталом. |
| 1= mixed mode, 2= global mode, 3= split mode, 1 is best (ProfitMode) | Режим прибыли — Режим фиксации прибыли: 1 — смешанный, 2 — глобальный, 3 — раздельный. |
| Will try to allow profit grow beyond ProfitTarget (ProfitTrailing) | Сопровождение прибыли — Позволяет прибыли расти сверх установленной цели. |
| Maximum percent of MaxProfit allowed to decrease before close all orders (MaxRetrace) | Максимальный откат прибыли — Максимальный процент снижения от максимальной прибыли, после которого все ордера закрываются. |
| true = will trade long when price is low and short and price is high. false = will trade long when p (ReverseDirection) | Реверс направления — Если включено, торговля ведётся в длинную сторону при низкой цене и в короткую при высокой. Если выключено — наоборот. |
| Adaptive RSI For Trade Entry (UseARSI) | Использовать адаптивный RSI — Включает использование адаптивного RSI для входа в рынок. |
| TF for ARSI (RSI_period) | Период RSI — Таймфрейм для адаптивного RSI. |
| length of ARSI (ima_bars) | Длина ARSI — Длина периода для адаптивного RSI. |
| level to trigger trade. Set to 0 for ATR to trigger entry (ARSI_trigger) | Уровень срабатывания ARSI — Уровень для запуска сделки. При значении 0 вход выполняется по ATR. |
| Helps to prevent multiple trades in Trending Market (Use_MARSI_Cross) | Использовать пересечение MA с RSI — Помогает предотвратить множественные сделки на трендовом рынке. |
| Best Period (RSIMA_MA_Period) | Период MA для RSI — Период скользящей средней для пересечения MA с RSI. |
| Best Period (RSIMA_RSI_Period) | Период RSI для MA — Период RSI для пересечения MA с RSI. |
| TrendProtect | Защита от тренда — Включает защиту от трендовых движений с использованием RSI и заданного окна. |
| Window to define ranging market (Window) | Окно диапазона — Окно для определения бокового рынка. |
| Helps reduce draw down by stopping new entries if number of seconds not passed (Use_Entry_Delay) | Использовать задержку входа — Помогает снизить просадку, запрещая новые входы до истечения заданного количества секунд. |
| Number of seconds to wait before re-entries (Minimum_Entry_Delay) | Минимальная задержка входа — Количество секунд ожидания перед повторным входом в рынок. |
| Spacing will be calculated using StDev (AutoSpacing) | Автоматический расчёт расстояния — Если включено, расстояние между ордерами рассчитывается с использованием стандартного отклонения. |
| TF for StDev (StDevTF) | Таймфрейм стандартного отклонения — Таймфрейм для расчёта стандартного отклонения. |
| lenght of StDev (StDevPer) | Период стандартного отклонения — Длина периода для расчёта стандартного отклонения. |
| mode of StDev - 0=SMA, 1=EMA, 2=SMMA, 3=LWMA (StDevMode) | Режим стандартного отклонения — Режим расчёта стандартного отклонения: 0 — SMA, 1 — EMA, 2 — SMMA, 3 — LWMA. |
| Minimum distance of orders placed against the trend of the initial order, In effect only if AutoSpac (Spacing) | Расстояние между ордерами — Минимальное расстояние между ордерами, размещаемыми против тренда начального ордера. Действует только при выключенном автоматическом расчёте. |
| Minimum distance of orders placed with the trend of the initial order (set to 1000 to disable ) (TrendSpacing) | Расстояние по тренду — Минимальное расстояние между ордерами, размещаемыми по тренду начального ордера. Установите 1000 для отключения. |
| _Day_Time_Set_ | Настройки дней и времени — Заголовок группы настроек для выбора дней и времени торговли. |
| UseTradeTime | Использовать время торговли — Включает ограничение торговли по времени. |
| TradeHourStart | Час начала торговли — Час начала торговли. |
| TradeHourEnd | Час окончания торговли — Час окончания торговли. |
| Sunday | Торговля в воскресенье — Разрешает торговлю в воскресенье. |
| Monday | Торговля в понедельник — Разрешает торговлю в понедельник. |
| Tuesday | Торговля во вторник — Разрешает торговлю во вторник. |
| Wednesday | Торговля в среду — Разрешает торговлю в среду. |
| Thursday | Торговля в четверг — Разрешает торговлю в четверг. |
| Friday | Торговля в пятницу — Разрешает торговлю в пятницу. |
| NFP_Friday | Торговля в пятницу NFP — Разрешает торговлю в первую пятницу месяца, когда публикуются данные по занятости в США. |
| DayPeriod | Период в днях — Период в днях для дополнительных расчётов. |
| hedgecarpan | Множитель хеджа — Множитель для хеджирования. |
| StopLoss | Стоп-лосс — Размер стоп-лосса в пунктах. |
Поиск по коду файла
#include <stdlib.mqh>
#include <stderror.mqh>
#define NL "\n"
extern string _Account_Settings_ = "Set your Account info";
extern int InitialAccount = 50;
extern int GMTOffset = 0; //0=Broker GMT.
extern string TradeComment = "";
extern string MoneyManagementset = "Set your trading tolerance";
extern double Portion = 1; // Portion of account you want to trade on this pair
extern bool UseEquityProtection = false; // Close all orders when negative Float is excessive.
extern double FloatPercent = 100; // Percent of portion for max Float level.
extern bool UsePowerOutSL = true; // Set to protect from internet loss
extern bool MoneyMangement = false; // will autocalculate lot size, lot increment and profit target
extern double MaximumRisk = 5; // equals 4% or .04 of account balance for base lot
extern double LotSize = 0.1;
extern double LotIncrement = 0; // must be set to .01 or greater
extern int Slippage = 5; // Tolerance for opening and closing of orders
extern string _Piplite_EA_Set_ = "Set trade parameters";
extern double ProfitTarget = 1; // All orders closed when this profit target amount (in dollars) is reached
extern double ProfitSkew = 50; // Increase/decrease ProfitTarget when MoneyMangement=true
extern int ProfitMode = 1; // 1= mixed mode, 2= global mode, 3= split mode, 1 is best
extern bool ProfitTrailing = true; // Will try to allow profit grow beyond ProfitTarget
extern double MaxRetrace = 2; // Maximum percent of MaxProfit allowed to decrease before close all orders
extern bool ReverseDirection = false; // true = will trade long when price is low and short and price is high. false = will trade long when price is high and short when price is low
extern bool UseARSI = false; // Adaptive RSI For Trade Entry
extern int RSI_period = 30; // TF for ARSI
extern int ima_bars = 10; // length of ARSI
extern double ARSI_trigger = 0.008; // level to trigger trade. Set to 0 for ATR to trigger entry
extern bool Use_MARSI_Cross = true; // Helps to prevent multiple trades in Trending Market
extern double RSIMA_MA_Period = 10; // Best Period
extern double RSIMA_RSI_Period = 14; // Best Period
extern bool TrendProtect = false;
extern double Window = 40.0; // Window to define ranging market
extern bool Use_Entry_Delay = true; // Helps reduce draw down by stopping new entries if number of seconds not passed
extern double Minimum_Entry_Delay = 300; // Number of seconds to wait before re-entries
extern bool AutoSpacing = true; // Spacing will be calculated using StDev
extern int StDevTF = 60; // TF for StDev
extern int StDevPer = 12; // lenght of StDev
extern int StDevMode = 3; // mode of StDev - 0=SMA, 1=EMA, 2=SMMA, 3=LWMA
extern int Spacing = 60; // Minimum distance of orders placed against the trend of the initial order, In effect only if AutoSpacing=false
extern int TrendSpacing = 1; // Minimum distance of orders placed with the trend of the initial order (set to 1000 to disable )
extern string _Day_Time_Set_ = "Set days and time to trade";
extern bool UseTradeTime = false;
extern int TradeHourStart = 0;
extern int TradeHourEnd = 24;
extern bool Sunday = true;
extern bool Monday = true;
extern bool Tuesday = true;
extern bool Wednesday = true;
extern bool Thursday = true;
extern bool Friday = true;
extern bool NFP_Friday = false;
extern double DayPeriod = 5;
extern double hedgecarpan =1.5;
extern double StopLoss =20;
extern double Baccount =100000000;
int Accounttype = 0;
int TradeStart;
int TradeEnd;
double stoploss = 0;
int slip = 0;
int Error = 0;
int Order = 0;
int Reference = 0;
double TickPrice = 0;
bool TradeShort = true; //Allow placing of sell ordes
bool TradeLong = true; //Allow placing of buy orders
int OpenOnTick = 0;
int MaxBuys = 0;
int MaxSells = 0;
double MaxProfit = 0;
int lotPrecision;
double POSL;
int count;
bool TradeAllowed = true;
double PortionBalance, PortionEquity;
int BrokerDecimal = 1;
string POSL_On = "No";
double buysl, sellsl;
int MaximumBuyOrders = 3;
int MaximumSellOrders = 3;
double SL = 20; // Performs better with no initial stoploss.
double GECAL=1;
double GECSAT;
double LastProfit=0,LastProfit1=0;
double LotFactor=1;
double LProfitTarget =50;
int init()
{
// код доступен только после оплаты
}
int deinit(){
Comment("Waiting for data tick.......................... ");
ObjectsDeleteAll(0, OBJ_LABEL);
return (0);
}
void CalculateLotPrecision(){
double lotstep=MarketInfo(Symbol(),MODE_LOTSTEP);
if(lotstep==1) lotPrecision=0;
if(lotstep==0.1) lotPrecision=1;
if(lotstep==0.01) lotPrecision=2;
if(lotstep==0.001) lotPrecision=3;
}
double AutoLot()
{
double lot;
lot=NormalizeDouble(Accounttype*((AccountBalance()/10000)*(MaximumRisk/100))/Portion,lotPrecision);
if(lot<0.01) lot=0.01;
if(lot < MarketInfo(Symbol(),MODE_MINLOT)) lot = MarketInfo(Symbol(),MODE_MINLOT);
if(lot>5.88 && Accounttype == 1) lot=5.88;
if(lot>2.94 && Accounttype == 10) lot=2.94;
return(lot);
}
void PlaceBuyOrder()
{
double BuyOrders, Lots;
double LowestBuy = 1000, HighestBuy;
TickPrice = 0;
RefreshRates();
for (Order = OrdersTotal() - 1; Order >= 0; Order--)
{
if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_BUY)
{
if (OrderOpenPrice() < LowestBuy) LowestBuy = OrderOpenPrice();
if (OrderOpenPrice() > HighestBuy) HighestBuy = OrderOpenPrice();
BuyOrders++;
}
}
}
Lots = NormalizeDouble(LotSize + (LotIncrement * BuyOrders * LotFactor), lotPrecision);
if(BuyOrders==0) Lots = NormalizeDouble(LotSize, lotPrecision);
if (Lots == 0) Lots = NormalizeDouble(LotSize, lotPrecision);
if(IsTradeAllowed()==true && (BuyOrders < MaximumBuyOrders))
{
if (SL == 0) stoploss = 0;
else stoploss = Ask - ((SL*BrokerDecimal) * Point);
if(-1 == OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, stoploss, 0, TradeComment, Reference, 0, Green))
Print("Error opening BUY order: " + ErrorDescription(GetLastError()) + " (C" + GetLastError() + ") Ask:" + Ask + " Slippage:" + Slippage);
else TickPrice = Close[0];
}
/*
Error = GetLastError();
if (Error != 0)
Print("Error opening BUY order: " + ErrorDescription(Error) + " (C" + Error + ") Ask:" + Ask + " Slippage:" + Slippage);
else
{
TickPrice = Close[0];
}
*/
}
void PlaceSellOrder()
{
double SellOrders, Lots;
double HighestSell, LowestSell = 1000;
TickPrice = 0;
RefreshRates();
for (Order = OrdersTotal() - 1; Order >= 0; Order--)
{
if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_SELL)
{
if (OrderOpenPrice() > HighestSell) HighestSell = OrderOpenPrice();
if (OrderOpenPrice() < LowestSell) LowestSell = OrderOpenPrice();
SellOrders++;
}
}
}
Lots = NormalizeDouble(LotSize + (LotIncrement * SellOrders*LotFactor), lotPrecision);
if(SellOrders==0) Lots = NormalizeDouble(LotSize, lotPrecision);
if (Lots == 0) Lots = NormalizeDouble(LotSize, lotPrecision);
if(IsTradeAllowed()==true && (SellOrders < MaximumSellOrders))
{
if (SL == 0) stoploss = 0;
else stoploss = Bid + ((SL*BrokerDecimal) * Point);
if(-1 == OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, stoploss, 0, TradeComment, Reference, 0, Red))
Print("Error opening SELL order: " + ErrorDescription(GetLastError()) + " (D" + GetLastError() + ") Bid:" + Bid + " Slippage:" + Slippage);
else TickPrice = Close[0];
}
/*
Error = GetLastError();
if (Error != 0)
Print("Error opening SELL order: " + ErrorDescription(Error) + " (D" + Error + ") Bid:" + Bid + " Slippage:" + Slippage);
else
{
TickPrice = Close[0];
}
*/
}
void CloseAllBuyProfit()
{
int spread=MarketInfo(Symbol(),MODE_SPREAD);
for(int i = OrdersTotal()-1; i >=0; i--)
{
OrderSelect(i, SELECT_BY_POS);
bool result = false;
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_BUY)
{
if (TimeCurrent()-OrderOpenTime() >=20) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Aqua );
}
}
return;
}
void CloseAllSellProfit()
{
int spread=MarketInfo(Symbol(),MODE_SPREAD);
for(int i = OrdersTotal()-1; i >=0; i--)
{
OrderSelect(i, SELECT_BY_POS);
bool result = false;
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_SELL)
{
if (TimeCurrent()-OrderOpenTime() >=20) result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Lime );
}
}
return;
}
int start()
{
// код доступен только после оплаты
}
if(MoneyMangement){LotSize=AutoLot();
if(LotIncrement>0) LotIncrement=LotSize;}
int Session = 1;
double TotalProfit=0;
double TotalOrders=0;
double TotalLots=0;
double MarginPercent;
static double LowMarginPercent = 10000000, LowEquity = 10000000;
double BuyPipTarget, SellPipTarget;
int SellOrders, BuyOrders;
double BuyPips, SellPips, BuyLots, SellLots;
double LowestBuy = 999, HighestBuy = 0.0001, LowestSell = 999, HighestSell = 0.0001, HighPoint, MidPoint, LowPoint;
double Profit = 0, BuyProfit = 0, SellProfit = 0, PosBuyProfit = 0, PosSellProfit = 0;
int HighestBuyTicket, LowestBuyTicket, HighestSellTicket, LowestSellTicket;
double HighestBuyProfit, LowestBuyProfit, HighestSellProfit, LowestSellProfit;
bool SELLme = false;
bool BUYme = false;
double Margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
string Message;
bool ProfitTargetReached = false;
datetime LastOrderDateTime = 0;
bool EntryAllowed = true; // can be used anywhere in start code to disable new entries for any reason
int timehr,timemin;
for (Order = OrdersTotal() - 1; Order >= 0; Order--)
{
if (OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Reference)
{
if (OrderOpenTime() > LastOrderDateTime)
LastOrderDateTime= OrderOpenTime();
Profit = OrderProfit() + OrderSwap() + OrderCommission();
if (OrderType() == OP_BUY)
{
if (OrderOpenPrice() >= HighestBuy)
{
HighestBuy = OrderOpenPrice();
HighestBuyTicket = OrderTicket();
HighestBuyProfit = Profit;
}
if (OrderOpenPrice() <= LowestBuy)
{
LowestBuy = OrderOpenPrice();
LowestBuyTicket = OrderTicket();
LowestBuyProfit = Profit;
}
BuyOrders++;
if (BuyOrders > MaxBuys) MaxBuys = BПоказано первые 50% кода (символов: 20167)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.