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

phoenix_ea_v5_7_3_nmc.mq4

Вы автор или правообладатель?

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

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

О программе

Phoenix EA V5.7.3 — торговый советник для платформы MetaTrader 4, работающий в трёх режимах управления позициями. Советник анализирует ценовые данные с помощью набора технических индикаторов и формирует торговые сигналы на их совпадении. Поддерживается ручное и автоматическое управление рисками, а также функции трейлинг-стопа, выхода в безубыток и принудительного закрытия позиций по времени.

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

НастройкаОписание
C_INIT Разделитель начальных настроек — Текстовый параметр-разделитель для группы начальных настроек
True means the builtin values are used to trade (U_PrefSettings) Использовать встроенные настройки — Переключатель использования встроенных значений по умолчанию для выбранного инструмента
C_PhoenixSettings Разделитель настроек режима — Текстовый параметр-разделитель для группы настроек режима торговли
Daraknor changed 5.6.8 to mode 1 by default for stable trading 5.6.8 (U_Mode) Режим торговли — Выбор режима торговли: 1 — одна позиция, 2 — две позиции, 3 — три позиции
C_M1_Settings Разделитель настроек режима 1 — Текстовый параметр-разделитель для настроек режима 1
U_M1_BreakEvenAfterPips Безубыток после пунктов — Число пунктов прибыли, после которого позиция переводится в безубыток
set here to activate trailing stop, value of 0 disables. (P_M1_TS) Скользящий стоп режима 1 — Размер скользящего стопа в пунктах; ноль отключает функцию
C_M12_Settings Разделитель общих настроек режимов 1 и 2 — Текстовый параметр-разделитель для общих настроек режимов 1 и 2
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M12_TP) Тейк-профит режимов 1 и 2 — Уровень фиксации прибыли для режимов 1 и 2
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M12_SL) Стоп-лосс режимов 1 и 2 — Уровень стоп-лосса для режимов 1 и 2
set to number of trades to open (U_M12_MaxTrades) Максимум сделок — Максимальное количество одновременно открытых сделок
Set to number of Consec confirming signals. (U_M12_ConsecSignals) Подтверждающих сигналов — Требуемое количество последовательных совпадающих сигналов для входа
C_M2_Settings Разделитель настроек режима 2 — Текстовый параметр-разделитель для настроек режима 2
P_M2_OpenTrade_2 Открытие второй сделки — Порог прибыли первой сделки для запуска второй
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M2_TP) Тейк-профит режима 2 — Уровень фиксации прибыли для второй сделки режима 2
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M2_SL) Стоп-лосс режима 2 — Уровень стоп-лосса для второй сделки режима 2
U_M2_CloseTrade_1 Закрытие первой сделки — Автоматическое закрытие первой сделки при открытии второй
C_M3 Разделитель настроек режима 3 — Текстовый параметр-разделитель для настроек режима 3
P_M3_CloseTrade_23 Закрытие сделок 2 и 3 — Условие закрытия сделок 2 и 3 при убытке первой сделки в пунктах
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M3_TP) Тейк-профит режима 3 — Уровень фиксации прибыли для сделок режима 3
not necessary for standard currencies, assign here for U_PrefSettings=false (P_M3_SL) Стоп-лосс режима 3 — Уровень стоп-лосса для сделок режима 3
P_M3_T1adj Корректировка TP сделки 1 — Коэффициент корректировки уровня фиксации прибыли для первой сделки
P_M3_T2adj Корректировка TP сделки 2 — Коэффициент корректировки уровня фиксации прибыли для второй сделки
Added 5.7.0 (P_M3_T3adj) Корректировка TP сделки 3 — Коэффициент корректировки уровня фиксации прибыли для третьей сделки
C_Function_Y Разделитель управления рисками — Текстовый параметр-разделитель для группы настроек управления рисками
Money management (U_MM) Управление рисками — Включение автоматического управления размером лота
Money management will override setting (U_Lots) Базовый лот — Базовый размер лота при отключённом управлении рисками
U_MaxRisk Максимальный риск — Максимальный допустимый риск в процентах от свободного маржи
U_DecreaseFactor Фактор уменьшения лота — Параметр уменьшения лота при серии убыточных сделок
Micro means 0.01 lot size is allowed (U_AccIsMicro) Микросчёт — Флаг микросчёта, разрешающий минимальный размер лота 0.01
Получить полный код

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

