Trix_EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trix_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Trix_EA — советник для MetaTrader 4, использующий пользовательский индикатор #MTF_Trix для генерации торговых сигналов на покупку и продажу. Советник открывает позиции по цене Bid/Ask с заданными параметрами StopLoss и TakeProfit, а также поддерживает многократные попытки отправки ордеров с логированием в файл.
В советнике реализованы функции управления позициями: TrailingStop с настраиваемым шагом, BreakEven для переноса стоп-лосса в безубыток, а также система уведомлений с возможностью отправки email-оповещений. Торговля может быть ограничена по времени и таймфрейму.
Настройки включают объём позиции, уровни стоп-лосса и тейк-профита, параметры индикатора TRIX, магический номер для фильтрации ордеров и параметры алертов. Советник работает на языке MQL4 в среде MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| Lots | Lots — Размер лота для открытия позиций. |
| StopLoss | StopLoss — Стоп-лосс в пунктах для открытых позиций. |
| TakeProfit | TakeProfit — Тейк-профит в пунктах для открытых позиций. |
| TradeAtCloseBar | TradeAtCloseBar — Переключатель: торговля в момент закрытия бара или в процессе его формирования. |
| TrailingStop | TrailingStop — Расстояние trailing stop в пунктах. |
| Trailing step (TrailingStep) | TrailingStep — Шаг корректировки стоп-лосса при использовании TrailingStop. |
| BreakEven | BreakEven — Уровень безубытка в пунктах. При достижении указанной прибыли стоп-лосс перемещается к цене открытия позиции. |
| MagicNumber | MagicNumber — Магический номер для идентификации ордеров, управляемых советником. |
| Repeat | Repeat — Количество повторных уведомлений о событиях. |
| Periods | Periods — Период между повторными уведомлениями в секундах. |
| UseAlert | UseAlert — Переключатель всплывающих уведомлений о торговых событиях. |
| SendEmail | SendEmail — Переключатель отправки email-уведомлений при торговых событиях. |
| Slippage | Slippage — Допустимое проскальгивание цены при выполнении ордеров. |
| TimeFrame | TimeFrame — Таймфрейм для расчёта индикатора TRIX. |
| TRIX_Period | TRIX_Period — Период индикатора TRIX. |
| Signal_Period | Signal_Period — Период сигнальной линии индикатора TRIX. |
| Signals | Signals — Переключатель отображения сигналов индикатора. |
| CountBars | CountBars — Количество баров для расчёта индикатора. |
Поиск по коду файла
#define OrderStr "Trix_EA"
extern double Lots = 0.1;
extern int StopLoss = 50;
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="Trix_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 int TimeFrame = 0;
extern int TRIX_Period = 13;
extern int Signal_Period = 8;
extern bool Signals = true;
extern int CountBars = 1500;
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 = "Trix_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"; break;
case 140: error_string="long positions only allowed"; break;
case 141: error_string="too many requests"; break;
case 145: error_Показано первые 50% кода (символов: 21915)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.