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

phoenixea.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник для платформы MetaTrader 4, написанный на языке MQL4. Реализует несколько торговых режимов («Phoenix Mode»), каждый из которых управляет открытием, закрытием и модификацией позиций. Поддерживает пять независимых сигналов на основе технических индикаторов, управление лотами с учётом риска, трейлинг-стоп, выход в безубыток и ограничение по времени торговли. Советник работает с ордерами и позициями, используя торговый API MetaTrader 4.

Настройки программы

НастройкаОписание
GeneralSettings Общие настройки — Текстовый разделитель группы общих параметров.
PhoenixMode Режим работы — Выбор режима советника: классический, со второй сделкой или с тремя сделками одновременно.
Lots Лот — Фиксированный размер лота для торговли.
MaximumRisk Максимальный риск — Максимальный процент свободного маржи, используемый для расчёта размера лота.
DecreaseFactor Фактор уменьшения — Коэффициент уменьшения лота после серий убыточных сделок.
MM Управление рисками — Включение или отключение автоматического управления размером лота.
PrefSettings Предустановки — Включение автоматической загрузки параметров, оптимизированных для конкретного инструмента.
CloseAfterHours Закрытие после часов — Автоматическое закрытие убыточных позиций по истечении заданного количества часов.
BreakEvenAfterPips Безубыток после пипсов — Перевод стоп-лосса в точку безубытка после достижения указанного количества пипсов прибыли.
Mode1 Режим 1 — Текстовый разделитель группы параметров режима 1.
TakeProfit Тейк-профит — Размер прибыли в пипсах для фиксации прибыли.
StopLoss Стоп-лосс — Размер убытка в пипсах для ограничения потерь.
TrailingStop Трейлинг-стоп — Расстояние в пипсах для трейлинга стоп-лосса.
Mode2 Режим 2 — Текстовый разделитель группы параметров режима 2.
Mode2_OpenTrade_2 Открытие второй сделки — Расстояние в пипсах от цены открытия первой сделки для открытия второй.
Mode2_TakeProfit Тейк-профит режима 2 — Размер прибыли в пипсах для второй сделки.
Mode2_StopLoss Стоп-лосс режима 2 — Размер убытка в пипсах для второй сделки.
Mode2_CloseFirstTrade Закрытие первой сделки — Флаг автоматического закрытия первой сделки при открытии второй.
Mode3 Режим 3 — Текстовый разделитель группы параметров режима 3.
Mode3_CloseTrade2_3 Закрытие сделок 2 и 3 — Расстояние в пипсах от цены открытия для закрытия второй и третьей сделок.
Mode3_TakeProfit Тейк-профит режима 3 — Размер прибыли в пипсах для третьей сделки.
Mode3_StopLoss Стоп-лосс режима 3 — Размер убытка в пипсах для третьей сделки.
Signal1 Сигнал 1 — Текстовый разделитель группы параметров первого сигнала.
UseSignal1 Использовать сигнал 1 — Включение или отключение первого сигнала на основе полос Боллинджера.
Percent Процент — Процент отклонения для расчёта верхней и нижней полос сигнала.
EnvelopePeriod Период оболочки — Период скользящей средней для расчёта полос сигнала.
Signal2 Сигнал 2 — Текстовый разделитель группы параметров второго сигнала.
UseSignal2 Использовать сигнал 2 — Включение или отключение второго сигнала на основе пересечения скользящих средних.
SMAPeriod Период SMA — Период скользящей средней для второго сигнала.
SMA2Bars Бары SMA — Смещение по барам для второй скользящей средней второго сигнала.
Signal3 Сигнал 3 — Текстовый разделитель группы параметров третьего сигнала.
UseSignal3 Использовать сигнал 3 — Включение или отключение третьего сигнала на основе осциллятора OSMA.
OSMAFast Быстрая OSMA — Быстрая периодичность для осциллятора OSMA.
OSMASlow Медленная OSMA — Медленная периодичность для осциллятора OSMA.
OSMASignal Сигнальная OSMA — Период сигнальной линии для осциллятора OSMA.
Signal4 Сигнал 4 — Текстовый разделитель группы параметров четвёртого сигнала.
UseSignal4 Использовать сигнал 4 — Включение или отключение четвёртого сигнала на основе дивергенции.
Fast_Period Быстрый период — Период быстрой скользящей средней для расчёта дивергенции.
Fast_Price Быстрая цена — Тип цены для быстрой скользящей средней.
Slow_Period Медленный период — Период медленной скользящей средней для расчёта дивергенции.
Slow_Price Медленная цена — Тип цены для медленной скользящей средней.
DVBuySell Порог покупки/продажи — Пороговое значение дивергенции для формирования сигналов на покупку или продажу.
DVStayOut Порог удержания — Пороговое значение дивергенции для фильтрации сигналов.
Signal5 Сигнал 5 — Текстовый разделитель группы параметров пятого сигнала.
UseSignal5 Использовать сигнал 5 — Включение или отключение пятого сигнала на основе временных интервалов торговли.
TradeFrom1 Начало торговли 1 — Начальный час для первого временного интервала торговли.
TradeUntil1 Окончание торговли 1 — Конечный час для первого временного интервала торговли.
TradeFrom2 Начало торговли 2 — Начальный час для второго временного интервала торговли.
TradeUntil2 Окончание торговли 2 — Конечный час для второго временного интервала торговли.
TradeFrom3 Начало торговли 3 — Начальный час для третьего временного интервала торговли.
TradeUntil3 Окончание торговли 3 — Конечный час для третьего временного интервала торговли.
TradeFrom4 Начало торговли 4 — Начальный час для четвёртого временного интервала торговли.
TradeUntil4 Окончание торговли 4 — Конечный час для четвёртого временного интервала торговли.
Получить полный код