#define MAGICMA_A  20061120   //modified to simple range by Daraknor 5.6.6
#define MAGICMA_B  20061121   //If you run two copies of Phoenix on one account, modify Magic numbers on one EA.

#define MAGICMA01  20061122
#define MAGICMA02  20061123
#define MAGICMA03  20061124

extern string     C_INIT                  = "=== Use INIT section - ignore all P_ settings =====";
extern bool       U_PrefSettings          = true;     //True means the builtin values are used to trade

extern string     C_PhoenixSettings       = "===== Phoenix Mode Selected ==============================";
extern int        U_Mode                  = 1;	//Daraknor changed 5.6.8 to mode 1 by default for stable trading 5.6.8

extern string     C_M1_Settings           = "====== Phoenix Mode 1 (Stable) ==================";
extern int        U_M1_BreakEvenAfterPips = 0;
extern int        P_M1_TS                 = 0;	//set here to activate trailing stop, value of 0 disables.
extern string     C_M12_Settings          = "==== Phoenix Mode 1 & 2 - shared fields ==================";
extern int        P_M12_TP                = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern int        P_M12_SL                = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern int        U_M12_MaxTrades         = 1;	//set to number of trades to open
extern int        U_M12_ConsecSignals     = 5;	//Set to number of Consec confirming signals.

extern string     C_M2_Settings           = "===== Phoenix Mode 2 (2 trades-testing, move 2nd SL)===";
extern int        P_M2_OpenTrade_2        = 0;
extern int        P_M2_TP                 = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern int        P_M2_SL                 = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern bool       U_M2_CloseTrade_1       = false;

extern string     C_M3                    = "====== Phoenix Mode 3 (3 trades-testing, moving SL, incr profit) =====";
extern int        P_M3_CloseTrade_23      = 0;
extern int        P_M3_TP                 = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern int        P_M3_SL                 = 0;	//not necessary for standard currencies, assign here for U_PrefSettings=false
extern double     P_M3_T1adj              = 0.8;
extern double     P_M3_T2adj              = 1.0;
extern double     P_M3_T3adj              = 1.2; 	//Added 5.7.0

extern string     C_Function_Y            = "====== U_MM Money Management decreases lotsize in a losing streak =====";
extern bool       U_MM                    = true;     //Money management
extern double     U_Lots                  = 1;        //Money management will override setting
extern double     U_MaxRisk               = 0.05;     //
extern int        U_DecreaseFactor        = 901000;   //
extern bool       U_AccIsMicro            = false;	 //Micro means 0.01 lot size is allowed

extern double     U_MinLot                = 00.01;	 //Set to be micro safe by default, maybe this should change
extern double     U_MaxLot                = 99.00;	 //Set to previous max value by default

extern string     C_Function_X            = "====== Grace Functionality ======";
extern int        U_GraceHours            = 0;       //Setting of 0 disables, 24 = 24 hours Daraknor 5.6.6
extern int        U_ForceHours            = 0;       //Setting of 0 disables, 48 = 48 hours Darankor 5.6.6
extern int        U_Grace_TS              = 10;	//Trailing stop in pips to use during Grace Exit: should be small

extern string     C_Signal1               = "====== Signal 1 ===================================";
extern bool       U_UseSig1               = true;
extern double     P_Percent               = 0;
extern int        P_EnvPeriod             = 0;

