StepReversalEA
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «reverse pending1.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
StepReversalEA — торговый советник для MetaTrader 4, реализующий стратегию пиф-шаговых реверсий. Советник отслеживает движение цены базового актива и при достижении определённых уровней шага размещает отложенные ордера (Buy Stop / Sell Stop) в направлении текущего тренда.
При наличии открытых позиций советник дополнительно проверяет возможность установки реверсивных отложенных ордеров. Если открыта позиция Buy, формируется Sell Stop на расстоянии шага от текущей цены спроса, и наоборот для Sell-позиций. Количество одновременно существующих отложенных ордеров ограничивается параметром.
В качестве инструментов исполнения используются стандартные торговые функции MetaTrader 4. Все ордера маркируются магическим числом для удобной идентификации и управления.
Поиск по коду файла
extern double PipStep = 10; extern double LotSize = 0.01; extern double StopLoss = 10; extern double TakeProfit = 10; extern int MagicNumber = 123456; extern int MaxPendingOrders = 100;
int lastStepLevel = 0; double lastBasePrice = 0;
int OnInit() {
// код доступен только после оплаты
}
bool OrderExistsAtPrice(double price, int type) { for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber) { if (OrderType() == type && MathAbs(OrderOpenPrice() - price) < (PipStep * Point / 2)) return true; } } return false; }
int CountPendingOrders() { int count = 0; for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == MagicNumber) { if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP) count++; } } return count; }
void OnTick() {
// код доступен только после оплаты
} double currentPrice = NormalizeDouble(Ask, Digits); double stepSize = PipStep * Point;
int direction = (currentPrice > lastBasePrice) ? 1 : (currentPrice < lastBasePrice) ? -1 : 0;
int stepsMoved = int(MathAbs(currentPrice - lastBasePrice) / stepSize);
if (stepsMoved > lastStepLevel && direction != 0)
{
for (int j = lastStepLevel + 1; j <= stepsMoved; j++)
{
if (CountPendingOrders() >= MaxPendingOrders) break;
double orderPrice = lastBasePrice + direction * j * stepSize;
double entryPrice = NormalizeDouble(orderPrice - direction * stepSize, Digits);
if (direction > 0 && !OrderExistsAtPrice(entryPrice, OP_SELLSTOP))
{
OrderSend(Symbol(), OP_SELLSTOP, LotSize, entryPrice, 3,
NormalizeDouble(entryPrice + StopLoss * Point, Digits),
NormalizeDouble(entryPrice - TakeProfit * Point, DigiПоказано первые 50% кода (символов: 2643)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.