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

bambang aryawan v2@lifeindreamsworld.mq4

Похожие материалы по тегам

gg_master.mq5MQL5 / MetaTrader 5 · 1 общих теговxbest_rv3 (1).47.mq4MQL4 / MetaTrader 4 · 1 общих теговtrend_catcher.mq4MQL4 / MetaTrader 4 · 1 общих теговcoin_flip.mq4MQL4 / MetaTrader 4 · 1 общих теговbambang aryawan v2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!caio trader.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный советник для MetaTrader 4 реализует стратегию усреднения с мартингейлом. При отсутствии открытых позиций он определяет направление на основе сравнения закрытия текущей свечи M30 с дневным High/Low предыдущего дня: если закрытие выше предыдущего дневного максимума — открывается продажа, если ниже минимума — покупка. При наличии открытых позиций советник добавляет усредняющие ордера с заданным шагом и увеличением лота по мартингейлу.

Советник включает несколько систем управления рисками: закрытие позиций по процентной просадке от эквити, ежедневная цель прибыли и лимит убытка, рассчитываемые от баланса. При достижении заданных порогов торговля блокируется до появления новой дневной свечи. Все параметры настраиваются из интерфейса платформы.

Торговые операции выполняются через стандартные функции OrderSend и OrderClose с проверкой свободного маржинального баланса и допустимого объёма лотов. Советник также проверяет ограничение брокера на количество открытых ордеров перед каждой попыткой входа в позицию.

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

НастройкаОписание
LotSize Начальный размер лота для первой позиции. Корректируется в пределах минимального и максимального лота, допустимого брокером.
Martingale Множитель мартингейла, определяющий увеличение размера лота при каждом последующем усредняющем ордере.
JarakStepOrders Расстояние в пунктах между усредняющими ордерами. Если заданное значение меньше минимального стоп-уровя брокера, используется минимально допустимое расстояние.
MaxOrders Максимальное количество открытых ордеров одного типа (Buy или Sell), которые советник допускает на символе.
UseCloseOffMaxDD Переключатель автоматического закрытия всех позиций при превышении заданного процента максимальной просадки (DrawdownPercent).
DrawdownPercent Процент просадки эквити от баланса, при превышении которого происходит автоматическое закрытие всех открытых позиций (если включён параметр UseCloseOffMaxDD).
UsePercentTP Переключатель закрытия позиций при достижении процентной прибыли от баланса (PercentTP).
PercentTP Процент прибыли от баланса, при достижении которого все позиции закрываются (если включён параметр UsePercentTP).
UsePercentSL Переключатель закрытия позиций при достижении процентного убытка от баланса (PercentSL).
PercentSL Процент убытка от баланса, при достижении которого все позиции закрываются (если включён параметр UsePercentSL).
UseDailyTargetPercent Переключатель ежедневной цели прибыли. При достижении DailyTargetPercent торговля блокируется до новой дневной свечи.
DailyTargetPercent Целевой процент ежедневной прибыли от баланса аккаунта. При достижении этого порога торговля блокируется до появления новой дневной свечи (если включён параметр UseDailyTargetPercent).
UseDailyLossPercent Переключатель ежедневного лимита убытка. При достижении DailyLossPercent торговля блокируется до новой дневной свечи.
DailyLossPercent Максимальный процент ежедневного убытка от баланса аккаунта. При достижении этого порога торговля блокируется до появления новой дневной свечи (если включён параметр UseDailyLossPercent).
MaxOrderHistoryDays Максимальное количество дней истории ордеров, учитываемых при расчёте ежедневной прибыли и убытка.
Slippage Допустимое проскальзывание цены в пунктах при открытии и закрытии ордеров.
MagicNumber Магический номер, используемый для идентификации ордеров, открытых данным советником, при фильтрации на символе.
Получить полный код

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

#property version   "2.00"
#property description " EA Averaging martingale based of HiLo"
#property strict

/* 
* last version v1 *
This EA is based on a request by om bambang aryawan , 
the rule is if close is greater than the previous high, run averaging sell martingale,
if close is smaller than the previous low, run averaging buy martingale.
close is by percent ,
distance between orders can be adjusted,
this EA is guaranteed zero error and zero warning ,
guaranteed 100% passes publishing on MQL5 market place ,
I created this EA so that friends can learn to become professional EA sellers in the market place .

* revisi logic v2 * 
-if M30 close is lower than previous day's low candle, open sell
-if M30 close is higher than previous day's high candle, open sell
-add daily target profit by percent
-add daily stop loss by percent

***Trading Risk Disclaimer***

Foreign exchange, stock, commodity, and other financial instruments trading involves high risk and is not suitable for all investors. 
Before deciding to participate in the financial markets, you must consider your investment goals, experience level, 
and risk tolerance carefully. There is a possibility that you may experience losses from part or all of your initial investment, 
therefore you should not invest money that you cannot afford to lose.

*/

#import "stdlib.ex4"
   string ErrorDescription(int errorcode); 
#import

enum Opsi
{
   Yes = 1,
   No = 0
};

extern double              LotSize                    = 0.01;
extern double              Martingale                 = 1.2;  
extern double              JarakStepOrders            = 10;
extern int                 MaxOrders                  = 100;   
extern Opsi                UseCloseOffMaxDD           = No;                        
extern double              DrawdownPercent            = 30;                      
extern Opsi                UsePercentTP               = Yes;
extern double              PercentTP                  = 0.03;
extern Opsi                UsePercentSL               = No;
extern double              PercentSL                  = 0;
extern bool                UseDailyTargetPercent      = true;
extern double              DailyTargetPercent         = 0.1; // Target keuntungan harian dalam persen
extern bool                UseDailyLossPercent        = false;
extern double              DailyLossPercent           = 0.5; // Batas kerugian harian dalam persen
extern int                 MaxOrderHistoryDays        = 1; // Maksimal hari untuk memeriksa order historis
extern int                 Slippage                   = 5;
extern int                 MagicNumber                = 0;

bool ControlFlag = true; // ControlFlag
double AutoPoint;
int getlasterror;
int tiket;
double price;
string error;

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

void OnDeinit(const int reason)
{

}

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

double FindLastOrderPrice(int orderType) //Function to find price value based on order type
{
   double lastOrderPrice = 0;
   int prevTicket = 0;

   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() == orderType)
         {
            int curTicket = OrderTicket();
            if (curTicket > prevTicket)
            {
               lastOrderPrice = OrderOpenPrice();
               prevTicket = curTicket;
            }
         }
      }
   }
   return lastOrderPrice;
}

void CloseAllOrders(int orderType) // Fungsi untuk menutup semua pesanan dengan tipe tertentu
{
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS) && OrderType() == orderType)
        {
            if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage))
            {
               Print("gagal close");
            }
        }
    }
}

void DeletePoOrders(int orderType) // Fungsi untuk menutup semua pesanan dengan tipe tertentu
{
    for (int i = OrdersTotal() - 1; i >= 0; i--)
    {
        if (OrderSelect(i, SELECT_BY_POS) && OrderType() == orderType)
        {
            if(!OrderDelete(OrderTicket(), clrGray))
            {
               Print("gagal Delete PO");
            }
        }
    }
}

int jumlahorder(int tipe) // fungsi menghitung jumlah order.
{
   int total = 0;
   for (int i = 0; i < OrdersTotal(); i++)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRA

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

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

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

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

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

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

Стоимость полного кода
1 161,90₽ ≈ $14.20