Doske_Scalping_EA_ver1
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «doske_scalping_ea_ver1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный товар представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник предназначен для автоматического скальпинга на финансовых рынках и использует комбинацию нескольких технических индикаторов для формирования сигналов на открытие и закрытие позиций. В основе логики работы лежит анализ скользящих средних различных периодов и осцилляторов QQE для определения направления тренда и момента входа в сделку.
Настройки программы
| Настройка | Описание |
|---|---|
| EA_MAGIC_NUM | Магический номер — Уникальный идентификатор ордеров советника для их последующей идентификации и управления |
| open day hour (iOpenHour) | Час начала торговли — Час начала торгового окна в течение дня |
| HoursToTrade | Длительность торгового окна — Количество часов, в течение которых советник активен в течение дня |
| Use275SMA | Использовать фильтр 275 SMA — Включает или выключает дополнительную фильтрацию сигналов по 275-периодной простой скользящей средней |
| QQE5Buffer | Буфер QQE 5 — Количество баров для подтверждения сигнала осциллятора QQE с периодом 5 |
| QQE60Buffer | Буфер QQE 60 — Количество баров для подтверждения сигнала осциллятора QQE с периодом 60 |
| Slippage | Допустимое проскальзывание — Максимально допустимое отклонение цены при открытии ордера в пунктах |
| TakeProfit | Тейк-профит — Уровень фиксации прибыли в пунктах от цены входа; ноль отключает уровень |
| StopLoss | Стоп-лосс — Уровень ограничения убытков в пунктах от цены входа; ноль отключает уровень |
| TrailingStop | Трейлинг-стоп — Расстояние для трейлинг-стопа в пунктах |
| MoneyManagement | Динамический расчёт лота — Включает автоматический расчёт размера лота на основе заданного процента риска |
| RiskPercent | Риск в процентах — Процент от баланса, который советник готов рисковать на одну сделку |
| Lots | Фиксированный лот — Размер лота для открытия сделки при отключённом динамическом расчёте |
| MaxLots | Максимальный лот — Верхний предел размера лота при динамическом расчёте |
| MinLots | Минимальный лот — Нижний предел размера лота при динамическом расчёте |
Поиск по коду файла
#include <stdlib.mqh>
#include <stderror.mqh>
#define ARRAY_SIZE 1000
extern int EA_MAGIC_NUM = 113142;
extern int iOpenHour = 6; // open day hour
extern int HoursToTrade = 24;
extern bool Use275SMA = true;
extern int QQE5Buffer = 5;
extern int QQE60Buffer = 5;
extern double Slippage = 3.0;
extern int TakeProfit = 0;
extern int StopLoss = 0;
extern int TrailingStop = 15;
extern bool MoneyManagement = false;
extern double RiskPercent = 1.0;
extern double Lots = 0.1;
extern double MaxLots = 15.0;
extern double MinLots = 0.01;
string msg = "";
int iCloseHour;
int DOSKE_MAGIC_NUM;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
void WriteComment()
{
msg = "";
/*
msg = msg + "GetGreenMA3Value: "+GetGreenMA3Value(0);
msg = msg +" \nGetGreenMA5Value: "+GetGreenMA5Value(0);
msg = msg + "\nGetGreenMA7Value: "+GetGreenMA7Value(0);
msg = msg + "\nGetGreenMA9Value: "+GetGreenMA9Value(0);
msg = msg +" \nGetGreenMA11Value: "+GetGreenMA11Value(0);
msg = msg + "\nGetGreenMA13Value: "+GetGreenMA13Value(0);
msg = msg + "\nGetPinkMA55Value: "+GetPinkMA55Value(0);
msg = msg + "\nGetQQE5BlueLineValue: "+GetQQE5BlueLineValue(0);
msg = msg + "\nGetQQE60BlueLineValue: "+GetQQE60BlueLineValue(0);
msg = msg + "\nGetQQE60RedLineValue: "+GetQQE60RedLineValue(0);
*/
Comment(msg);
}
double GetGreenMA3Value(int index)
{
return (iMA(NULL, 0, 3, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetGreenMA5Value(int index)
{
return (iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetGreenMA7Value(int index)
{
return (iMA(NULL, 0, 7, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetGreenMA9Value(int index)
{
return (iMA(NULL, 0, 9, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetGreenMA11Value(int index)
{
return (iMA(NULL, 0, 11, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetGreenMA13Value(int index)
{
return (iMA(NULL, 0, 13, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetPinkMA55Value(int index)
{
return (iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, index));
}
double GetYellowMA275Value(int index)
{
return (iMA(NULL, 0, 275, 0, MODE_SMA, PRICE_CLOSE, index));
}
double GetQQE5BlueLineValue(int index)
{
return (iCustom(NULL,0,"QQE_Alert_MTF_v5",5,0," ",false,false,false,false,false,false,"","","","","","","","","","","","","","","",false,false,false,false,false,false,"",CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,"",30,0,index));
}
double GetQQE60BlueLineValue(int index)
{
return (iCustom(NULL,0,"QQE_Alert_MTF_v5",60,0," ",false,false,false,false,false,false,"","","","","","","","","","","","","","","",false,false,false,false,false,false,"",CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,"",30,0,index));
}
double GetQQE60RedLineValue(int index)
{
return (iCustom(NULL,0,"QQE_Alert_MTF_v5",60,0," ",false,false,false,false,false,false,"","","","","","","","","","","","","","","",false,false,false,false,false,false,"",CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,CLR_NONE,"",30,1,index));
}
bool MAsSayBuy()
{
if(GetGreenMA3Value(1)>GetPinkMA55Value(1) && GetGreenMA5Value(1)>GetPinkMA55Value(1) && GetGreenMA7Value(1)>GetPinkMA55Value(1) && GetGreenMA9Value(1)>GetPinkMA55Value(1) && GetGreenMA11Value(1)>GetPinkMA55Value(1) && GetGreenMA13Value(1)>GetPinkMA55Value(1))
{
if (Use275SMA)
{
if(GetGreenMA3Value(1)>GetYellowMA275Value(1) && GetGreenMA5Value(1)>GetYellowMA275Value(1) && GetGreenMA7Value(1)>GetYellowMA275Value(1) && GetGreenMA9Value(1)>GetYellowMA275Value(1) && GetGreenMA11Value(1)>GetYellowMA275Value(1) && GetGreenMA13Value(1)>GetYellowMA275Value(1))
{
return (true);
}
}
else
{
return (true);
}
}
return (false);
}
bool MAsSaySell()
{
if(GetGreenMA3Value(1)<GetPinkMA55Value(1) && GetGreenMA5Value(1)<GetPinkMA55Value(1) && GetGreenMA7Value(1)<GetPinkMA55Value(1) && GetGreenMA9Value(1)<GetPinkMA55Value(1) && GetGreenMA11Value(1)<GetPinkMA55Value(1) && GetGreenMA13Value(1)<GetPinkMA55Value(1))
{
if (Use275SMA)
{
if(GetGreenMA3Value(1)<GetYellowMA275Value(1) && GetGreenMA5Value(1)<GetYellowMA275Value(1) && GetGreenMA7Value(1)<GetYellowMA275Value(1) && GetGreenMA9Value(1)<GetYellowMA275Value(1) && GetGreenMA11Value(1)<GetYellowMA275Value(1) && GetGreenMA13Value(1)<GetYellowMA275Value(1))
{
return (true);
}
}
else
{
return (true);
}
}
return (false);
}
bool QQE5SaysBuy()
{
if(GetQQE5BlueLineValue(1)>50)
{
for (int i=2; i<=2+QQE5Buffer; i++)
{
if(GetQQE5BlueLineValue(i)<50)
{
return (true);
}
}
}
return (false);
}
bool QQE5SaysSell()
{
if(GetQQE5BlueLineValue(1)<50)
{
for (int i=2; i<=2+QQE5Buffer; i++)
{
if(GetQQE5BlueLineValue(i)>50)
{
return (true);
}
}
}
return (false);
}
bool QQE60SaysBuy()
{
if(GetQQE60BlueLineValue(1)>GetQQE60RedLineValue(1))
{
for (int i=2; i<=2+QQE60Buffer; i++)
{
if(GetQQE60BlueLineValue(i)<GetQQE60RedLineValue(i))
{
return (true);
}
}
}
return (false);
}
bool QQE60SaysSell()
{
if(GetQQE60BlueLineValue(1)<GetQQE60RedLineValue(1))
{
for (int i=2; i<=2+QQE60Buffer; i++)
{
if(GetQQE60BlueLineValue(i)>GetQQE60RedLineValue(i))
{
return (true);
}
}
}
return (false);
}
bool ShouldBuy()
{
if (MAsSayBuy() && QQE5SaysBuy() && QQE60SaysBuy())
{
return (true);
}
return (false);
}
bool ShouldSell()
{
if (MAsSaySell() && QQE5SaysSell() && QQE60SaysSell())
{
return (true);
}
return (false);
}
double PositionSizeToOpen() // only works for JPY, CHF, CAD, GBP, NZD, AUD and USD secondary based pairs (apologies to exotic pairs traders)
{
if (MoneyManagement && StopLoss != 0)
{
double riskDollars = (AccountBalance()/100)*RiskPercent;
double PositionSize;
double USDCHFBid, USDJPYBid, USDCADBid, GBPUSDBid, AUDUSDBid, NZDUSDBid;
if (StringSubstr(Symbol(), 3, 3)=="USD")
{
PositionSize = riskDollars / (StopLoss * Point) / 100000;
}
if (StringSubstr(Symbol(), 3, 3)=="CHF")
{
USDCHFBid = iClose("USDCHF",PERIOD_D1,1); // get yesterday's exchange rate between USD and CHF
PositionSize = riskDollars / (StopLoss * Point * (1/USDCHFBid)) / 100000;
}
if (StringSubstr(Symbol(), 3, 3)=="JPY")
{
USDJPYBid = iClose("USDJPY",PERIOD_D1,1); // get yesterday's exchange rate between USD and JPY
PositionSize = riskDollars / (StopLoss * Point * (1/USDJPYBid)) / 100000;
}
if (StringSubstr(Symbol(), 3, 3)=="CAD")
{
USDCADBid = iClose("USDCAD",PERIOD_D1,1); // get yesterday's exchange rate between USD and CAD
PositionSize = riskDollars / (StopLoss * Point * (1/USDCADBid)) / 100000;
}
if (StringSubstr(Symbol(), 3, 3)=="GBP")
{
GBPUSDBid = iClose("GBPUSD",PERIODПоказано первые 50% кода (символов: 10791)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.