extern string     C_Signal2               = "====== Signal 2 ==================================";
extern bool       U_UseSig2               = true;
extern int        P_SMAPeriod             = 0;
extern int        P_SMA2Bars              = 0;

extern string     C_Signal3               = "====== Signal 3 ==================================";
extern bool       U_UseSig3               = true;
extern int        P_OSMAFast              = 0; //Daraknor 5.7.1 contrib Yashil, switched these to be standard usage.
extern int        P_OSMASlow              = 0; //Should have no visible effect at all.
extern double     P_OSMASignal            = 0;

extern string     C_Signal4               = "====== Signal 4 ==================================";
extern bool       U_UseSig4               = true;
extern int        P_Fast_Period           = 0;
       int        P_Fast_Price            = PRICE_OPEN;  // NOTE: not external - Daraknor 5.7.2
extern int        P_Slow_Period           = 0;
       int        P_Slow_Price            = PRICE_OPEN;  // NOTE: not external - Daraknor 5.7.2
extern double     P_DVBuySell             = 0;
extern double     P_DVStayOut             = 0;

extern string     C_Signal5               = "====== Signal 5 =================================";
extern bool       U_UseSig5               = true;
extern int        U_T1From                = 0;
extern int        U_T1Until               = 24;
extern int        U_T2From                = 0;
extern int        U_T2Until               = 0;
extern int        U_T3From                = 0;
extern int        U_T3Until               = 0;
extern int        U_T4From                = 0;
extern int        U_T4Until               = 0;

bool dummyResult;

int  W_Buy_Signal  =0;			//confirming signals code   Added 5.6.4
int  W_Sell_Signal =0;
int  W_s_time      =0;
int  W_M1_TS       =0;

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

if(P_M1_TS!=0) 
  {
    P_M12_TP = 999; // - pcontour TS update

    if( P_M1_TS <  MarketInfo(Symbol(),MODE_STOPLEVEL) )
      {
        Print("Trailing stop below broker minumum. TS changed to: ",MODE_STOPLEVEL);
        P_M1_TS  = MarketInfo(Symbol(),MODE_STOPLEVEL);
      }
   }

if(U_MinLot==0) U_MinLot = MarketInfo(Symbol(),MODE_MINLOT); //Pcontour 5.7.3
if(U_MaxLot==0) U_MaxLot = MarketInfo(Symbol(),MODE_MAXLOT); //Pcontour 5.7.3
   return(0);
}

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

void M1_A_Update_TStop_if_Applicable()
   {
   for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)          break;
      if(OrderMagicNumber()!=MAGICMA_A || OrderSymbol()!=Symbol()) continue;

      if(OrderType() == OP_BUY)
        {

         if(((Bid - OrderOpenPrice()) > 0) && (OrderStopLoss() < (Bid - Point * P_M1_TS)) && (Bid > OrderOpenPrice()))
           {
             if (P_M3_CloseTrade_23 > 1 )  W_M1_TS = P_M1_TS - MathRound ( ( (Bid - OrderOpenPrice()) / Point ) / P_M3_CloseTrade_23) ;
             else W_M1_TS = P_M1_TS;

             if (W_M1_TS < MarketInfo(Symbol(),MODE_STOPLEVEL))  W_M1_TS = MarketInfo(Symbol(),MODE_STOPLEVEL) ;

             dummyResult = OrderModify(
                        OrderTicket(),
                        OrderOpenPrice(),
                        Bid - Point * W_M1_TS,      //SL
                        Bid + Point * W_M1_TS,      //TP

                        0,
                        GreenYellow);
           }
         }

      if(OrderType() == OP_SELL)
        {

         if(((OrderOpenPrice() - Ask) > 0) && (OrderStopLoss() > (Ask + Point * P_M1_TS)) && (Ask < OrderOpenPrice()))
           {
             if (P_M3_CloseTrade_23 > 1 ) W_M1_TS = P_M1_TS - MathRound ( ( (OrderOpenPrice() - Ask) / Point ) / P_M3_CloseTrade_23 );
             else W_M1_TS = P_M1_TS;

             if (W_M1_TS < MarketInfo(Symbol(),MODE_STOPLEVEL))  W_M1_TS = MarketInfo(Symbol(),MODE_STOPLEVEL) ; 

             dummyResult = OrderModify(
                        OrderTicket(),
                        OrderOpenPrice(),
                        Ask + Point * W_M1_TS,      //SL
                        Ask - Point * W_M1_TS,      //TP

                        0,
                        Red);
           }
         }
      }
   }

