xau edu.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «xau edu.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
XAU EDU — советник для MetaTrader 4, работающий на каждом тике. Он рассчитывает текущий индикатор ATR заданного периода и использует его для управления рисками: устанавливает стоп-лоссы на открытых позициях и определяет уровень фиксации прибыли.
Советник размещает отложенные ордера Buy Stop и Sell Stop на заданном расстоянии в пипсах от текущей цены, формируя микросетку. Перед размещением проверяет минимальное расстояние до стоп-уровня брокера и нормализует цены.
Отложенные ордера, возраст которых превышает заданное время в секундах, автоматически удаляются. Если на символе нет ни открытых позиций, ни отложенных ордеров, советник размещает новую пару сеточных ордеров. Все операции выполняются через торговые функции MetaTrader 4 с использованием магического номера для идентификации ордеров.
Настройки программы
| Настройка | Описание |
|---|---|
| MagicNumber | Магический номер для идентификации ордеров и позиций, управляемых данным советником. |
| LotSize | Объём сделки, используемый при открытии и закрытии позиций. |
| ATR_Period | Период индикатора ATR, используемый для расчёта волатильности и определения расстояний стоп-лосса и тейка-профита. |
| ATR_Multiplier | Множитель ATR для определения расстояния фиксации прибыли: при достижении прибыли в ATR_Multiplier * ATR пунктов позиция закрывается. |
| GridDistancePips | Расстояние в пипсах от текущей цены для размещения отложенных ордеров Buy Stop и Sell Stop. |
| ExpirationSeconds | Время в секундах, по истечении которого неисполненные отложенные ордера удаляются. |
| ATR_SL_Multiplier | Множитель ATR для расчёта расстояния стоп-лосса, устанавливаемого на открытых позициях без защитного стопа. |
Поиск по коду файла
#property strict
input int MagicNumber = 1001;
input double LotSize = 0.01;
input int ATR_Period = 200;
input double ATR_Multiplier = 1.5;
input double GridDistancePips = 1.5;
input int ExpirationSeconds = 60;
input double ATR_SL_Multiplier = 0.5;
void OnTick() {
// код доступен только после оплаты
}
void PlaceMicroGrid() {
double pipSize = Point;
if(Digits == 3 || Digits == 5) {
pipSize *= 10;
}
double rawBuyPrice = Ask + (GridDistancePips * pipSize);
double rawSellPrice = Bid - (GridDistancePips * pipSize);
double buyStopPrice = NormalizeDouble(rawBuyPrice, Digits);
double sellStopPrice = NormalizeDouble(rawSellPrice, Digits);
double stopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL) * Point;
if((buyStopPrice - Ask) < stopLevel) buyStopPrice = NormalizeDouble(Ask + stopLevel, Digits);
if((Bid - sellStopPrice) < stopLevel) sellStopPrice = NormalizeDouble(Bid - stopLevel, Digits);
int ticketBuy = OrderSend(Symbol(), OP_BUYSTOP, LotSize, buyStopPrice, 3, 0, 0, "Glutton_Buy", MagicNumber, 0, clrBlue);
if (ticketBuy < 0) Print("Erro ao abrir Buy Stop: ", GetLastError());
int ticketSell = OrderSend(Symbol(), OP_SELLSTOP, LotSize, sellStopPrice, 3, 0, 0, "Glutton_Sell", MagicNumber, 0, clrRed);
if (ticketSell < 0) Print("Erro ao abrir Sell Stop: ", GetLastError());
}
void InjectImmediateSL(double atrValue) {
double slDistance = atrValue * ATR_SL_Multiplier;
for (int i = OrdersTotal() - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
if (OrderStopLoss() == 0.0) {
double slPrice = 0.0;
if (OrderType() == OP_BUY) {
slPrice = NormalizeDouble(OrderOpenPrice() - slDistance, Digits);
}
else if (OrderType() == OP_SELL) {
slPrice = NormalizeDouble(OrderOpenPrice() + slDistance, Digits);
Показано первые 50% кода (символов: 3285)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.