VQ_EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «vq_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
VQ_EA — торговый советник для MetaTrader 4, использующий внешний индикатор VQ для генерации сигналов на покупку и продажу. Советник открывает и закрывает позиции на основании этих сигналов, поддерживая ордера BUY и SELL с возможностью установки стоп-лосса и тейк-профита.
Продукт предоставляет систему управления позициями с функцией трейлинг-стопа и безубытка, а также ведение торгового журнала в лог-файлах. Торговые параметры настраиваются через внешние переменные, включая размер лота, проскальзывание и магический номер.
Советник оснащён системой уведомлений: всплывающие алерты, звуковые сигналы и отправка электронной почты. Также реализована проверка новых баров для управления моментом входа и выхода из сделок.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Размер лота — Размер торгового лота. |
| StopLoss | Стоп-лосс — Уровень стоп-лосса в пунктах. |
| TakeProfit | Тейк-профит — Уровень тейк-профита в пунктах. |
| TradeAtCloseBar | Торговля при закрытии бара — Переключатель: при включении торговля осуществляется при закрытии бара, при выключении — немедленно. |
| TrailingStop | Трейлинг-стоп — Расстояние трейлинг-стопа в пунктах. |
| Trailing step (TrailingStep) | Шаг трейлинг-стопа — Шаг трейлинг-стопа в пунктах. |
| BreakEven | Безубыток — Уровень безубытка в пунктах для фиксации прибыли при достижении заданного расстояния от цены открытия. |
| MagicNumber | Магический номер — Магический номер для идентификации ордеров, управляемых советником. |
| Repeat | Количество повторений — Количество повторных уведомлений для каждого сигнала. |
| Periods | Период уведомлений — Период в секундах между повторными уведомлениями. |
| UseAlert | Всплывающие уведомления — Включает или отключает всплывающие уведомления о торговых событиях. |
| SendEmail | Отправка email — Включает или отключает отправку email-уведомлений о торговых событиях. |
| Slippage | Проскальзывание — Допустимое проскальзывание в пунктах. |
| Crash | Режим Crash — Переключатель режима индикатора Crash. |
| TimeFrame | Таймфрейм — Таймфрейм для расчёта индикатора. |
| Length | Длина — Параметр длины индикатора. |
| Method | Метод — Параметр метода расчёта индикатора. |
| Smoothing | Сглаживание — Параметр сглаживания индикатора. |
| Filter | Фильтр — Параметр фильтра индикатора. |
| RealTime | Реальное время — Включает или отключает режим реального времени индикатора. |
| Steady | Стабильный режим — Переключатель стабильного режима индикатора. |
| Color | Цвет — Включает или отключает цветовое отображение индикаторных сигналов. |
| Alerts | Уведомления — Включает или отключает индикаторные уведомления. |
| EmailON | Email уведомления — Включает или отключает отправку email-уведомлений от индикатора. |
| SignalPrice | Ценовые сигналы — Включает или отключает отображение ценовых сигналов индикатора. |
| SignalPriceBUY | Цвет сигнала покупки — Цвет отображения сигнала покупки. |
| SignalPriceSELL | Цвет сигнала продажи — Цвет отображения сигнала продажи. |
| CountBars | Количество баров — Количество баров для расчёта индикатора. |
Поиск по коду файла
#define OrderStr "VQ_EA"
extern double Lots = 0.1;
extern int StopLoss = 60;
extern int TakeProfit = 0;
extern bool TradeAtCloseBar = true;
extern int TrailingStop = 0;
extern int TrailingStep = 1; //Trailing step
extern int BreakEven = 0;
extern int MagicNumber=0;
extern int Repeat=3;
extern int Periods=5;
extern bool UseAlert=false;
extern bool SendEmail=true;
extern string
TradeLog="VQ_EA";
extern int Slippage = 3;
int mm = 0;
double Risk = 10;
int Crepeat=0;
int AlertTime=0;
double AheadTradeSec = 0;
double AheadExitSec = 0;
int TradeBar = 0;
double MaxTradeTime = 300;
extern string
Indicator_Setting = "---------- Indicator Setting";
extern bool Crash = false;
extern int TimeFrame = 0;
extern int Length = 5;
extern int Method = 3;
extern int Smoothing = 1;
extern int Filter = 5;
extern bool RealTime = true;
extern bool Steady = false;
extern bool Color = true;
extern bool Alerts = true;
extern bool EmailON = false;
extern bool SignalPrice = true;
extern color SignalPriceBUY = Yellow;
extern color SignalPriceSELL = Aqua;
extern int CountBars = 1485;
int
NumberOfTries = 5, //Number of tries to set, close orders;
RetryTime = 1;
double
Ilo = 0;
int DotLoc=7;
static int TradeLast=0;
string sound="alert.wav";
double sig_buy=0, sig_sell=0;
int Spread=0;
string filename="";
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
void SetText(int X1, double Y1, string TEXT_NAME, string TEXT_VALUE, int TEXT_COLOR) {
return;
if(ObjectFind(TEXT_NAME) != 0)
{
ObjectCreate(TEXT_NAME, OBJ_TEXT, 0, X1, Y1);
ObjectSet(TEXT_NAME,OBJPROP_COLOR,TEXT_COLOR);
ObjectSetText(TEXT_NAME, TEXT_VALUE, 10, "Wingdings", EMPTY);
}
else
{
ObjectMove(TEXT_NAME, 0, X1, Y1);
}
}
void Alerts(int _buy, int _sell, int _exitbuy, int _exitsell, double _op, double _sl, double _tp, int _ticket) {
string AlertStr="";
AlertStr="";
string CurDate="";
CurDate=TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES);
if (UseAlert)
{
if (_buy==1)
{
if (Crepeat==Repeat)
{
AlertTime=0;
}
if (Crepeat>0 && (CurTime()-AlertTime)>Periods)
{
if (_buy==1) {
AlertStr=AlertStr+"Buy @ "+DoubleToStr(_op,Digits)+"; SL: "+DoubleToStr(_sl,Digits)+"; TP: "+DoubleToStr(_tp,Digits)+" at "+CurDate+" Order:"+DoubleToStr(_ticket,0)+".";
Alert(Symbol()," ",Period(), ": ",AlertStr);
if (SendEmail)
{
SendMail(Symbol()+" "+Period()+ ": ",Symbol()+" "+Period()+": "+AlertStr);
}
Crepeat=Crepeat-1;
AlertTime=CurTime();
}
}
}
if (_sell==1)
{
if (Crepeat==Repeat)
{
AlertTime=0;
}
if (Crepeat>0 && (CurTime()-AlertTime)>Periods)
{
if (_sell==1) {
AlertStr=AlertStr+"Sell @ "+DoubleToStr(_op,Digits)+"; SL: "+DoubleToStr(_sl,Digits)+"; TP: "+DoubleToStr(_tp,Digits)+" at "+CurDate+" Order:"+DoubleToStr(_ticket,0)+".";
Alert(Symbol()," ",Period(), ": ",AlertStr);
if (SendEmail)
{
SendMail(Symbol()+" "+Period()+ ": ",Symbol()+" "+Period()+": "+AlertStr);
}
Crepeat=Crepeat-1;
AlertTime=CurTime();
}
}
}
if (_exitsell==1)
{
if (Crepeat==Repeat)
{
AlertTime=0;
}
if (Crepeat>0 && (CurTime()-AlertTime)>Periods)
{
if (_exitsell==1) {
AlertStr=AlertStr+" Close Sell @ "+DoubleToStr(_op,Digits)+" at "+CurDate+" Order:"+DoubleToStr(_ticket,0)+".";
Alert(Symbol()," ",Period(), ": ", AlertStr);
if (SendEmail)
{
SendMail(Symbol()+" "+Period()+ ": ",Symbol()+" "+Period()+": "+AlertStr);
}
Crepeat=Crepeat-1;
AlertTime=CurTime();
}
}
}
if (_exitbuy==1)
{
if (Crepeat==Repeat)
{
AlertTime=0;
}
if (Crepeat>0 && (CurTime()-AlertTime)>Periods)
{
if (_exitbuy==1) {
AlertStr=AlertStr+" Close Buy @ "+DoubleToStr(_op,Digits)+" at "+CurDate+" Order:"+DoubleToStr(_ticket,0)+".";
Alert(Symbol()," ",Period(), ": ",AlertStr);
if (SendEmail)
{
SendMail(Symbol()+" "+Period()+ ": ",Symbol()+" "+Period()+": "+AlertStr);
}
Crepeat=Crepeat-1;
AlertTime=CurTime();
}
}
}
if (_exitbuy==0 && _exitsell==0 && _buy==0 && _sell==0)
{
Crepeat=Repeat;
AlertTime=0;
}
}
return;
}
void subPrintDetails()
{
string sComment = "";
string sp = "----------------------------------------\n";
string NL = "\n";
string sDirection = "";
sComment = "VQ_EA v.1.0" + NL;
sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + " | ";
sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";
sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + NL;
sComment = sComment + sp;
sComment = sComment + "Lots=" + DoubleToStr(Ilo,2) + " | ";
sComment = sComment + "LastTrade=" + DoubleToStr(TradeLast,0) + NL;
sComment = sComment + "sig_buy=" + DoubleToStr(sig_buy,Digits) + NL;
sComment = sComment + "sig_sell=" + DoubleToStr(sig_sell,Digits) + NL;
sComment = sComment + sp;
Comment(sComment);
}
int CntOrd(int Type, int Magic) {
int _CntOrd;
_CntOrd=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol()==Symbol()) {
if ( (OrderType()==Type && (OrderMagicNumber()==Magic) || Magic==0)) _CntOrd++;
}
}
return(_CntOrd);
}
string ErrorDescription(int error_code)
{
string error_string;
switch(error_code)
{
case 0:
case 1: error_string="no error"; break;
case 2: error_string="common error"; break;
case 3: error_string="invalid trade parameters"; break;
case 4: error_string="trade server is busy"; break;
case 5: error_string="old version of the client terminal"; break;
case 6: error_string="no connection with trade server"; break;
case 7: error_string="not enough rights"; break;
case 8: error_string="too frequent requests"; break;
case 9: error_string="malfunctional trade operation"; break;
case 64: error_string="account disabled"; break;
case 65: error_string="invalid account"; break;
case 128: error_string="trade timeout"; break;
case 129: error_string="invalid price"; break;
case 130: error_string="invalid stops"; break;
case 131: error_string="invalid trade volume"; break;
case 132: error_string="market is closed"; break;
case 133: error_string="trade is disabled"; break;
case 134: error_string="not enough money"; break;
case 135: error_string="price changed"; break;
case 136: error_string="off quotes"; break;
case 137: error_string="broker is busy"; break;
case 138: error_string="requote"; break;
case 139: error_string="order is locked"; Показано первые 50% кода (символов: 22313)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.