marusya mt4.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «marusya mt4.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы MetaTrader 4, работающий на основе сигналов индикатора SAR (Parabolic SAR) на нескольких таймфреймах. Открывает и управляет позициями в соответствии с направлением сигнала, поддерживает усреднение позиций по мере развития тренда. Включает настройки управления рисками: фиксированный или расчётный лот, ограничение максимальной просадки и максимальное количество ордеров в каждом направлении. Содержит систему лицензирования и активации, проверяющую авторизацию через внешний сервис и файл лицензии на локальном счёте.
Настройки программы
| Настройка | Описание |
|---|---|
| Slippage (slippage) | Проскальзывание — Допустимое проскальзывание при открытии ордера; 0 — не используется. |
| Comment (cmt) | Комментарий — Текст комментария, добавляемый к ордерам. |
| Magic (Magic) | Магический номер — Идентификатор ордеров советника. |
| Risk in % (0-off) (Risk) | Риск в процентах — Процент риска на сделку; при значении 0 используется фиксированный лот. |
| Balance step (BalanceStep) | Шаг баланса — Шаг увеличения баланса для расчёта лота при риск-менеджменте. |
| Fixed lot (fix_lot) | Фиксированный лот — Фиксированный размер лота для торговли. |
| Take profit (order_tp) | Тейк-профит — Тейк-профит в пунктах; автоматически адаптируется для 5-значных инструментов. |
| Averaging step (Step) | Шаг усреднения — Минимальный шаг цены для открытия следующего усредняющего ордера. |
| Averaging step multiplier (StepMp) | Множитель шага усреднения — Множитель, увеличивающий шаг усреднения с ростом количества ордеров. |
| Lot multiplier (LotMultiplicator) | Множитель лота — Множитель размера лота при каждом последующем усреднении. |
| Maximum number of orders in each direction (MaxOrders) | Максимальное количество ордеров — Максимальное число ордеров в каждом направлении. |
| Close orders at a reversal signal (CloseInverse) | Закрытие при развороте — Автоматическое закрытие ордеров противоположного направления при появлении сигнала разворота. |
| Maximum drawdown (MaxDD) | Максимальная просадка — Максимально допустимая просадка в процентах; при достижении лимита все позиции закрываются. |
Поиск по коду файла
#property version "1.14"
#property strict
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Time.mqh>
#include <sovetnikovNET\Draw.mqh>
#define ROBOFOREX_API "143138b6b834d9bb"
#include <sovetnikovNET\News.mqh>
CWebRequest m_post;
bool bActivate=false;
TRADEMODE TradeMode = TRADEMODE_ALL; // Trading mode
I slippage = 0; // Slippage
S cmt = ""; //Comment
I Magic = 20200320; // Magic
D Risk = 0.01; // Risk in % (0-off)
D BalanceStep = 1000; // Balance step
D fix_lot = 0.01; // Fixed lot
D order_tp = 20; // Take profit
D Step = 10; // Averaging step
D StepMp = 1.3; // Averaging step multiplier
D LotMultiplicator = 1.6; // Lot multiplier
I MaxOrders = 100; // Maximum number of orders in each direction
B CloseInverse = false; // Close orders at a reversal signal
D MaxDD = 0; // Maximum drawdown
ENUM_TIMEFRAMES tf=PERIOD_H1;
#define LICENSE_OFF
#define LICENSE_DEMO
#define LICENSE_NAME "g?0j74vdwy*p~?c1axj7%e@7wcofgzw2"
#define LICENSE_FILE "club0405"
#define VALID_KEY "The advisor is active"
#define EMPTY_KEY "The advisor must be activated."
#define INVALID_KEY "Invalid license."
#define EXPERIED "License expired"
int signal_bar=SIGNAL_BAR_EVERYTICK;
class CMyOrders: public COrders
{
protected:
string aSymbols[];
int hsar0,hsar2,hsarD1;
public:
virtual bool OnInitIndicators()
{
#ifdef __MQL5__
hsar0=iSAR(_Symbol,tf,0.02,0.2);
hsar2=iSAR(_Symbol,tf,0.002,0.02);
hsarD1=iSAR(_Symbol,PERIOD_D1,0.002,0.02);
#endif
return true;
}
virtual bool OnDeInitIndicators()
{
#ifdef __MQL5__
IndicatorRelease(hsar0);
IndicatorRelease(hsar2);
IndicatorRelease(hsarD1);
#endif
return true;
}
int signal(int ibar,ENUM_ORDER_TYPE &iop_aver)
{
double dsar0=0,dsar2=0,dsar2D1=0;
double dclose=0;
iop_aver=-1;
dclose=iClose(_Symbol,tf,ibar);
#ifdef __MQL5__
dsar0=iSAR(hsar0,ibar);
dsar2=iSAR(hsar2,ibar);
dsar2D1=iSAR(hsarD1,0);
#else
dsar0=iSAR(_Symbol,tf,0.02,0.2,ibar);
dsar2=iSAR(_Symbol,tf,0.002,0.02,ibar);
dsar2D1=iSAR(_Symbol,PERIOD_D1,0.002,0.02,0);
#endif
if(dclose>dsar2 && dclose>dsar0 && dsar2D1>dclose)
{
iop_aver=OP_SELL;
}
if(dclose<dsar2 && dclose<dsar0 && dsar2D1<dclose)
{
iop_aver=OP_BUY;
}
if(dclose<dsar2 && dclose>dsar0 && dsar2D1>dclose)
{
return OP_SELL;
}
if(dclose>dsar2 && dclose<dsar0 && dsar2D1<dclose)
{
return OP_BUY;
}
return -1;
}
};
class CMain: public CMainDefault
{
protected:
CMyOrders m_main;
CNewBar m_bar,m_barD1;
CDrawPos m_pos;
public:
virtual int OnInit()
{
// код доступен только после оплаты
}
virtual void OnDeinit(const int reason)
{
m_main.OnDeinit();
HideTestIndicators(false);
}
virtual void OnTick()
{
// код доступен только после оплаты
}
string sLicense=VALID_KEY;
bool bcheck=checkAccount(sLicense,LICENSE_NAME);
if(!bActivate && !bcheck)
{
if(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")
sLicense="Необходимо открыть счет по ссылке ";
else
sLicense ="You must open an account using the link ";
}
m_pos.DrawStatus("status",sLicense,bcheck);
if(!m_main.IsWork(_Symbol))
return; //отключена торговля
m_bar.Refresh();
m_barD1.Refresh(true);
m_main.OnTick();
if(MaxDD>0 && AccountBalance()>0)
{
double dprofit=m_main.getProfit(ALL);
if(dprofit*100/AccountBalance()<=-MaxDD)
{
m_main.OrderCloseAll(ALL);
return;
}
}
ENUM_ORDER_TYPE op=-1,iop_aver=-1;
op=(ENUM_ORDER_TYPE)m_main.signal(signal_bar,iop_aver);
if(op==OP_BUY || op==OP_SELL)
{
if(m_main.Count(op)==0 && bcheck)
{
double dLot=fix_lot;
if(Risk>0)
dLot=m_main.getLotByProcent(MM_BalanceStep,Risk,BalanceStep);
if(m_main.IsTester && dLot<=0.0) dLot=m_main.m_symbol.LotsMin();
ulong tt=m_main.OrderSend(op,dLot,-1,0,order_tp,cmt);
DEBUG_OrderSend(tt);
}
}
double abuy[][2],asell[][2];
m_main.getLastOrderTicket(abuy,asell);
int ib=ArrayRange(abuy,0);
int is=ArrayRange(asell,0);
double dStep=Step;
if(dStep<Step)
dStep=Step;
if(ib>0)
{
ArraySort(abuy); //сортировка от мин к маск, 0 мин т.е. последний при усренении
Показано первые 50% кода (символов: 8587)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.