Elise-EA-Pattern
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «elise-ea-pattern.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Elise-EA-Pattern — торговый советник для MetaTrader 4, предназначенный для автоматического анализа рыночных данных и управления торговыми позициями. Программа считывает исторические данные из файлов, формирует торговые сигналы на основе технических индикаторов и паттернов свечей, а затем открывает или закрывает позиции в соответствии с полученными данными.
Советник поддерживает управление рисками через стоп-лосс, тейк-профит и трейлинг-стоп, а также позволяет задать целевую прибыль для автоматического закрытия всех позиций при её достижении. Дополнительно реализована функция автоматической смены таймфрейма по таймеру.
Перед запуском советник проверяет разрешение на использование DLL, срок действия лицензии и имя эксперта на графике. При несоответствии проверки запуск отменяется. Программа работает только на платформе MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| LicenceTO | Лицензия эксперта — Текстовый параметр, содержащий имя эксперта для проверки подлинности советника на графике. |
| LOTS | Объём лота — Размер лота для открытия позиций. |
| risk | Управление риском — Параметр управления риском: при значении 0 используется фиксированный размер лота, при значении больше 0 рассчитывается лот на основе процента от баланса. |
| MaxTrades | Максимальное количество сделок — Максимальное количество одновременных рыночных ордеров на одну сторону. |
| Stoploss | Стоп-лосс — Уровень стоп-лосса в пунктах для ограничения убытков. |
| TakeProfit | Тейк-профит — Уровень тейк-профита в пунктах для фиксации прибыли. |
| MaxSpread | Максимальный спред — Максимально допустимый спред в пунктах для открытия новых позиций. |
| Trailing | Трейлинг-стоп — Переключатель, включающий или отключающий функцию трейлинг-стоп. |
| TrailingExtra | Дополнительный трейлинг — Дополнительный параметр трейлинга, задающий величину в пунктах. |
| TrailingStop | Расстояние трейлинга — Расстояние трейлинг-стопа в пунктах от текущей цены. |
| TrailingStep | Шаг трейлинга — Шаг трейлинг-стопа в пунктах — интервал между текущей ценой и уровнем стоп-лосса при движении. |
| TrailStart | Начало трейлинга — Прибыль в пунктах, при достижении которой активируется трейлинг-стоп. |
| Slippage | Проскальзывание — Допустимое проскальзывание цены при исполнении торговых ордеров. |
| ManagementProfitTarget | Управление целевой прибылью — Текстовый параметр, задающий описание целевой прибыли для управления позициями. |
| UseProfitTarget | Использовать целевую прибыль — Переключатель, включающий или отключающий автоматическое закрытие всех позиций при достижении целевой прибыли. |
| ProfitTarget | Целевая прибыль — Значение целевой прибыли в долларах для автоматического закрытия всех позиций при достижении. |
Поиск по коду файла
#property version "1.65"
#property description "======Elise-EA-Pattern====="
#property description "=Minimum Deposit 500$/Pair"
#property description "=Recommended Pair EURUSD, GBPUSD, XAUUSD="
#property description "=TF M15="
#property description "----------Contact me-----------"
#property description "Join our Telegram Group : "
#property description "Telegram: "
#property strict
#include <stderror.mqh>
#include <stdlib.mqh>
#import "kernel32.dll"
int CreateFileW(string Filename,int AccessMode,int ShareMode,int PassAsZero,int CreationMode,int FlagsAndAttributes,int AlsoPassAsZero);
int GetFileSize(int FileHandle,int PassAsZero);
int SetFilePointer(int FileHandle,int Distance,int &PassAsZero[],int FromPosition);
int ReadFile(int FileHandle,uchar &BufferPtr[],int BufferLength,int &BytesRead[],int PassAsZero);
int CloseHandle(int FileHandle);
#import
string Ordercomment="";
int Retries=10;
bool AutoTrade=true;
bool ecnBroker=false;
extern string LicenceTO = "======Elise-EA-Pattern====="; // ===== Expert Name =====
int MagicID=714553;
input double LOTS=0.01; // Lots
input int risk=10;//risk: 0-->fixed lots
input int MaxTrades=100;
input double Stoploss=10; // SL (Pips)
double SL=Stoploss*10;
input double TakeProfit=10; // TP (Pips)
double TP=TakeProfit*10;
input int MaxSpread=30;
input bool Trailing = false;
input double TrailingExtra = 50.0;
input int TrailingStop=70;
input double TrailingStep =5;
input double TrailStart =10.0;
extern double Slippage = 20.0;
extern string ManagementProfitTarget ="======Management profit target in money======";
extern bool UseProfitTarget = false;
extern double ProfitTarget = 15;
union Price
{
uchar buffer[8];
double close;
};
double data[][2];
int BytesToRead;
string datapath;
string result;
Price m_price;
double g_Point;
int ticket=0;
datetime expDate=D'2030.12.30 20:00';//yyyy.mm.dd
int timeframes[] = {PERIOD_M1, PERIOD_H1, PERIOD_M30, PERIOD_M15, PERIOD_M5, PERIOD_M1}; // Timeframes to convert
int current_index = 0;
datetime last_switch_time = 0;
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
EventKillTimer();
}
void OnTick()
{
// код доступен только после оплаты
}
void ReadFileHst(string FileName)
{
int j=0;;
string strFileContents;
int Handle;
int LogFileSize;
int movehigh[1]= {0};
uchar buffer[];
int nNumberOfBytesToRead;
int read[1]= {0};
int i;
double mm;
strFileContents="";
Handle=CreateFileW(FileName,(int)0x80000000,3,0,3,0,0);
if(Handle==-1)
{
Comment("");
return;
}
LogFileSize=GetFileSize(Handle,0);
if(LogFileSize<=0)
{
return;
}
if((LogFileSize-148)/60==BytesToRead)
{
return;
}
SetFilePointer(Handle,148,movehigh,0);
BytesToRead=(LogFileSize-148)/60;
ArrayResize(data,BytesToRead,0);
nNumberOfBytesToRead=60;
ArrayResize(buffer,60,0);
for(i=0; i<BytesToRead; i=i+1)
{
ReadFile(Handle,buffer,nNumberOfBytesToRead,read,NULL);
if(read[0]==nNumberOfBytesToRead)
{
result=StringFormat("0x%02x%02x%02x%02x%02x%02x%02x%02x",buffer[7],buffer[6],buffer[5],buffer[4],buffer[3],buffer[2],buffer[1],buffer[0]);
m_price.buffer[0] = buffer[32];
m_price.buffer[1] = buffer[33];
m_price.buffer[2] = buffer[34];
m_price.buffer[3] = buffer[35];
m_price.buffer[4] = buffer[36];
m_price.buffer[5] = buffer[37];
m_price.buffer[6] = buffer[38];
m_price.buffer[7] = buffer[39];
mm=m_price.close;
data[j][0] = StringToDouble(result);
data[j][1] = mm;
j=j+1;
strFileContents=TimeToString(StringToTime(result),3)+" "+DoubleToString(mm,8);
}
else
{
CloseHandle(Handle);
return;
}
}
CloseHandle(Handle);
strFileContents=DoubleToString(data[j-1][0],3)+" "+DoubleToString(data[j-1][1],8)+" "+DoubleToString(data[j-2][1],3)+" "+DoubleToString(data[j-2][1],8);
result=strFileContents;
}
int fnGetLotDigit()
{
double l_LotStep=MarketInfo(Symbol(),MODE_LOTSTEP);
if(l_LotStep == 1)
return(0);
if(l_LotStep == 0.1)
return(1);
if(l_LotStep == 0.01)
return(2);
if(l_LotStep == 0.001)
return(3);
if(l_LotStep == 0.0001)
return(4);
return(1);
}
int CheckBuyOrders(int magic)
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=magic)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
op++;
break;
}
}
}
return(op);
}
int CheckSellOrders(int magic)
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=magic)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL)
{
op++;
break;
}
}
}
return(op);
}
int CheckTotalBuyOrders(int magic)
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=magic)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
op++;
}
}
}
return(op);
}
int CheckTotalSellOrders(int magic)
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=magic)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL)
{
op++;
}
}
}
return(op);
}
int CheckMarketSellOrders()
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=MagicID)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_SELL)
{
op++;
}
}
}
return(op);
}
int CheckMarketBuyOrders()
{
int op=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
int status=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()!=MagicID)
continue;
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
op++;
}
}
}
return(op);
}
bool MainOrders(int a_cmd_0,double price_24,double price_TP,double price_SL)
{
color color_8=Black;
int bClosed;
int nAttemptsLeft=Retries;
int cmd=0;
if(a_cmd_0 ==OP_BUY||a_cmd_0 ==OP_BUYSTOP)
cmd=0;
if(a_cmd_0 ==OP_SELL||a_cmd_0 ==OP_SELLSTOP)
cmd=1;
if(a_cmd_0==OP_BUYLIMIT || a_cmd_0==OP_BUY)
{
color_8=Blue;
}
else
{
if(a_cmd_0==OP_SELLLIMIT || a_cmd_0==OP_SELL)
{
color_8=Red;
}
}
double lots_32=NormalizeDouble(LOTS,fnGetLotDigit());
if(lots_32==0.0)
return(false);
double gd_532 = MarketInfo(Symbol(), MODE_MAXLOT);
double gd_540 = MarketInfo(Symbol(), MODE_MINLOT);
if(lots_32 > gd_532)
lots_32 = gd_532;
if(lots_32 < gd_540)
lots_32 = gd_540;
bClosed=false;
while((bClosed==false) && (nAttemptsLeft>=0))
{
nAttemptsLeft--;
RefreshRates();
if(!ecnBroker)
bClosed=OrderSend(Symbol(),a_cmd_0,lots_32,price_24,Slippage,price_SL,price_TP,Ordercomment,MagicID,0,color_8);
else
bClosed=OrderSend(Symbol(),a_cmd_0,lots_32,price_24,Slippage,0,0,Ordercomment,MagicID,0,color_8);
if(bClosed<=0)
{
int nErrResult=GetLastError();
if(a_cmd_0==0)
{
Print("FX EA Open New Buy FAILED : Error "+IntegerToString(nErrResult)+" ["+ErrorDescription(nErrResult)+".]");
Print(IntegerToString(a_cmd_0)+" "+DoubleToString(lots_32,2)+" "+DoubleToString(price_24,Digits));
}
Показано первые 50% кода (символов: 17975)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.