PZ Parabolic Sar EA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pz_parabolicsar_ea.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
PZ Parabolic Sar EA — советник для MetaTrader 4, использующий индикатор Parabolic SAR для генерации сигналов на открытие позиций. Советник открывает покупку, когда SAR расположен ниже цены закрытия свечи, и продажу — когда SAR выше цены закрытия. Стоп-лосс рассчитывается на основе индикатора ATR с настраиваемым периодом и множителем.
Советник поддерживает временные фильтры для ограничения торговли по часам и минутам, а также функцию трейлинг-стопа на базе ATR. Доступна частичная фиксация прибыли и механизм безубыточного перевода ордеров. Встроена система управления капиталом, позволяющая рассчитывать объём позиции на основе процента риска от баланса счёта или фиксированного размера лота.
Для управления ордерами используются стандартные торговые функции MetaTrader 4: OrderSend, OrderClose и OrderModify. Советник фильтрует позиции по магическому номеру и символу торгового инструмента. Параметры проскальзывания и торгового шага настраиваются отдельно.
Настройки программы
| Настройка | Описание |
|---|---|
| TL_Ex | Настройки временных ограничений — Группа настроек временных ограничений торговли |
| StartHour | Час начала торговли — Час начала торговой сессии (0 — без ограничений) |
| StartMinute | Минута начала торговли — Минута начала торговой сессии (0 — без ограничений) |
| EndHour | Час окончания торговли — Час окончания торговой сессии (0 — без ограничений) |
| EndMinute | Минута окончания торговли — Минута окончания торговой сессии (0 — без ограничений) |
| PS_Ex | Настройки Parabolic SAR — Группа настроек индикатора Parabolic SAR |
| PS_Ex2 | Настройки стратегии входа — Подгруппа настроек стратегии входа в позицию |
| TradeStep | Шаг SAR (вход) — Шаг SAR для стратегии входа в позицию |
| TradeMax | Максимум SAR (вход) — Максимальное значение SAR для стратегии входа |
| PS_Ex3 | Настройки стратегии выхода — Подгруппа настроек стратегии выхода из позиции |
| StopStep | Шаг SAR (стоп-лосс) — Шаг SAR для расчёта стоп-лосса |
| StopMax | Максимум SAR (стоп-лосс) — Максимальное значение SAR для стоп-лосса |
| SL_Ex | Настройки стоп-лосса — Группа настроек стоп-лосса |
| ATRPeriod | Период ATR (стоп-лосс) — Период индикатора ATR для расчёта стоп-лосса |
| ATRMultiplier | Множитель ATR (стоп-лосс) — Множитель ATR для расчёта стоп-лосса |
| TS_Ex | Настройки трейлинг-стопа — Группа настроек трейлинг-стопа |
| TS_Enabled | Трейлинг-стоп включён — Включает или отключает функцию трейлинг-стопа |
| TSATRPeriod | Период ATR (трейлинг-стоп) — Период индикатора ATR для расчёта уровня трейлинг-стопа |
| TSATRMultiplier | Множитель ATR (трейлинг-стоп) — Множитель ATR для расчёта уровня трейлинг-стопа |
| BE_Ex2 | Настройки частичного закрытия и безубыточного перевода — Группа настроек частичного закрытия и безубыточного перевода |
| PartialClosing | Частичное закрытие — Включает частичное закрытие позиции при достижении определённой прибыли |
| BreakEven | Безубыточный перевод — Включает автоматический перевод стоп-лосса в безубыточную зону |
| MM_Ex | Настройки управления капиталом — Группа настроек управления капиталом |
| MoneyManagement | Управление капиталом — Включает расчёт размера лота на основе процента риска от баланса счёта |
| RiskPercent | Процент риска — Процент риска от баланса счёта для расчёта размера лота при включённом управлении капиталом |
| LotSize | Размер лота — Фиксированный размер лота при отключённом управлении капиталом |
| EA_Ex | Настройки советника — Группа общих настроек советника |
| Slippage | Проскальзывание — Допустимое проскальзывание цены при исполнении ордеров |
| MagicNumber | Магический номер — Магический номер для идентификации ордеров советника |
Поиск по коду файла
#import "stdlib.ex4"
string ErrorDescription(int e);
#import
#define ShortName "PZ Parabolic Sar EA"
#define StopDivisor 1
#define PercentageToClose 0.50
#define Shift 1
extern string TL_Ex = "------- Hour settings: set to zero for no limitations";
extern int StartHour = 00;
extern int StartMinute = 30;
extern int EndHour = 23;
extern int EndMinute = 30;
extern string PS_Ex = "------- Parabolic SAR Settings";
extern string PS_Ex2 = ">> Entry strategy";
extern double TradeStep = 0.002;
extern double TradeMax = 0.2;
extern string PS_Ex3 = ">> Exit strategy";
extern double StopStep = 0.004;
extern double StopMax = 0.4;
extern string SL_Ex = "------- Stop-loss Settings";
extern int ATRPeriod = 30;
extern double ATRMultiplier = 2.5;
extern string TS_Ex = "------- Trailing-Stop Settings";
extern bool TS_Enabled = false;
extern double TSATRPeriod = 30;
extern double TSATRMultiplier = 1.75;
extern string BE_Ex2 = "------- Partial Closing and Break Even";
extern bool PartialClosing = true;
extern bool BreakEven = true;
extern string MM_Ex = "------- Money management";
extern bool MoneyManagement = true;
extern double RiskPercent = 2;
extern double LotSize = 0.1;
extern string EA_Ex = "------- EA Settings";
extern int Slippage = 5;
extern int MagicNumber = 12345;
double DecimalPip;
int LastOrderTicket[2];
datetime LastOrderTime[2];
double LastOrderLots[2];
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
/**
* Returns total opened trades
* @param int Type
* @param int Magic
* @return int
*/
int GetTotalTrades(int Type, int Magic)
{
int counter = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(ShortName +" (OrderSelect Error) "+ ErrorDescription(GetLastError()));
} else if(OrderSymbol() == Symbol() && (OrderType() == Type || Type == EMPTY_VALUE) && OrderMagicNumber() == Magic) {
counter++;
}
}
return(counter);
}
/**
* Closes desired orders
* @param int Type
*/
void CloseOrder(int Type, int Magic = EMPTY_VALUE)
{
int l_type;
if(Magic == EMPTY_VALUE) Magic = MagicNumber;
for(int i = OrdersTotal()-1; i >= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES); l_type = OrderType();
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && Type == l_type)
{
if(Type == OP_BUY || Type == OP_SELL)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Gold))
Print(ShortName +" (OrderClose Error) "+ ErrorDescription(GetLastError()));
}
}
}
}
/**
* Places an order
* @param int Type
* @param double Lotz
* @param double PendingPrice
*/
void PlaceOrder(int Type, double Lotz, int Magic = EMPTY_VALUE)
{
int err;
color l_color;
double l_price, l_sprice, l_stoploss = 0;
string action;
RefreshRates();
if(Magic == EMPTY_VALUE) Magic = MagicNumber;
if(Type == OP_BUY){ l_price = Ask; l_color = Blue; action = "Buy"; }
if(Type == OP_SELL){ l_price = Bid; l_color = Red; action = "Sell"; }
while (IsTradeContextBusy()) Sleep(1000);
int l_datetime = TimeCurrent();
int l_ticket = OrderSend(Symbol(), Type, Lotz, l_price, Slippage, 0, 0, "", Magic, 0, l_color);
if (l_ticket == -1)
{
while(l_ticket == -1 && TimeCurrent() - l_datetime < 60 && !IsTesting())
{
err = GetLastError();
if (err == 148) return;
Sleep(1000);
while (IsTradeContextBusy()) Sleep(1000);
RefreshRates();
Показано первые 50% кода (символов: 8141)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.