wsb reverse.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wsb reverse.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для MetaTrader 4, реализующий три независимые торговые системы на одном графике. Советник управляет открытием и закрытием позиций, используя усреднение лотов и возможность открытия реверсивных ордеров. В коде реализована панель отображения с информацией о балансе, эквити, убытках и текущей прибыльности.
Советник включает систему проверки лицензии с шифрованием, ограничивающую использование по аккаунту и сроку действия. Также предусмотрены таймфреймные фильтры для каждой стратегии, настройки трейлинг-стопа, ограничения по количеству ордеров и управление торговлей по дням недели.
В качестве источника торговых сигналов используется пользовательский индикатор FTLM-STLMxAMm.ex4. Торговые параметры настраиваются индивидуально для каждой из трёх систем, включая размер лота, шаг пипсов и магические номера.
Настройки программы
| Настройка | Описание |
|---|---|
| Panel show use (chartDisplay) | chartDisplay — Panel show use |
| Display place corner (chartDisplayPlace) | chartDisplayPlace — Display place corner |
| Font Size (FontSize) | FontSize — Font Size |
| Max orders count (MaxOrdersCount) | MaxOrdersCount — Max orders count |
| Lots (Lots) | Lots — Lots |
| MM (MM) | MM — MM |
| MM_Type | MM_Type — MM_Type |
| Divider (Divider) | Divider — Divider |
| Lot exponent (LotExponent) | LotExponent — Lot exponent |
| Max Lots (MaxLots) | MaxLots — Max Lots |
| Use TF by Max Orders (SelectChange_TF_Finish) | SelectChange_TF_Finish — Use TF by Max Orders |
| Max Orders (Change_TF_max_order) | Change_TF_max_order — Max Orders |
| Continue trading (ContinueTrading) | ContinueTrading — Continue trading |
| Count for open Reverse (BackOrder) | BackOrder — Count for open Reverse |
| Drawdown for first (Drawdoun1) | Drawdoun1 — Drawdown for first |
| Drawdown stop all (Drawdoun2) | Drawdoun2 — Drawdown stop all |
| Use open average by ticks (UsrednitbSei4as) | UsrednitbSei4as — Use open average by ticks |
| TF start (SelectOpenOrdersNorm_TF) | SelectOpenOrdersNorm_TF — TF start |
| Count 1 (max_orders_strategy_1) | max_orders_strategy_1 — Count 1 |
| TF1 (SelectOpenOrdersDrawdount11_TF) | SelectOpenOrdersDrawdount11_TF — TF1 |
| Count 2 (max_orders_strategy_2) | max_orders_strategy_2 — Count 2 |
| TF2 (SelectOpenOrdersDrawdount12_TF) | SelectOpenOrdersDrawdount12_TF — TF2 |
| Total Count (max_orders_para) | max_orders_para — Total Count |
| TF3 (SelectOpenOrdersDrawdount2_TF) | SelectOpenOrdersDrawdount2_TF — TF3 |
| Take profit (TakeProfit) | TakeProfit — Take profit |
| Use close by profit (ProfitClose) | ProfitClose — Use close by profit |
| Minimal count orders (ProfitCloseMaxOrder) | ProfitCloseMaxOrder — Minimal count orders |
| Profit in valute (ProfitCloseStrategyDollar) | ProfitCloseStrategyDollar — Profit in valute |
| Use equity stop (UseEquityStop) | UseEquityStop — Use equity stop |
| Total equity risk (TotalEquityRisk) | TotalEquityRisk — Total equity risk |
| Use open monday (OpenMondey) | OpenMondey — Use open monday |
| Hour (OpenMondeyHour) | OpenMondeyHour — Hour |
| Use close friday (CloseFriday) | CloseFriday — Use close friday |
| Hour (CloseFridayHour) | CloseFridayHour — Hour |
| Continue trading (ContinueTrading_System1) | ContinueTrading_System1 — Continue trading |
| Ignore indicators and TF for open first (Sei4as_S1) | Sei4as_S1 — Ignore indicators and TF for open first |
| Close All Orders (ClouseS1) | ClouseS1 — Close All Orders |
| Select direct (SelectTradeS1) | SelectTradeS1 — Select direct |
| TF (SelectSystem1_TF) | SelectSystem1_TF — TF |
| Max Orders (MaxTrades_Hilo) | MaxTrades_Hilo — Max Orders |
| Use trailing stop (UseTrailingStop_Hilo) | UseTrailingStop_Hilo — Use trailing stop |
| Trailing start (TrailStart_Hilo) | TrailStart_Hilo — Trailing start |
| Trailing stop (TrailStop_Hilo) | TrailStop_Hilo — Trailing stop |
| Pip step (PipStep_S1) | PipStep_S1 — Pip step |
| Pip step multiplier (PipStepX_S1) | PipStepX_S1 — Pip step multiplier |
| Magic (MagicNumber_1) | MagicNumber_1 — Magic |
| Continue trading (ContinueTrading_System2) | ContinueTrading_System2 — Continue trading |
| Ignore indicators and TF for open first (Sei4as_S2) | Sei4as_S2 — Ignore indicators and TF for open first |
| Close All (ClouseS2) | ClouseS2 — Close All |
| Select direct (SelectTradeS2) | SelectTradeS2 — Select direct |
| TF (SelectSystem2_TF) | SelectSystem2_TF — TF |
| Max Orders Orders (MaxTrades_15) | MaxTrades_15 — Max Orders Orders |
| Use Trailing stop (UseTrailingStop_15) | UseTrailingStop_15 — Use Trailing stop |
| Trailing start (TrailStart_15) | TrailStart_15 — Trailing start |
| Trailing stop (TrailStop_15) | TrailStop_15 — Trailing stop |
| Pip step (PipStep_S2) | PipStep_S2 — Pip step |
| Pip step multiplier (PipStepX_S2) | PipStepX_S2 — Pip step multiplier |
| Magic (MagicNumber_2) | MagicNumber_2 — Magic |
| Continue trading (ContinueTrading_System3) | ContinueTrading_System3 — Continue trading |
| Ignore indicators and TF for open first (Sei4as_S3) | Sei4as_S3 — Ignore indicators and TF for open first |
| Close All (ClouseS3) | ClouseS3 — Close All |
| Select direct (SelectTradeS3) | SelectTradeS3 — Select direct |
| TF (SelectSystem3_TF) | SelectSystem3_TF — TF |
| Max Orders Orders (MaxTrades_16) | MaxTrades_16 — Max Orders Orders |
| Use Trailing stop (UseTrailingStop_16) | UseTrailingStop_16 — Use Trailing stop |
| Trailing start (TrailStart_16) | TrailStart_16 — Trailing start |
| Trailing stop (TrailStop_16) | TrailStop_16 — Trailing stop |
| Pip step (PipStep_S3) | PipStep_S3 — Pip step |
| Pip step multiplier (PipStepX_S3) | PipStepX_S3 — Pip step multiplier |
| Magic (MagicNumber_3) | MagicNumber_3 — Magic |
Поиск по коду файла
#property version "1.00"
#property strict
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Button.mqh>
#include <sovetnikovNET\Time.mqh>
#include <sovetnikovNET\Draw.mqh>
#include <sovetnikovNET\Bcrypt.mqh>
#include <Charts\Chart.mqh>
#include <Controls\Picture.mqh>
#define VALID_KEY "Advisor activated."
#define EMPTY_KEY "Activate the key."
#define INVALID_KEY "Invalid key."
#define EXPERIED "Key expired."
#define LICENSE_EXT "wsbreverse"
#define LICENSE_NAME "$b|@kvksf16|}2@mf6euo#6@?1{0ovvi"
#resource "\\Indicators\\FTLM-STLMxAMm.ex4"
#resource "\\Images\\wsb_reverse.bmp"
#define PANEL_RESOURCE "::Images\\wsb_reverse.bmp"
#define LOGO_W 1280
#define LOGO_H 719
#define PANEL_W 400
#define PANEL_H 376
class CMyPos: public CDrawPos
{
public:
virtual void MovePosition(int ix,int iy,int iwidth,int iheight,ENUM_BASE_CORNER ecorner)
{
option_x=ix;
option_y=iy;
option_corner=ecorner;
if(option_corner==CORNER_LEFT_LOWER)
{
option_x=ix;
option_y=ChartHeight()-iheight-iy-2;
}
else
if(option_corner==CORNER_RIGHT_LOWER)
{
option_x=ChartWidth()-iwidth-ix-2;
option_y=ChartHeight()-iheight-iy+18;
}
else
if(option_corner==CORNER_RIGHT_UPPER)
{
option_x=ChartWidth()-iwidth-ix-2;
option_y=iy;
}
}
};
enum ENUM_MM_TYPE
{
MM_TYPE_BALANCE=1, //Balance
MM_TYPE_EQUITY=2, //Equity
};
enum ENUM_SELECT_TRADE
{
SELECT_TRADE_ALL=7,//Long & Short
SELECT_TRADE_LONG=8, //Only Long
SELECT_TRADE_SHORT=9 //Only Short
};
#define MAX_SYSTEMS 3
string sExpertName="Strategy";
BLOCK(1,"Main settings");//.
B chartDisplay=true; //Panel show use
input ENUM_BASE_CORNER chartDisplayPlace=CORNER_LEFT_UPPER; //Display place corner
I FontSize=12; //Font Size
I MaxOrdersCount=30; //Max orders count
D Lots=0.01; //Lots
B MM=true; //MM
input ENUM_MM_TYPE MM_Type=MM_TYPE_BALANCE;
D Divider=10; //Divider
D LotExponent=1.55; //Lot exponent
D MaxLots=100; //Max Lots
TF SelectChange_TF_Finish=PERIOD_D1; //Use TF by Max Orders
I Change_TF_max_order=10; //Max Orders
B ContinueTrading=true; //Continue trading
I BackOrder=2; //Count for open Reverse
double BackOrder_Exponent=0.5; //Reverse Lot exponent
D Drawdoun1=10; //Drawdown for first
D Drawdoun2=25; //Drawdown stop all
B UsrednitbSei4as=false;//Use open average by ticks
TF SelectOpenOrdersNorm_TF=PERIOD_M5;//TF start
I max_orders_strategy_1=6;//Count 1
TF SelectOpenOrdersDrawdount11_TF=PERIOD_H1;//TF1
I max_orders_strategy_2=8;//Count 2
TF SelectOpenOrdersDrawdount12_TF=PERIOD_H4;//TF2
I max_orders_para=10;//Total Count
TF SelectOpenOrdersDrawdount2_TF=PERIOD_D1;//TF3
D TakeProfit=13; //Take profit
B ProfitClose=false;//Use close by profit
I ProfitCloseMaxOrder=5;//Minimal count orders
D ProfitCloseStrategyDollar=25.0;//Profit in valute
B UseEquityStop=false; //Use equity stop
D TotalEquityRisk=20.0; //Total equity risk
SEP(2);//.
BLOCK(2,"Time settings");//.
B OpenMondey=false; //Use open monday
I OpenMondeyHour=0; //Hour
B CloseFriday=false; //Use close friday
I CloseFridayHour=17; //Hour
SEP(3);//.
BLOCK(3,"Strategy1 settings");//.
B ContinueTrading_System1=true; //Continue trading
B Sei4as_S1=false; //Ignore indicators and TF for open first
B ClouseS1=false; //Close All Orders
input ENUM_SELECT_TRADE SelectTradeS1=SELECT_TRADE_ALL; //Select direct
TF SelectSystem1_TF=PERIOD_M5; //TF
I MaxTrades_Hilo=8; //Max Orders
B UseTrailingStop_Hilo=false; //Use trailing stop
D TrailStart_Hilo=10.00000000; //Trailing start
D TrailStop_Hilo=5.00000000; //Trailing stop
D PipStep_S1=15; //Pip step
D PipStepX_S1=1.1; //Pip step multiplier
I MagicNumber_1=1000; //Magic
SEP(4);//.
BLOCK(4,"Strategy2 settings");//.
B ContinueTrading_System2=true; //Continue trading
B Sei4as_S2=false; //Ignore indicators and TF for open first
B ClouseS2=false; //Close All
input ENUM_SELECT_TRADE SelectTradeS2=SELECT_TRADE_ALL; //Select direct
TF SelectSystem2_TF=PERIOD_M15; //TF
I MaxTrades_15=8; //Max Orders Orders
B UseTrailingStop_15=false; //Use Trailing stop
D TrailStart_15=10.00000000; //Trailing start
D TrailStop_15=5.00000000;//Trailing stop
D PipStep_S2=20;//Pip step
D PipStepX_S2=1.1;//Pip step multiplier
I MagicNumber_2=2000;//Magic
SEP(5);//.
BLOCK(5,"Strategy3 settings");//.
B ContinueTrading_System3=true; //Continue trading
B Sei4as_S3=false; //Ignore indicators and TF for open first
B ClouseS3=false; //Close All
input ENUM_SELECT_TRADE SelectTradeS3=SELECT_TRADE_ALL; //Select direct
TF SelectSystem3_TF=PERIOD_M30; //TF
I MaxTrades_16=8; //Max Orders Orders
B UseTrailingStop_16=false; //Use Trailing stop
D TrailStart_16=10.00000000; //Trailing start
D TrailStop_16=5.00000000;//Trailing stop
D PipStep_S3=20;//Pip step
D PipStepX_S3=1.1;//Pip step multiplier
I MagicNumber_3=3000;//Magic
class CMyOrders: public COrders
{
public:
virtual bool CheckMagic(long iMagic)
{
return (iMagic==m_imagic || iMagic==m_imagic+1);
}
virtual int UpdateProfits(double &dprofits,double &dlots,int &icount,int &iback)
{
__COPYRIGHT__
m_all=0;
dprofits=0;
dlots=0;
icount=0;
iback=0;
ArrayInitialize(orders,0);
int itype=-1;
int itotal=PositionsTotal();
for(int i=itotal-1; i>=0; i--)
{
if(SelectByIndex(i,true))
{
m_all++;
itype=m_position.PositionType();
orders[itype]++;
dprofits+=m_position.Profit()+m_position.Swap()+m_position.Commission();
if(m_position.Magic()==m_imagic)
{
dlots+=m_position.Volume(); //считаем лот только стратегии без ордера reverse
icount++; //считаем основные ордера в сетке
}
if(m_position.Magic()==m_imagic+1)
{
iback++;
}
Position();
}
}
return m_all; //вернем кол-во ордеров в структуре
}
virtual ulong getOrderTicket(int itype=ALL,const int imode=MODE_TRADES,const datetime dttm=0,bool bHistoryOpenOrderTime=true)
{
__COPYRIGHT__
datetime dtm=0,dtm_open=0;
ulong iticket=0;
int icount=0;
int flag;
icount=PositionsTotal();
for(int i=icount-1; i>=0; i--)
{
if(!SelectByIndex(i,true)) continue;
if(m_position.Magic()==m_imagic+1)
continue; //пропустим бэк ордера
dtm_open=m_position.Time();
flag=toMyTypes(m_position.PositionType())&itype;
if(m_position.PositionType()==toDefType(flag,(int)itype) && dtm_open>=dttm && (m_position.Ticket()>iticket || iticket==-1))
{
dtm=dtm_open;
iticket=m_position.Ticket();
}
}
return iticket;
}
};
class CMyOptions: public COptions
{
public:
bool ContinueTrading_System[];
bool Sei4as[]; //Ignore indicators and TF for open first
bool Clouse[]; //Close All
ENUM_SELECT_TRADE SelectTrade[]; //Select direct
ENUM_TIMEFRAMES SelectSystem_TF[];
int MaxTrades[];
bool UseTrailingStop[];
double TrailStart[];
double TrailStop[];
double PipStep[];
double PipStepX[];
int MagicNumber[];
virtual void OnInit()
{
// код доступен только после оплаты
}
void Add_ContinueTrading_System(bool bContinueTrading_System)
{
Add(ContinueTrading_System,bContinueTrading_System);
}
void Add_Sei4as(bool bSei4as)
{
Add(Sei4as,bSei4as);
}
void Add_Clouse(bool bClouse)
{
Add(Clouse,bClouse);
}
void Add_SelectTrade(ENUM_SELECT_TRADE eSelectTrade)
{
Add(SelectTrade,eSelectTrade);
}
void Add_SelectSystem_TF(ENUM_TIMEFRAMES eSelectSystem_TF)
{
Add(SelectSystem_TF,eSelectSystem_TF);
}
void Add_MaxTrades(int iMaxTrades)
{
Add(MaxTrades,iMaxTrades);
}
void Add_UseTrailingStop(bool bUseTrailingStop)
{
Add(UseTrailingStop,bUseTrailingStop);
}
void Add_TrailStart(double dTrailStart)
{
Add(TrailStart,dTrailStart);
}
void Add_TrailStop(double dTrailStop)
{
Add(TrailStop,dTrailStop);
}
void Add_PipStep(double dPipStep)
{
Add(PipStep,dPipStep);
}
void Add_PipStepX(double dPipStepX)
{
Add(PipStepX,dPipStepX);
}
void Add_MagicNumber(int iMagicNumber)
{
Add(MagicNumber,iMagicNumber);
}
};
class CMain: public CMainDefault
{
protected:
CMyOrders m_main[MAX_SYSTEMS];
CNewBar m_bar[MAX_SYSTEMS],m_day,m_newday,m_checkbar[4];
CMyOptions m_options;
CTime m_time;
CChart m_chart;
bool bDrawPanel;
CPicture m_logo;
CDraw m_draw;
CMyPos m_pos;
CTimer m_timer;
public:
virtual int OnInit()
{
// код доступен только после оплаты
}
virtual void OnDeinit(const int reason)
{
m_timer.OnDeinit();
m_chart.Detach();
for(int i=0; i<MAX_SYSTEMS; i++)
m_main[i].OnDeinit();
HideTestIndicators(false);
m_pos.OnDeinit();
m_draw.OnDeinit();
}
virtual void OnTick()
{
// код доступен только после оплаты
}
string sLicense=VALID_KEY;
bool bcheck=checkAccount(sLicense,LICENSE_NAME);
static color clRoute=clrRed;
if(bcheck)
{
clRoute=clrLime;
}
else
{
if(clRoute==clrLime)
clRoute=clrRed;
}
if(bDrawPanel)
{
m_draw.DrawLabel(0,"panel_m_status",sLicense,clRoute,CORNER_LEFT_LOWER,5,20,12);
if(clRoute==clrRed)
clRoute=clrGold;
else
if(clRoute==clrGold)
clRoute=clrRed;
}
double dProfits[MAX_SYSTEMS],dLot[MAX_SYSTEMS];
int iCount[MAX_SYSTEMS],iBack[MAX_SYSTEMS];
ArrayInitialize(dProfits,0);
ArrayInitialize(dLot,0);
ArrayInitialize(iCount,0);
ArrayInitialize(iBack,0);
for(int i=0; i<MAX_SYSTEMS; i++)
{
m_main[i].OnTick();
m_main[i].UpdateProfits(dProfits[i],dLot[i],iCount[i],iBack[i]); //получим кол-во ордеров в структуре orders
}
int itotal=0;
double dsummProfits=0;
int imaxorders=0;
for(int i=0; i<MAX_SYSTEMS; i++)
{
itotal+=iCount[i];
dsummProfits+=dProfits[i];
if(iCount[i]>imaxorders)
imaxorders=iCount[i];//найдем максимальное кол-во ордеров у всех сеток
}
double dd=0;
if(AccountBalance()>0)
dd=NormalizeDouble((AccountEquity()-AccountBalance())*100/AccountBalance(),3);
TESTER_EVENT_TIMER(m_timer);
if(!bcheck && itotal==0)
return; //обязательно компилировать и накладывать MQL5 защиту!!!
if(!m_main[0].IsWork())
return; //отключена торговля?
m_newday.Refresh(); //новый день
m_day.Refresh();
for(int i=0; i<4; i++)
m_checkbar[i].Refresh();
if(ProfitClose)
{
if(itotal>=ProfitCloseMaxOrder)
{
if(dsummProfits>=ProfitCloseStrategyDollar)
{
for(int i=0; i<MAX_SYSTEMS; i++)
m_main[i].OrderCloseAll(ALL); //закроем все стратегии по прибыли
retПоказано первые 50% кода (символов: 23681)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.