IGNITE
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ignite v1.0.0.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
IGNITE — это торговый советник для платформы MetaTrader 5, написанный на языке MQL5. Советник обрабатывает события OnTick и использует технический индикатор RSI для генерации торговых сигналов, а также строит уровни Фибоначчи для определения точек входа и выхода.
Советник работает в зависимости от заданных временных параметров: он открывает позиции только в определённое время и приостанавливает торговлю в пятницу в заданный час. Поддерживаются push-уведомления и алерты. Встроена система лицензирования с проверкой серийного ключа через удалённый сервер.
Торговая логика включает управление несколькими позициями, модификацию тейк-профитов, закрытие позиций и отложенных ордеров. Объём лотов рассчитывается с использованием множителя. Советник привязан к конкретному торговому счёту по магическому номеру.
Настройки программы
| Настройка | Описание |
|---|---|
| StopTradingTimeonFriday | Время остановки в пятницу — Время остановки торговли в пятницу в формате ЧЧ:ММ |
| Start_trading | Время начала торговли — Время начала торговой сессии в формате ЧЧ:ММ |
| End_trading | Время окончания торговли — Время окончания торговой сессии в формате ЧЧ:ММ |
| Volume size (Lots) | Размер лота — Размер базового лота (Volume size) |
| Multiplier | Множитель лотов — Множитель для расчёта размеров последующих лотов |
| Initial_TakeProfit | Начальный тейк-профит — Начальное значение тейк-профита в пунктах для открытых ордеров |
| Min_pip | Минимальный диапазон в пипах — Минимальный допустимый диапазон в пипах для поиска торговых уровней |
| Max_pip | Максимальный диапазон в пипах — Максимальный допустимый диапазон в пипах для поиска торговых уровней |
| Over_Bought | Уровень перекупленности RSI — Пороговое значение RSI для определения перекупленности |
| Over_Sold | Уровень перепроданности RSI — Пороговое значение RSI для определения перепроданности |
| Limit_Zero_Profit | Уровень закрытия при нулевой прибыли — Уровень Фибоначчи, при котором закрываются позиции при нулевой прибыли |
| Fibo_first_tp | Первый коэффициент Фибоначчи — Первоначальный коэффициент Фибоначчи для расчёта базового уровня |
| Fibo_1 | Уровень Фибоначчи 1 — Первый уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_2 | Уровень Фибоначчи 2 — Второй уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_3 | Уровень Фибоначчи 3 — Третий уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_4 | Уровень Фибоначчи 4 — Четвёртый уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_5 | Уровень Фибоначчи 5 — Пятый уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_6 | Уровень Фибоначчи 6 — Шестой уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_7 | Уровень Фибоначчи 7 — Седьмой уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_8 | Уровень Фибоначчи 8 — Восьмой уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_9 | Уровень Фибоначчи 9 — Девятый уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_10 | Уровень Фибоначчи 10 — Десятый уровень Фибоначчи для расчёта ценовых уровней |
| Fibo_11 | Уровень Фибоначчи 11 — Одиннадцатый уровень Фибоначчи для расчёта ценовых уровней |
| TimeFrame | Таймфрейм — Таймфрейм для анализа индикатора RSI |
| Push_Notification | Push-уведомления — Включает или отключает push-уведомления при создании Фибоначчи |
| Alert_Message | Сообщения об алертах — Включает или отключает всплывающие алерт-сообщения при создании Фибоначчи |
| MagicNumber | Магический номер — Магический номер для идентификации ордеров и позиций советника |
| PERIOD | Период RSI — Период расчёта индикатора RSI |
Поиск по коду файла
/*+--------------------------MTLicense Block1------------------------+*/
/* product code */
string MTlic_ProductCode = "MONEYIST";
/* Title on the information display */
string MTlic_info_caption = "IGNITE v 1.0";
/* footer note on the information display */
string MTlic_info_footer = "Moneyist";
/* your server URL here */
string MTlic_ServerURL = "57.128.172.141";
/* Heartbeat delay (900=15min, 3600=1hour, 21600=6hours, 86400=1day) */
int MTlic_*********_delay = 7200;
/* Information display */
int MTLic_DrawLabel_Ygap = 0;
int MTLic_DrawLabel_Xgap = 0;
int MTLic_DrawLabel_corner_anchor_right = 0;
/* customers serial key will be here. keep this blank */
input string SerialKey = "";
/*+--------------------------MTLicense Block1------------------------+*/
/*+--------------------------MTLicense Block2------------------------+*/
string MTLic_customer_uid="D6p71YTN1ffkNp6Uk8PtaglsJdxATweS";string MTlic_Init_License_Key="";void StrToCharArray(string source,uchar&dest[]) {ArrayResize(dest,StringLen(source)); for(int i=0; i<StringLen(source); i++) {dest[i]=(uchar)StringGetCharacter(source,i);}}struct MTLicenseInfo {bool IsValid; string AllowedAccounts; string AllowedCurrencyPairs; string ExpireDate; string AllowedTimeFrames; int MinimumBalance; int MaximumBalance; int DisableLiveTrading; int DisableDemoTrading; int DisableBacktesting; int ShowLicenseInfo; string ValidationKey; string LicenseKey;};
#import "MoneyistLib.ex5"
void MTLic_CheckLicense(MTLicenseInfo&LicInfo);string MTLic_GetLicense(string code,string serial,string url,string status="",string filename="");
#import
string ArrayToBASE64(uchar&src[]){uchar dst[];if(CryptEncode(CRYPT_BASE64,src,src,dst)>0){return CharArrayToString(dst,0,WHOLE_ARRAY,CP_UTF8);}else{Print("The license key is not valid. (Error:"+(string)GetLastError()+")");return"";}}void BASE64ToArray(string BASE64Str,uchar&dst[]){uchar src[];StrToCharArray(BASE64Str,src);if(CryptDecode(CRYPT_BASE64,src,src,dst)<=0){Print("The license key is not valid. (Error:"+(string)GetLastError()+")");}}string MD5(string text){string md5="51B61CDFCD343A6A7645AB0DCF491408";uchar src[],dst[];StrToCharArray(text,src);if(CryptEncode(CRYPT_HASH_MD5,src,src,dst)>0){string res="";int count=ArraySize(dst);for(int i=0;i<count;i++) res+=StringFormat("%.2X",dst[i]);md5=res;}else Print("The license key is not valid. (Error:"+(string)GetLastError()+")");return md5;}int TerminateApp(string msg=""){int MTLic_PType=MQLInfoInteger(MQL_PROGRAM_TYPE);if(msg!="") Print(msg);if(MTLic_PType==PROGRAM_EXPERT){ExpertRemove();int MTLic_err_buff[1];MTLic_err_buff[23]=1;return(INIT_FAILED);}else if(MTLic_PType==PROGRAM_INDICATOR){IndicatorSetString(INDICATOR_SHORTNAME,"MTLicPendingRemove");for(int MTLic__y=0;MTLic__y<=CHART_WINDOWS_TOTAL-1;MTLic__y++){ChartIndicatorDelete(0,MTLic__y,"MTLicPendingRemove");}int MTLic_err_buff2[1];MTLic_err_buff2[23]=1;return(INIT_FAILED);}else{return(INIT_FAILED);}}int MTLic_RemainingDays=0;string MTLic_LicLableStr;MTLicenseInfo MTLic;int MTlic_failedbeat_Count=0;void MTLic_OnTimer(){string MTlic_LicenseKey2=MTLic_GetLicense(MTlic_ProductCode,SerialKey,MTlic_ServerURL,"*********",__FILE__);if(MTlic_LicenseKey2=="CONNERROR"){MTlic_failedbeat_Count=MTlic_failedbeat_Count+1;if(MTlic_failedbeat_Count>=8){TerminateApp("Failed to connect to server,Please check your internet connection.");}else{Print("Failed to connect to server,Application will be removed after "+(string)(8-MTlic_failedbeat_Count)+" failed attempts.");}}else if(MTlic_LicenseKey2=="URLERROR"){TerminateApp("Server handshake failed,encryption validation error. Please contact author.");}else if(MTlic_Init_License_Key!=MTlic_LicenseKey2){Print("License information changed,Re-Validating license...");MTlic_failedbeat_Count=0;MTLic_OnInit();}else{MTlic_failedbeat_Count=0;MTLic_OnTick();}}void MTLic_OnInit(){if(SerialKey==""){MessageBox("Empty serial string. please enter serial key in your inputs window.","License",MB_ICONERROR);TerminateApp("Empty serial string. please enter serial key in your inputs window.");}ObjectsDeleteAll(0,"MTlic_");string MTlic_LicenseKey=MTLic_GetLicense(MTlic_ProductCode,SerialKey,MTlic_ServerURL,"",__FILE__);MTlic_Init_License_Key=MTlic_LicenseKey;MTLic.IsValid=false;MTLic.LicenseKey=MTlic_LicenseKey;ResetLastError();string validation_str=(string)GetTickCount()+(string)TerminalInfoInteger(TERMINAL_MEMORY_TOTAL)+MTLic_customer_uid+(string)MTLic_AccountNumber()+(string)TerminalInfoInteger(TERMINAL_BUILD)+(string)GetMicrosecondCount();uchar uniqid[];uchar ValidationKey[];StrToCharArray(validation_str,uniqid);uchar keyenc[];string enc_key=MD5((string)MQLInfoInteger(MQL_PROGRAM_TYPE)+(string)MQLInfoInteger(MQL_PROGRAM_TYPE)+(string)TerminalInfoInteger(TERMINAL_BUILD)+(string)TerminalInfoInteger(TERMINAL_MAXBARS)+(string)TerminalInfoInteger(TERMINAL_CODEPAGE)+(string)TerminalInfoInteger(TERMINAL_CPU_CORES)+(string)TerminalInfoInteger(TERMINAL_DISK_SPACE)+(string)TerminalInfoInteger(TERMINAL_MEMORY_TOTAL));StrToCharArray(enc_key,keyenc);uchar keydec[];string dec_key=MD5((string)TerminalInfoInteger(TERMINAL_MAXBARS)+(string)TerminalInfoInteger(TERMINAL_MEMORY_TOTAL)+(string)MQLInfoInteger(MQL_PROGRAM_TYPE)+(string)TerminalInfoInteger(TERMINAL_DISK_SPACE)+(string)TerminalInfoInteger(TERMINAL_CODEPAGE)+(string)MQLInfoInteger(MQL_PROGRAM_TYPE)+(string)TerminalInfoInteger(TERMINAL_CPU_CORES)+(string)TerminalInfoInteger(TERMINAL_BUILD));StrToCharArray(dec_key,keydec);if(CryptEncode(CRYPT_AES256,uniqid,keyenc,ValidationKey)>0){MTLic.ValidationKey=ArrayToBASE64(ValidationKey);MTLic_CheckLicense(MTLic);if(MTLic.IsValid==true){uchar uniqid_r[];uchar result[];BASE64ToArray(MTLic.ValidationKey,uniqid_r);if(CryptDecode(CRYPT_AES256,uniqid_r,keydec,result)>0){MTLic_OnTick();}else{TerminateApp();}}else{TerminateApp();}}else{TerminateApp();}int MTLic_Lst_Err=GetLastError();if(MTLic_Lst_Err>0){}}void MTLic_OnTick(){if(MTLic.ExpireDate==""){MTLic_LicLableStr="fully-licensed version";}else
if(MTLic_RemainingDays<0&&MTLic.ExpireDate!=""){TerminateApp("===Your license has expired. Program will be unloaded===");return;}else{datetime MTLic_ExpDate=StringToTime(MTLic.ExpireDate);datetime MTLic_dtgap=MTLic_ExpDate-TimeCurrent();MTLic_RemainingDays=(int)MathRound((MTLic_ExpDate-TimeCurrent())/3600/24);MTLic_LicLableStr=StringFormat("%02d Days %02d:%02d Hrs remaining",MTLic_RemainingDays,MTLic_TimeHour(MTLic_dtgap),MTLic_TimeMinute(MTLic_dtgap));}if(MTLic.ShowLicenseInfo>0){MTLic_DrawLabel();}}datetime MTLic_Last_Timer_Reset=TimeCurrent();void OnTick_OnTimerMTLicense(){if(TimeCurrent()-MTLic_Last_Timer_Reset>=MTlic_*********_delay){MTLic_Last_Timer_Reset=TimeCurrent();MTLic_OnTimer();}}long MTLic_AccountNumber(){return AccountInfoInteger(ACCOUNT_LOGIN);}int MTLic_TimeHour(datetime date){MqlDateTime tm;TimeToStruct(date,tm);return(tm.hour);}int MTLic_TimeMinute(datetime date){MqlDateTime tm;TimeToStruct(date,tm);return(tm.min);}double MTLic_AccountBalance(){return(AccountInfoDouble(ACCOUNT_BALANCE));}void MTLic_DrawLabel(){int MTLic_DrawLabel_corner=CORNER_LEFT_LOWER;int MTLic_DrawLabel_anchor=ANCHOR_LEFT_LOWER;if(MTLic_DrawLabel_corner_anchor_right==1){MTLic_DrawLabel_corner=CORNER_RIGHT_LOWER;MTLic_DrawLabel_anchor=ANCHOR_RIGHT_LOWER;}string MTLicLblname="MTlic_title";if(MQLInfoInteger(MQL_PROGRAM_TYPE)==PROGRAM_INDICATOR){if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,MTLic_ChartWindow(),0,0,0);}else{if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,0,0,0,0);}ObjectSetInteger(0,MTLicLblname,OBJPROP_COLOR,clrWhiteSmoke);if(MTlic_info_footer==""){ObjectSetInteger(0,MTLicLblname,OBJPROP_XDISTANCE,13+MTLic_DrawLabel_Xgap);ObjectSetInteger(0,MTLicLblname,OBJPROP_YDISTANCE,23+MTLic_DrawLabel_Ygap);}else{ObjectSetInteger(0,MTLicLblname,OBJPROP_XDISTANCE,13+MTLic_DrawLabel_Xgap);ObjectSetInteger(0,MTLicLblname,OBJPROP_YDISTANCE,32+MTLic_DrawLabel_Ygap);}ObjectSetString(0,MTLicLblname,OBJPROP_TEXT,MTlic_info_caption);ObjectSetInteger(0,MTLicLblname,OBJPROP_FONTSIZE,11);ObjectSetInteger(0,MTLicLblname,OBJPROP_ZORDER,30);ObjectSetInteger(0,MTLicLblname,OBJPROP_CORNER,MTLic_DrawLabel_corner);ObjectSetInteger(0,MTLicLblname,OBJPROP_ANCHOR,MTLic_DrawLabel_anchor);ObjectSetInteger(0,MTLicLblname,OBJPROP_SELECTABLE,false);MTLicLblname="MTlic_line2";if(MQLInfoInteger(MQL_PROGRAM_TYPE)==PROGRAM_INDICATOR){if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,MTLic_ChartWindow(),0,0,0);}else{if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,0,0,0,0);}ObjectSetInteger(0,MTLicLblname,OBJPROP_COLOR,clrWhiteSmoke);ObjectSetInteger(0,MTLicLblname,OBJPROP_XDISTANCE,13+MTLic_DrawLabel_Xgap);ObjectSetInteger(0,MTLicLblname,OBJPROP_YDISTANCE,8+MTLic_DrawLabel_Ygap);ObjectSetString(0,MTLicLblname,OBJPROP_TEXT,"calculating remaining days...");ObjectSetInteger(0,MTLicLblname,OBJPROP_FONTSIZE,7);ObjectSetInteger(0,MTLicLblname,OBJPROP_ZORDER,30);ObjectSetInteger(0,MTLicLblname,OBJPROP_CORNER,MTLic_DrawLabel_corner);ObjectSetInteger(0,MTLicLblname,OBJPROP_ANCHOR,MTLic_DrawLabel_anchor);ObjectSetInteger(0,MTLicLblname,OBJPROP_SELECTABLE,false);ObjectSetString(0,MTLicLblname,OBJPROP_TEXT,MTLic_LicLableStr);MTLicLblname="MTlic_line1";if(MQLInfoInteger(MQL_PROGRAM_TYPE)==PROGRAM_INDICATOR){if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,MTLic_ChartWindow(),0,0,0);}else{if(ObjectFind(0,MTLicLblname)<0) ObjectCreate(0,MTLicLblname,OBJ_LABEL,0,0,0,0);}ObjectSetInteger(0,MTLicLblname,OBJPROP_COLOR,clrWhiteSmoke);ObjectSetInteger(0,MTLicLblname,OBJPROP_XDISTANCE,13+MTLic_DrawLabel_Xgap);ObjectSetInteger(0,MTLicLblname,OBJPROP_YDISTANCE,20+MTLic_DrawLabel_Ygap);ObjectSetString(0,MTLicLblname,OBJPROP_TEXT,MTlic_info_footer);ObjectSetInteger(0,MTLicLblname,OBJPROP_FONTSIZE,7);ObjectSetInteger(0,MTLicLblname,OBJPROP_ZORDER,30);ObjectSetInteger(0,MTLicLblname,OBJPROP_CORNER,MTLic_DrawLabel_corner);ObjectSetInteger(0,MTLicLblname,OBJPROP_ANCHOR,MTLic_DrawLabel_anchor);ObjectSetInteger(0,MTLicLblname,OBJPROP_SELECTABLE,false);ChartRedraw();}int MTLic_ChartWindow(){return 0;}
/*+--------------------------MTLicense Block2------------------------+*/
#include <Trade\Trade.mqh>
#define MT_WMCMD_EXPERTS 32851
#define WM_COMMAND 0x0111
#define GA_ROOT 2
#include <WinAPI\winapi.mqh>
#property strict
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
CPositionInfo m_position; // trade position object
CTrade m_trade;
enum Order
{
Fibo2,
Fibo3,
Fibo4,
Fibo5,
Fibo6,
Fibo7,
Fibo8,
Fibo9,
Fibo10
};
input string StopTradingTimeonFriday="14:00";
input string Start_trading="02:00";
input string End_trading="23:00";
input double Lots = 0.01; // Volume size
input double Multiplier = 1.8;
input double Initial_TakeProfit = 7;
double StopLoss = 0.0;
input double Min_pip = 1;
input double Max_pip = 35;
input double Over_Bought = 70;
input double Over_Sold = 30;
input Order Limit_Zero_Profit = Fibo9;
input double Fibo_first_tp = 0.38;
input double Fibo_1 = 1.0;
input double Fibo_2 = 1.5;
input double Fibo_3 = 2.0;
input double Fibo_4 = 2.5;
input double Fibo_5 = 3.0;
input double Fibo_6 = 4.0;
input double Fibo_7 = 5.0;
input double Fibo_8 = 6.0;
input double Fibo_9 = 7.0;
input double Fibo_10 = 8.0;
input double Fibo_11 = 9.0;
input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;
input bool Push_Notification = false;
input bool Alert_Message = false;
input int MagicNumber = 1551;
double Bid, Ask;
datetime openingTime;
long openingTimeSeconds;
string strs,level[],level_fibo[15];
int Data, count_level;
ulong lastTicket;
int Numerade;
int NumeradeProfit;
int Slipage = 1;
int LastDeal;
bool Agree;
CTrade trade;
datetime WorkDate = D'2025.04.30 15:00';
int AccountNumber = *********;
double open_price;
double initial_volume;
datetime time_setup;
long order_magic;
long positionID;
void OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
/*+--------------------------MTLicense Block4------------------------+*/
ObjectsDeleteAll(0,"MTlic_"); Comment("");
/*+--------------------------MTLicense Block4------------------------+*/
Comment(" ");
}
string TimeToPreviousFiveMinutesString(datetime time) {
MqlDateTime mqlTime;
TimeToStruct(time, mqlTime);
int minutes = (mqlTime.min / 5) * 5;
mqlTime.min = minutes;
datetime roundedTime = StructToTime(mqlTime);
return TimeToString(roundedTime, TIME_DATE|TIME_MINUTES);
}
double target,balance;
static datetime reorder;
int counter = 0;
double point;
void OnTick(){
// код доступен только после оплаты
}
double TakeBuy, TakeSell;
datetime timex;
void order(int type, int from){
double LOT;
if(OpenPos() == 0){
LOT = Lots;
}
else{
LOT = Lot[OpenPos()];
}
TakeBuy = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + Initial_TakeProfit*pips(),_Digits);
TakeSell = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID) - Initial_TakeProfit*pips(),_Digits);
MqlTradeRequest requestBuy={};
requestBuy.action=TRADE_ACTION_DEAL;
requestBuy.magic=MagicNumber; // ORDER_MAGIC
requestBuy.symbol=_Symbol;
requestBuy.volume=LOT;
requestBuy.price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
requestBuy.sl=0; // Stop Loss
requestBuy.tp=TakeBuy;
requestBuy.type=ORDER_TYPE_BUY;
MqlTradeResult resultBuy={};
MqlTradeRequest requestSell={};
requestSell.action=TRADE_ACTION_DEAL;
requestSell.magic=MagicNumber; // ORDER_MAGIC
requestSell.symbol=_Symbol;
requestSell.volume=LOT;
requestSell.price = SymbolInfoDouble(_Symbol,SYMBOL_BID); ;
requestSell.sl=0; // Stop Loss
requestSell.tp=TakeSell; // Take Profit
requestSell.type=ORDER_TYPE_SELL;
MqlTradeResult resultSell={};
if(timex != iTime(_Symbol, 0 , 0)){
if(type==1){
if(!OrderSend(requestSell,resultSell)) PriПоказано первые 50% кода (символов: 27523)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.