cobra
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «cobra.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
cobra.mq4 — торговый советник для MetaTrader 4, использующий скользящую среднюю (SMA) на заданном таймфрейме для анализа рыночных условий. Советник открывает сделки BUY и SELL при пересечении цены с уровнем открытия бара относительно средней, с возможностью ограничения по времени торгов. При наличии открытых позиций система управляет выставлением дополнительных ордеров с шагом и множителем для тейк-профита, а также рассчитывает стоп-лосс с учётом риска по балансу.
Программа включает встроенную систему проверки лицензионного ключа с шифрованием, привязанную к номеру счёта и сроку действия. Отображение на графике реализовано через панель с информацией о балансе, эквити, убытке, прибыли и параметрах работы, а также логотип. Поддерживаются несколько режимов расчёта лотов и защита баланса.
Советник обрабатывает события OnTick, OnTimer и OnChartEvent, использует торговые функции для отправки ордеров и работает на платформе MetaTrader 4 с языком MQL4. Разработан DKeN (Alexandr Gavrilin), впоследствии передан Bot-Investing.
Настройки программы
| Настройка | Описание |
|---|---|
| TradeMode | Режим торговли — Режим торговли: все направления, только длинные или только короткие позиции. |
| DinamicLot | Динамический лот — Множитель динамического лота, определяющий размер позиции на основе свободного маржинального капитала при ненулевом значении. |
| Lots | Лот — Начальный фиксированный размер лота для открытия сделок при отключённом динамическом лоте. |
| BalanceMode | Режим баланса — Режим расчёта стоп-лосса и управления рисками: отключено, фиксированный баланс, защищённая сумма или процент от депозита. |
| Balance | Баланс — Пороговое значение баланса, используемое для расчёта размера лота и защиты от убытков в зависимости от выбранного режима BalanceMode. |
| Greed | Жадность — Множитель от шага между ордерами, используемый для расчёта расстояния до тейк-профита. |
| Step | Шаг между ордерами — Шаг между ордерами в пунктах, используемый при выставлении дополнительных позиций и расчёте тейк-профита. |
| First | Первый шаг от средней — Минимальное расстояние от средней цены открытия бара для выставления ордеров, измеряемое в пунктах. |
| TimeUse | Использовать время — Логический переключатель, включающий или отключающий ограничение по времени торговли. |
| Time (TimeWork) | Рабочее время — Текстовый параметр, задающий диапазоны рабочего времени в формате часов (например, 07:00-14:00), с возможностью указания нескольких диапазонов через запятую. |
| TF (tf) | Таймфрейм средней — Таймфрейм, на котором рассчитывается скользящая средняя для анализа. |
| Period (ma_period) | Период средней — Период скользящей средней, используемой для анализа ценовых данных. |
| Magic | Магический номер — Магический номер, идентифицирующий ордера, отправленные данным советником. |
| Comment (scomment) | Комментарий ордера — Комментарий, присваиваемый ордерам для их идентификации. |
| Panel show use (chartDisplay) | Отображение панели — Логический переключатель, управляющий отображением информационной панели на графике. |
| Display place corner (chartDisplayPlace) | Расположение панели — Угол графика, в котором размещается информационная панель. |
| Font Size (FontSize) | Размер шрифта — Размер шрифта текста на информационной панели графика. |
Поиск по коду файла
#property version "1.00"
#property strict
#define POINTS_NEW
#include <sovetnikovGUI\Orders.mqh>
#include <sovetnikovGUI\Time.mqh>
#include <sovetnikovGUI\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."
#property icon "\\Images\\haskybot\\icon.ico";
#resource "\\Images\\haskybot\\logo.bmp"
#resource "\\Images\\haskybot\\panel.bmp"
#define LOGO_RESOURCE "::Images\\haskybot\\logo.bmp"
#define PANEL_RESOURCE "::Images\\haskybot\\panel.bmp"
#define LOGO_W 520
#define LOGO_H 372
#define PANEL_W 359
#define PANEL_H 208
#define LICENSE_NAME "haskybot_key"
enum enum_balance_mode
{
balance_mode0, //Off.
balance_mode1, //Conditional balance. A constant amount.
balance_mode2, //Fixed balance. Protected amount.
balance_mode3 //Percentage balance. Use % of the deposit.
};
S KEY="***** ****** ***";
input ENUM_TRADEMODE TradeMode=TRADEMODE_ALL;
D DinamicLot = 0.0;
D Lots = 0.1;
input enum_balance_mode BalanceMode=balance_mode0;
D Balance = 0.0;
D Greed = 0.3;
I Step = 100;
I First = 60;
B TimeUse = false;
S TimeWork="07:00-14:00"; //Time
TF tf=PERIOD_H1; //TF
I ma_period = 144;//Period
I Magic = 5000;
S scomment=""; //Comment
B chartDisplay=true; //Panel show use
input ENUM_BASE_CORNER chartDisplayPlace=CORNER_RIGHT_UPPER; //Display place corner
I FontSize=12; //Font Size
int slippage=0;
class CMyOrders: public COrders
{
public:
};
class CMain: public CMainDefault
{
protected:
CMyOrders m_main;
CNewBar m_bar;
CTime m_time;
CTimer m_timer;
double m_ma;
bool bDrawPanel;
CPicture m_logo;
CDraw m_draw;
CDrawPos m_pos;
CChart m_chart;
public:
virtual int OnInit()
{
// код доступен только после оплаты
}
virtual void OnDeinit(const int reason)
{
m_timer.OnDeinit();
m_chart.Detach();
m_pos.OnDeinit();
m_main.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;
}
m_draw.DrawLabel(0,"m_status",sLicense,clRoute,CORNER_LEFT_LOWER,5,20,12);
if(clRoute==clrRed)
clRoute=clrGold;
else
if(clRoute==clrGold)
clRoute=clrRed;
int itotal=m_main.getCount();
if(!bcheck && itotal==0)
return; //обязательно компилировать и накладывать MQL5 защиту!!!
TESTER_EVENT_TIMER(m_timer);
if(!IsWork())
return; //отключена торговля
m_bar.Refresh();
m_main.OnTick();
m_main.Update(); //получим кол-во ордеров в структуре orders
if(m_main.m_all>0)
{
long t=m_main.getOrderTicket(BUY|SELL);
long tnext=0;
double dtake=0;
if(m_main.OrderSelect(t))
{
double dpt=m_main.OrderStep();
int itype=m_main.OrderType();
dtake=m_main.OrderTakeProfit();
double LotMultiplicator=Lots;
if(itype==OP_BUY){
LotMultiplicator=m_main.LoadParam("buylot",Lots);
}
if(itype==OP_SELL){
LotMultiplicator=m_main.LoadParam("selllot",Lots);
}
if(dpt<=-Step && Step>0 && LotMultiplicator>0)
{
double dstop=m_main.OrderStopLoss();
double dnextlot=NLot(m_main.OrderLots()+LotMultiplicator);
tnext=m_main.OrderSend(itype,dnextlot,-1,dstop,0,scomment,0,clrNONE,false);
}
if(m_main.IsNewDay() || tnext>0 || dtake==0)
m_main.SetAll_AverageTakeProfit(itype,Step*Greed,true);
}
}
bool bTime=true;
if(TimeUse)
bTime=m_time.time_checking(TimeWork);
if(m_main.m_all==0 && bTime)
{
if(m_bar.isNewBar() || m_ma==0.0)
m_ma=iMA(_Symbol,tf,ma_period,0,MODE_SMA,PRICE_CLOSE,1);
if(m_ma>0)
{
double dopen=iOpen(_Symbol,tf,0);
if(Ask>=dopen+First*m_main.p && dopen+First*m_main.p>m_ma && (TradeMode==TRADEMODE_ALL || TradeMode==TRADEMODE_SHORT))
{
double dstoploss=0;
double dtakeprofit=ND1(Step*Greed);
double dlot=GetLot(dstoploss);
if(dlot>0){
m_main.OrderSend(OP_SELL,dlot,-1,dstoploss,dtakeprofit,scomment,0,clrRed);
m_main.SaveParam("selllot",dlot);
}
}
if(Bid<=dopen-First*m_main.p && dopen-First*m_main.p<m_ma && (TradeMode==TRADEMODE_ALL || TradeMode==TRADEMODE_LONG)Показано первые 50% кода (символов: 10920)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.