void M1_B_Update_TStop_if_BreakEven()
   {
   for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)          break;
      if(OrderMagicNumber()!=MAGICMA_A || OrderSymbol()!=Symbol()) continue;

      if(OrderType() == OP_BUY)
         {

         if((Bid-OrderOpenPrice()) > (Point*U_M1_BreakEvenAfterPips) && (OrderStopLoss()< OrderOpenPrice()))

	   dummyResult = OrderModify(
                        OrderTicket(),
                        OrderOpenPrice(),
                        OrderOpenPrice(),
                        OrderTakeProfit(),
                        0,
                        GreenYellow);
         }

      if(OrderType() == OP_SELL)
         {

         if((OrderOpenPrice()-Ask) > (Point*U_M1_BreakEvenAfterPips)  && (OrderStopLoss()> OrderOpenPrice()))

            dummyResult = OrderModify(
                        OrderTicket(),
                        OrderOpenPrice(),
                        OrderOpenPrice(),
                        OrderTakeProfit(),
                        0,
                        Red);
         }
      }
   }

void M2_A_MakeSecondTrade_If_Profit()
   {
   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() > Point*P_M2_OpenTrade_2))
         {
         if(OrderSend(Symbol(),OP_BUY,Y_MM_OptimizeLotSize(),Ask,3,Ask - P_M2_SL * Point,Ask + P_M2_TP * Point,"Mode2_SecondTrade",MAGICMA_B,0,Blue) < 0)
            {
            err = GetLastError();
            Print("Error Ordersend(",err,"): ");
            return;
            }
         if(U_M2_CloseTrade_1==true) {M2_A_1_CloseFirstTrade();}
         return;
         }

      if(OrderType() == OP_SELL && (OrderOpenPrice()-Ask > Point*P_M2_OpenTrade_2))
         {
         if(OrderSend(Symbol(),OP_SELL,Y_MM_OptimizeLotSize(),Bid,3,Bid + P_M2_SL * Point,Bid - P_M2_TP*Point,"Mode2_SecondTrade",MAGICMA_B,0,Red) < 0)
            {
            err = GetLastError();
            Print("Error Ordersend(",err,"): ");
            return;
            }
         if(U_M2_CloseTrade_1==true) {M2_A_1_CloseFirstTrade();}
         return;
         }
      }
   }

int M2_A_1_CloseFirstTrade()
   {
   for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)          break;
      if(OrderMagicNumber()!=MAGICMA_A || OrderSymbol()!=Symbol()) continue;

         dummyResult = OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
         return(0);
      }
      return(0);
   }

int M3_A_Mode3_OpenTrade_If_Signal()
   {

   int Signal = 0, err = 0, total = OrdersTotal(), decimalPlaces=1;

   if(U_AccIsMicro==true)                        decimalPlaces=2;

   double lots123 = NormalizeDouble(Y_MM_OptimizeLotSize()/3,decimalPlaces);

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

   if(M3_A_1_NumberOfOpenPositions(Symbol()) < 1)
      {
      if(Z_CheckSignal(Signal)==1)
         {
         if(OrderSend(Symbol(),OP_SELL,lots123,Bid,3,Bid+P_M3_SL*Poin

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

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

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

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

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

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

Стоимость полного кода
2 324,60₽ ≈ $28.41