phoenixea.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «phoenixea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.