Поиск по коду файла

#define MAGICMA_A  20050610
#define MAGICMA_B  20060611

#define MAGICMA01  20050612
#define MAGICMA02  20060613
#define MAGICMA03  20060614

extern string     GeneralSettings         = "===== General Settings ============================";
extern int        PhoenixMode             = 3;
extern double     Lots                    = 1;
extern double     MaximumRisk             = 0.05;
extern int        DecreaseFactor          = 0;
extern bool       MM                      = true;
extern bool       AccountIsMicro          = false;

extern bool       PrefSettings            = true;

extern int        CloseAfterHours         = 0;
extern int        BreakEvenAfterPips      = 0;

extern string     Mode1                   = "====== Phoenix Mode 1 (Classic) ==================";
extern int        TakeProfit              = 0;
extern int        StopLoss                = 0;
extern int        TrailingStop            = 0;

extern string     Mode2                   = "====== Phoenix Mode 2 (Second trade)==============";
extern int        Mode2_OpenTrade_2       = 0;
extern int        Mode2_TakeProfit        = 0;
extern int        Mode2_StopLoss          = 0;
extern bool       Mode2_CloseFirstTrade   = false;

extern string     Mode3                   = "====== Phoenix Mode 3 (Three trades at once) =====";
extern int        Mode3_CloseTrade2_3     = 0;
extern int        Mode3_TakeProfit        = 0;
extern int        Mode3_StopLoss          = 0;

extern string     Signal1                 = "====== Signal 1 ===================================";
extern bool       UseSignal1              = true;
extern double     Percent                 = 0;
extern int        EnvelopePeriod          = 0;

extern string     Signal2                 = "====== Signal 2 ==================================";
extern bool       UseSignal2              = true;
extern int        SMAPeriod               = 0;
extern int        SMA2Bars                = 0;

extern string     Signal3                 = "====== Signal 3 ==================================";
extern bool       UseSignal3              = true;
extern int        OSMAFast                = 0;
extern int        OSMASlow                = 0;
extern double     OSMASignal              = 0;

extern string     Signal4                 = "====== Signal 4 ==================================";
extern bool       UseSignal4              = true;
extern int        Fast_Period             = 0;
extern int        Fast_Price              = PRICE_OPEN;
extern int        Slow_Period             = 0;
extern int        Slow_Price              = PRICE_OPEN;
extern double     DVBuySell               = 0;
extern double     DVStayOut               = 0;

extern string     Signal5                 = "====== Signal 5 =================================";
extern bool       UseSignal5              = true;
extern int        TradeFrom1              = 0;
extern int        TradeUntil1             = 24;
extern int        TradeFrom2              = 0;
extern int        TradeUntil2             = 0;
extern int        TradeFrom3              = 0;
extern int        TradeUntil3             = 0;
extern int        TradeFrom4              = 0;
extern int        TradeUntil4             = 0;

double Poin;

int init()
{
      // код доступен только после оплаты
   }

void start()
   {
      // код доступен только после оплаты
   } 

int CalculateCurrentOrders(string symbol)
  {
   int count=0;

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && (OrderMagicNumber()==MAGICMA_A || OrderMagicNumber()==MAGICMA_B))
        {
         count++;
        }
     }
     return(count);
  }

