Ultra Magnat Clone
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ultra magnat clone.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это торговый советник для MetaTrader 4, написанный на MQL4. Он работает на одном символе и использует две независимые стратегии, каждая со своим набором параметров и магическим номером. Советник обрабатывает событие OnTick, а также имеет пустые обработчики OnTimer и OnChartEvent.
В основе лежит сигнальная логика, которая проверяет состояние рынка на новом баре. При появлении сигнала открывается рыночная позиция с заданным лотом и тейк-профитом. Далее советник может усреднять позиции: при неблагоприятном движении цены на заданное расстояние добавляется новая позиция с увеличенным лотом, а тейк-профит пересчитывается для всей серии. Точные условия и формулы не раскрываются.
Советник использует внешние include-файлы из библиотеки sovetnikovNET для работы с ордерами и временем. Настройки позволяют включать или отключать каждую стратегию, задавать часы торговли, начальный лот, множитель лота, тейк-профит, расстояние для усреднения и магические номера. Также задаются таймфрейм и комментарий к ордерам.
Настройки программы
| Настройка | Описание |
|---|---|
| StartHour1 | Час начала 1 — Час начала торговли для первой стратегии. |
| LastHour1 | Час окончания 1 — Час окончания торговли для первой стратегии. |
| StartHour2 | Час начала 2 — Час начала торговли для второй стратегии. |
| LastHour2 | Час окончания 2 — Час окончания торговли для второй стратегии. |
| UseStrategy1 | Использовать стратегию 1 — Включает или отключает первую стратегию. |
| UseStrategy2 | Использовать стратегию 2 — Включает или отключает вторую стратегию. |
| Lots1 | Начальный лот 1 — Начальный лот для первой стратегии. |
| Lots2 | Начальный лот 2 — Начальный лот для второй стратегии. |
| LotExponent1 | Множитель лота 1 — Множитель лота для первой стратегии при добавлении позиций. |
| LotExponent2 | Множитель лота 2 — Множитель лота для второй стратегии при добавлении позиций. |
| TakeProfit1 | Тейк-профит 1 — Уровень тейк-профита в пунктах для первой стратегии. |
| TakeProfit2 | Тейк-профит 2 — Уровень тейк-профита в пунктах для второй стратегии. |
| Distance1 | Расстояние усреднения 1 — Расстояние в пунктах для первой стратегии, при котором добавляется новая позиция при усреднении. |
| Distance2 | Расстояние усреднения 2 — Расстояние в пунктах для второй стратегии, при котором добавляется новая позиция при усреднении. |
| MagicNumber1 | Магический номер 1 — Уникальный идентификатор ордеров первой стратегии. |
| MagicNumber2 | Магический номер 2 — Уникальный идентификатор ордеров второй стратегии. |
| tf | Таймфрейм — Таймфрейм, на котором анализируется новый бар. |
| cmt | Комментарий к ордерам — Комментарий, добавляемый к торговым ордерам. |
Поиск по коду файла
#property version "1.00"
#property strict
#define POINTS_NEW
#include <sovetnikovNET\Orders.mqh>
#include <sovetnikovNET\Time.mqh>
enum enum_hour
{
t0000=0,//00:00
t0100=1,//01:00
t0200=2,//02:00
t0300=3,//03:00
t0400=4,//04:00
t0500=5,//05:00
t0600=6,//06:00
t0700=7,//07:00
t0800=8,//08:00
t0900=9,//09:00
t1000=10,//10:00
t1100=11,//11:00
t1200=12,//12:00
t1300=13,//13:00
t1400=14,//14:00
t1500=15,//15:00
t1600=16,//16:00
t1700=17,//17:00
t1800=18,//18:00
t1900=19,//19:00
t2000=20,//20:00
t2100=21,//21:00
t2200=22,//22:00
t2300=23,//23:00
};
GROUP(1,"Strategy_Parameters");//-----------------
input enum_hour StartHour1=t0700;
input enum_hour LastHour1=t1700;
input enum_hour StartHour2=t0000;
input enum_hour LastHour2=t2300;
B UseStrategy1=true;
B UseStrategy2=true;
GROUP(2,"Trade_Parameters");//-----------------
D Lots1=0.01;
D Lots2=0.01;
D LotExponent1=1.2;
D LotExponent2=1.2;
I TakeProfit1=50;
I TakeProfit2=150;
I Distance1=50;
I Distance2=50;
I MagicNumber1=111;
I MagicNumber2=222;
TF tf=PERIOD_CURRENT;
S cmt="Ultra Magnat Clone";
int slippage=0;
CGlobal m_global;
class CMyOrders: public COrders
{
public:
virtual bool OnInitIndicators()
{
return true;
}
virtual bool OnDeinitIndicators()
{
return true;
}
virtual int Signal()
{
int ibar=iBAR(m_name,tf,1);
if(ibar==1)
return OP_BUY;
if(ibar==-1)
return OP_SELL;
return -1;
}
virtual void AverageOrders(bool isNew,double dTakeProfit, double dMinStep,double dMnLot,double dLots)
{
ulong ibuy=0,isell=0;
getLastOrderTicket(ibuy,isell);
double dlong=0,dshort=0;
get_Average(dlong,dshort);
if(dlong>0) m_drawvirtual.DrawHLine(0,"bu_buy",0,Time[1],dlong,1,STYLE_SOLID,clrGreen,false,false,"BU BUY",false);
else m_drawvirtual.Delete(0,"bu_buy");
if(dshort>0) m_drawvirtual.DrawHLine(0,"bu_sell",0,Time[1],dshort,1,STYLE_SOLID,clrGreen,false,false,"BU SELL",false);
else m_drawvirtual.Delete(0,"bu_sell");
if(ibuy>0)
{
if(this.OrderSelect(ibuy,true))
{
double dstep=this.OrderStep();
double dlot=this.OrderLots();
if(isNew && dstep<=-dMinStep && dMinStep>0)
{
double dnextlot=NLot(dlot*dMnLot);
ulong t=OrderSend(OP_BUY,dnextlot,-1,0,0,NULL,true);
DEBUG_OrderSend3(t);
}
SetAll_AverageTakeProfit(OP_BUY,dTakeProfit,0,true,false);
}
}
if(isell>0)
{
if(this.OrderSelect(isell,true))
{
double dstep=this.OrderStep();
double dlot=this.OrderLots();
if(isNew && dstep<=-dMinStep && dMinStep>0)
{
double dnextlot=NLot(dlot*dMnLot);
ulong t=OrderSend(OP_SELL,dnextlot,-1,0,0,NULL,true);
DEBUG_OrderSend3(t);
}
SetAll_AverageTakeProfit(OP_SELL,dTakeProfit,0,true,false);
}
}
}
};
class CMain: public CMainDeПоказано первые 50% кода (символов: 4429)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.