Magix Trigger on Grid
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «obos divergence_fxts_fastmod.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник для MetaTrader 4 реализует сеточную торговую систему с множественными уровнями ордеров. При формировании торгового сигнала на основе комбинации индикаторов — канала Envelope, скользящей средней и пользовательского индикатора Derivative Oscillator — советник открывает серию ордеров с последующим увеличением лотов по сетке.
Встроенная система фильтрации новостного рынка на основе экономического календаря позволяет приостанавливать торговлю вокруг важных событий. Также реализована проверка спреда, хеджирование позиций и режим скрытия ордеров от сервера. При достижении целевой прибыли, заданной в денежном эквиваленте, все позиции закрываются.
Советник поддерживает гибкую настройку стартового лота, количества уровней сетки, шага и инкремента лотов, а также параметров технических индикаторов. Хеджирование и управление лотами позволяют адаптировать торговую стратегию под различные рыночные условия.
Настройки программы
| Настройка | Описание |
|---|---|
| comm1 | Заголовок фильтра новостей — Текстовый параметр для заголовка группы настроек фильтрации новостного рынка |
| NewsFilter | Фильтр новостей — Включает или отключает фильтрацию торговых сигналов по экономическим новостям |
| MinimumImpact | Минимальный уровень влияния — Минимальный уровень влияния новостей для активации фильтра |
| MinsBeforeNews | Минуты до новости — Количество минут до события, в течение которых торговля блокируется |
| MinsAfterNews | Минуты после новости — Количество минут после события, в течение которых торговля блокируется |
| comm2 | Заголовок настроек спреда — Текстовый параметр для заголовка группы настроек максимального спреда |
| MaxSpread | Максимальный спред — Максимально допустимый спред для открытия позиций |
| Trade_Lot_Settings | Заголовок настроек лотов — Текстовый параметр для заголовка группы настроек размера лотов |
| start_lot | Стартовый лот — Размер стартового лота для первого ордера в сетке |
| range | Шаг сетки — Расстояние между уровнями сетки в пунктах |
| level | Количество уровней — Максимальное количество уровней ордеров в сетке |
| increment | Инкремент лота — Фиксированное увеличение лота при добавлении каждого уровня сетки |
| tp_in_money | Тейк-профит в деньгах — Целевая прибыль в денежном эквиваленте для закрытия всех позиций |
| Envelope | Настройки канала Envelope — Текстовый параметр для настройки канала Envelope |
| moving average length (EnvelopePeriod) | Период Envelope — Длина скользящей средней для расчёта канала Envelope |
| 0=sma,1=ema,2=smma,3=lwma. (EnvMaMethod) | Метод скользящей средней Envelope — Метод расчёта скользящей средней для канала Envelope (0=SMA, 1=EMA, 2=SMMA, 3=LWMA) |
| shift relative to current bar indicator data is posted (Shift) | Сдвиг Envelope — Сдвиг данных индикатора канала Envelope относительно текущего бара |
| envelope width (EnvelopeDeviation) | Отклонение Envelope — Ширина канала Envelope |
| Moving_Average | Настройки скользящей средней — Текстовый параметр для настройки индикатора скользящей средней |
| MAPeriod | Период скользящей средней — Период расчёта скользящей средней |
| MAMethod | Метод скользящей средней — Метод расчёта скользящей средней |
| MAShift | Сдвиг скользящей средней — Сдвиг скользящей средней относительно текущего бара |
| Derivative_Oscillator_Settings | Настройки осциллятора — Текстовый параметр для настройки пользовательского индикатора Derivative Oscillator |
| RSIDer | Период RSI осциллятора — Период расчёта RSI для пользовательского индикатора Derivative Oscillator |
| limit | Граница осциллятора — Количество баров для расчёта пользовательского индикатора Derivative Oscillator |
| Comments | Комментарии к ордерам — Текст комментариев, присваиваемый открытым ордерам |
| magic | Магический номер — Магический номер для идентификации ордеров советника |
Поиск по коду файла
#define buy -2
#define sell 2
extern string comm1 = "????????? ?????? (????????? ????????? FFCal):";
extern bool NewsFilter = TRUE;
extern int MinimumImpact = 3;
extern int MinsBeforeNews = 60;
extern int MinsAfterNews = 30;
extern string comm2 = "???????????-?????????? ?????:";
extern double MaxSpread = 1.2;
extern string Trade_Lot_Settings = "????????? ????????:";
extern double start_lot=0.01;
extern double range=25;
extern int level=5;
bool lot_multiplier=false;
double multiplier=2.0;
extern double increment=0.01;
bool use_sl_and_tp=false;
double sl=60;
double tp=30;
extern double tp_in_money=1.0;
bool stealth_mode=true;
extern string Envelope = "Set The Channel";
extern int EnvelopePeriod =38; //moving average length
extern int EnvMaMethod =0; //0=sma,1=ema,2=smma,3=lwma.
extern int Shift =0; //shift relative to current bar indicator data is posted
extern double EnvelopeDeviation =0.05; //envelope width
extern string Moving_Average = "Set The Breakout";
extern int MAPeriod=10;//
extern int MAMethod=0;//
extern int MAShift=0;
int MAPrice=0;
extern string Derivative_Oscillator_Settings= "Set The Trigger";
extern int RSIDer=27;
extern int limit =240;
bool hedge=false;
int hedge_start=1;
double h_lot_factor=0.5;
double h_tp_factor=1.0;
double lot_multiplier_2=1.5;
int lot_multi_2_level=3;
extern string Comments = "OB++";
extern int magic=999222;
double pt;
double minlot;
double stoplevel;
int prec=0;
int a=0;
int ticket=0;
datetime NewBar=0;
int dd;
double s_lot,s_lot2,hf,h_tp,lm_1,lm_2,lm_2_level,O_equity;
bool Close_All; // Part of Close_All Inhibit ...
int O_rst=0;
string opt="NULL";
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
if(Time[0]==NewBar) return(0); NewBar=Time[0];
bool ContinueTrading=true;
if(NewsFilter && !IsTesting() && !IsOptimization())
{
static int PrevMinute=-1;
int MinSinceNews=iCustom(NULL,0,"FFCal",true,true,false,true,true,1,0);
int MinToNews=iCustom(NULL,0,"FFCal",true,true,false,true,true,1,1);
int ImpactSinceNews=iCustom(NULL,0,"FFCal",true,true,false,true,true,2,0);
int ImpactToNews=iCustom(NULL,0,"FFCal",true,true,false,true,true,2,1);
if(Minute()!=PrevMinute)
{
PrevMinute=Minute();
if((MinToNews<=MinsBeforeNews && ImpactToNews>=MinimumImpact) || (MinSinceNews<=MinsAfterNews && ImpactSinceNews>=MinimumImpact))
ContinueTrading=false;
}
}
int T_cnt=0,b_cnt=0,s_cnt=0,h_cnt,O_cnt=0,OOT,FOOT; // Close_All Inhibit ...
bool s_hedge=false,b_hedge=false; string FOT="0";
for(int cnt=0; cnt<=OrdersTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()<2)
{
T_cnt+=1; OOT=OrderOpenTime();
if(OrderType()==0){ b_cnt+=1; } if(OrderType()==1){ s_cnt+=1; }
if(T_cnt==1 || OOT<FOOT){ FOOT=OOT; FOT="B"; if(OrderType()==1){ FOT="S"; } }
}
}
if(FOT=="B")
{
O_cnt=b_cnt; h_cnt=s_cnt; opt="BUY"; if(hedge==true && b_cnt>=hedge_start-1){ s_hedge=true; }
}
if(FOT=="S")
{
O_cnt=s_cnt; h_cnt=b_cnt; opt="SELL"; if(hedge==true && s_cnt>=hedge_start-1){ b_hedge=true; }
}
multiplier=lm_1; if(lm_2>0 && O_cnt>=lm_2_level-1){ multiplier=lm_2; }
if(T_cnt==0){ Close_All=false; }
if(O_cnt==0 && a==0 && h_cnt==0) // substituted total() with O_cnt ...
{
if(signal()==buy && Maxspread() && ContinueTrading) // added close_all and hedge
{
if(stealth_mode)
{
if(use_sl_and_tp){ s_lot=start_lot; ticket=OrderSend(Symbol(),0,s_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,Comments,magic,0,Blue); }
else { s_lot=start_lot; ticket=OrderSend(Symbol(),0,s_lot,Ask,3, 0, 0,Comments,magic,0,Blue); }
}
else
{
if(use_sl_and_tp)
{
s_lot=start_lot;
if(OrderSend(Symbol(),0,start_lot,Ask,3,Ask-sl*pt,Ask+tp*pt,Comments,magic,0,Blue)>0)
{
for(int i=1; i<level; i++)
{
if(lot_multiplier){ s_lot=NormalizeDouble(start_lot*MathPow(multiplier,i),prec); ticket=OrderSend(Symbol(),2,s_lot,Ask-(range*i)*pt,3,(Ask-(range*i)*pt)-sl*pt,(Ask-(range*i)*pt)+tp*pt,Comments,magic,0,Blue); }
else { s_lot=NormalizeDouble(start_lot+increment*i,prec); ticket=OrderSend(Symbol(),2,s_lot,Ask-(range*i)*pt,3,(Ask-(range*i)*pt)-sl*pt,(Ask-(range*i)*pt)+tp*pt,Comments,magic,0,Blue); }
}
}
}
else
{
s_lot=start_lot;
if(OrderSend(Symbol(),0,start_lot,Ask,3,0,0,Comments,magic,0,Blue)>0)
{
for(i=1; i<level; i++)
{
if(lot_multiplier){ s_lot=NormalizeDouble(start_lot*MathPow(multiplier,i),prec); ticket=OrderSend(Symbol(),2,s_lot,Ask-(range*i)*pt,3,0,0,Comments,magic,0,Blue); }
else { s_lot=NormalizeDouble(start_lot+increment*i,prec); ticket=OrderSend(Symbol(),2,s_lot,Ask-(range*i)*pt,3,0,0,Comments,magic,0,Blue); }
}
}
}
}
if(s_hedge==true){ ticket=OrderSend(Symbol(),1,s_lot*hf,Bid,3,0,Bid-h_tp,"Hedge",magic,0,Red); }
}
if(signal()==sell && Maxspread() && ContinueTrading) // added close_all and hedge
{
if(stealth_mode)
{
if(use_sl_and_tp){ s_lot=start_lot; ticket=OrderSend(Symbol(),1,s_lot,Bid,3,Bid+sl*pt,Bid-tp*pt,Comments,magic,0,Red); }
else { s_lot=start_lot; ticket=OrderSend(Symbol(),1,s_lot,Bid,3, 0, 0,Comments,magic,0,Red); }
}
else
{
if(use_sl_and_tp)
{
s_lot=start_lot;
if(OrderSend(Symbol(),1,start_lot,Bid,3,Bid+sl*pt,Bid-tp*pt,Comments,magic,0,Red)>0)
{
for(i=1; i<level; i++)
{
if(lot_multiplierПоказано первые 50% кода (символов: 10702)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.