int CheckOpenTrade()
{      
int Signal=0, err = 0, total = OrdersTotal();

if(CalculateCurrentOrders(Symbol()) < 1)
   {  
   if(CheckSignal(Signal)==1)
      {
      if(OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Poin,Bid-TakeProfit*Poin,"FirstTrade",MAGICMA_A,0,Red) < 0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
       return(0);
      }

   if(CheckSignal(Signal)==2)
      {
      if(OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Poin,Ask+TakeProfit*Poin,"FirstTrade",MAGICMA_A,0,Blue) < 0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      return(0);
      }
   }
}

int CheckOpenTradeMode123()
{

int Signal = 0, err = 0, total = OrdersTotal(), decimalPlaces=1;
if(AccountIsMicro==true) decimalPlaces=2;
double lots123 = NormalizeDouble(LotsOptimized()/3,decimalPlaces);

if(lots123 < 0.1 && AccountIsMicro==false) {lots123=0.1;}
if(lots123 < 0.01 && AccountIsMicro==true) {lots123=0.01;}

if(Mode3CalculateCurrentOrders(Symbol()) < 1)      
   {
   if(CheckSignal(Signal)==1)
      {
      if(OrderSend(Symbol(),OP_SELL,lots123,Bid,3,Bid+Mode3_StopLoss*Poin,Bid-NormalizeDouble(Mode3_TakeProfit/2,0)*Poin,"Mode3_FirstTrade",MAGICMA01,0,Red)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }

      if(OrderSend(Symbol(),OP_SELL,lots123,Bid,3,Bid+Mode3_StopLoss*Poin,Bid-Mode3_TakeProfit*Poin,"Mode3_SecondTrade",MAGICMA02,0,Red)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }

      if(OrderSend(Symbol(),OP_SELL,lots123,Bid,3,Bid+Mode3_StopLoss*Poin,Bid-NormalizeDouble(Mode3_TakeProfit*1.5,0)*Poin,"Mode3_ThirdTrade",MAGICMA03,0,Red)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      return(0);
      }

   if(CheckSignal(Signal)==2)
      {
      if(OrderSend(Symbol(),OP_BUY,lots123,Ask,3,Ask-Mode3_StopLoss*Poin,Ask+NormalizeDouble(Mode3_TakeProfit/2,0)*Poin,"Mode3_FirstTrade",MAGICMA01,0,Blue)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }      
      if(OrderSend(Symbol(),OP_BUY,lots123,Ask,3,Ask-Mode3_StopLoss*Poin,Ask+Mode3_TakeProfit*Poin,"Mode3_SecondTrade",MAGICMA02,0,Blue)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      if(OrderSend(Symbol(),OP_BUY,lots123,Ask,3,Ask-Mode3_StopLoss*Poin,Ask+NormalizeDouble(Mode3_TakeProfit*1.5,0)*Poin,"Mode3_ThirdTrade",MAGICMA03,0,Blue)<0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      return(0);
      }
   } 
}

void CheckSecondTrade()
{
int err = 0, total = OrdersTotal();

for(int z = total - 1; z >= 0; z --)
   {
   if(!OrderSelect( z, SELECT_BY_POS))
      {
      err = GetLastError();
      Print("OrderSelect( ", z, ", SELECT_BY_POS ) - Error #",err );
      continue;
      }

   if(OrderSymbol() != Symbol()) continue;

   if(OrderMagicNumber() == MAGICMA_B) break;

   if(OrderMagicNumber() != MAGICMA_A) continue;

   if(OrderType() == OP_BUY && (Bid-OrderOpenPrice() > Poin*Mode2_OpenTrade_2))
      {   
      if(OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask - Mode2_StopLoss * Poin,Ask + Mode2_TakeProfit * Poin,"Mode2_SecondTrade",MAGICMA_B,0,Blue) < 0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      if(Mode2_CloseFirstTrade==true) {CloseFirstTrade();}
      return(0);  
      }

   if(OrderType() == OP_SELL && (OrderOpenPrice()-Ask > Poin*Mode2_OpenTrade_2))
      {
      if(OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid + Mode2_StopLoss * Poin,Bid - Mode2_TakeProfit*Poin,"Mode2_SecondTrade",MAGICMA_B,0,Red) < 0)
         {
         err = GetLastError();
         Print("Error Ordersend(",err,"): ");
         return(-1);
         }
      if(Mode2_CloseFirstTrade==true)

Показано первые 50% кода (символов: 16410)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
1 641₽ ≈ $20.06