← К каталогу
Исходный код · ID 3402

Elise-EA-Pattern

elise-ea-pattern.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

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 и перейдите к оплате.

Стоимость полного кода
1 797,50₽ ≈ $21.97