macd_ma ea (for fixing) 2.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «macd_ma ea (for fixing) 2.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник использует индикатор MACD и скользящие средние (EMA) для определения направления торговли. Сигналы на открытие и закрытие позиций формируются на основе совпадения направлений MACD и скользящей средней на нескольких таймфреймах.
Советник поддерживает управление торговыми сессиями с пятью настраиваемыми временными интервалами, частичное закрытие лотов по уровням прибыли, скользящий стоп-лосс, скрытый стоп-лосс и фиксированный стоп-лосс. Также доступна проверка спреда на максимальный допустимый уровень и фильтрация ордеров по магическому номеру.
В качестве торговых операций используются стандартные функции MetaTrader 4: OrderSend для открытия позиций, OrderClose для закрытия и OrderModify для изменения стоп-лосса и тейк-профита. Советник может отправлять email-уведомления и воспроизводить звуковые сигналы при открытии сделок.
Настройки программы
| Настройка | Описание |
|---|---|
| Expert_Name | Имя советника — Имя советника, отображаемое в заголовке |
Поиск по коду файла
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern string Expert_Name = "---- MACD Moving Av EA by TF ----";
extern string EA_Comment = "MACD MA" ;
extern int MagicNumber = 9219;
extern bool PlaySound_OnTrade_Open = False;
extern string SoundFile = "abc.wav" ;
extern bool ShowComments = True;
extern bool SignalMail = False;
extern int Maximum_Spread = 8;
bool EachTickMode = True;
extern double TickMultiplier = 1.00;
extern string TickMultiplier1 = "TickMultiplier is the value of each Tick Move" ;
extern string TickMultiplier2 = "e.g. One tick move from 1665.25 to 1665.50= 25" ;
extern string TickMultiplier3 = "therefore TickMultiplierwill be = 25" ;
extern string TickMultiplier4 = "eg. Move from 1.9005 to 1.9006 = 1" ;
extern string TickMultiplier5 = "eg. Move from 5000 to 5001 = 1 " ;
extern string TradingParameters = "------Trading Parameters -------" ;
extern double Lots = 1.00;
bool StopLossMode = false;
extern int HardStopLoss = 300;
bool TakeProfitMode = false;
extern int TakeProfit = 250;
extern int Slippage = 3;
double MATrendPeriod = 8;
double MATrendPeriod_2 = 15;
extern bool Close_Lots_Mode = True;
extern string DistributeAbove_Traded_Lots = "Fully distribute above Lots quantity " ;
extern double First_Close = 0.99 ;
extern double Second_Close = 0.01 ;
extern double Third_Close = 0.00 ;
extern int First_Close_TP = 30 ;
extern int Second_Close_TP = 250 ;
extern int Third_Close_TP = 350 ;
extern bool StealthStopLossMode = True;
extern int StealthStopLoss = 125;
bool TrailingStopMode = false;
int TrailingStop = 250;
bool MoveStopOnce = True;
extern int MoveStopWhenProfit = 20;
extern int MoveStopToProfitOf = 1;
bool CloseExcept = True;
extern double QtyForStopExcept = 0.01;
extern int StopWhenProfit = 12;
extern int SlippageForAbove = 3;
extern string IMPORTANT = "Above Slippage should ATLEAST be 1 ";
extern bool MoveStopOnceWhenQty = True;
extern double MoveStopWhenQty = 0.01;
extern int MoveStopBy = 500;
extern string Trading_Hour_Parameters="--Trading Hour Parameters--";
extern string Trading_Hour_Parameters_="Use Hours according to your own Broker";
int UseTradingHours = 1;
extern string Session1="Trade Session 1";
int TradeSession1 = 1;
extern int Session1Start = 230; // Start trades after time
extern int Session1Stop = 0930; // Stop trading after time
extern string Session2="Trade Session 2";
int TradeSession2 = 1;
extern int Session2Start = 0930; // Start trades after time
extern int Session2Stop = 1400; // Stop trading after time
extern string Session3="Trade Session 3";
int TradeSession3 = 1;
extern int Session3Start = 1400; // Start trades after time
extern int Session3Stop = 1900; // Stop trading after time
extern string Session4="Trade Session 4";
int TradeSession4 = 0;
extern int Session4Start = 1900; // Start trades after time
extern int Session4Stop = 2000; // Stop trading after time
extern string Session5="Trade Session 5";
int TradeSession5 = 1;
extern int Session5Start = 2000; // Start trades after time
extern int Session5Stop = 2359; // Stop trading after time
bool YesStop;
double myPoint;
int BarCount;
int Current;
bool TickCheck = False;
int init() {
// код доступен только после оплаты
}
int deinit() {
return(0);
}
int start() {
// код доступен только после оплаты
}
bool CheckOutsideSession(int SessionStart, int SessionStop, int ct)
{
if (SessionStart < SessionStop)
{
if (ct >= SessionStart && ct <= SessionStop) return (false); else return(true);
}
else
{
if (ct > SessionStop && ct < SessionStart) return (true); else return(false);
}
}
bool CheckTradingTimes()
{
bool StopTrading;
int ct;
ct = Hour() * 100 + Minute();
StopTrading = true;
if (TradeSession1 == 1)
{
StopTrading = CheckOutsideSession(Session1Start, Session1Stop, ct);
}
if (StopTrading == true)
{
if (TradeSession2 == 1)
{
StopTrading = CheckOutsideSession(Session2Start, Session2Stop, ct);
}
}
if (StopTrading == true)
{
if (TradeSession3 == 1)
{
StopTrading = CheckOutsideSession(Session3Start, Session3Stop, ct);
}
}
if (StopTrading == true)
{
if (TradeSession4 == 1)
{
StopTrading = CheckOutsideSession(Session4Start, Session4Stop, ct);
}
}
if (StopTrading == true)
{
if (TradeSession5 == 1)
{
StopTrading = CheckOutsideSession(Session5Start, Session5Stop, ct);
}
}
return(StopTrading);
}
int CalculateCurrentOrders()
{
int buys = 0, sells = 0, num = 0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!= Symbol()) continue;
if (OrderMagicNumber()!= MagicNumber) continue;
if(OrderType() == OP_BUY) buys++;
if(OrderType() == OP_SELL) sells++;
}
num = buys + sells;
return(num);
}
void ClosePartialLots()
{
int Total;
double QtyOrders = 0.00;
double QtyOrderSells = 0.00;
double _First_Close_TP_ = First_Close_TP*TickMultiplier;
double _Second_Close_TP_ = Second_Close_TP*TickMultiplier;
double _Third_Close_TP_ = Third_Close_TP*TickMultiplier;
double _Slippage_ = Slippage*TickMultiplier;
Total = OrdersTotal();
bool IsTrade = False;
for (int i = Total - 1; i >= 0; i --) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != MagicNumber) continue;
if(OrderType() <= OP_SELL)
{
IsTrade = True;
if(OrderType() == OP_BUY) QtyOrders = OrderLots();
if(OrderType() == OP_SELL) QtyOrderSells = OrderLots();
if(OrderType() == OP_BUY) {
if(QtyOrders == Lots)
{
if(Bid - OrderOpenPrice() > Point * _First_Close_TP_)
{
OrderClose(OrderTicket(), First_Close , Bid, _Slippage_, MediumSeaGreen);
continue;
}
}
if( ( (QtyOrders - Third_Close) > 0.00 )
&& (QtyOrders - (Second_Close + Third_Close ) <=Показано первые 50% кода (символов: 22924)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.