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

Pak Sugiman Hedging

pak sugiman hedging.mq4

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

one shoot ai v4.mq5MQL5 / MetaTrader 5 · 1 общих теговindicatorgoldy.pineTradingView · 1 общих теговeatelemetry.mqhMQL4 / MetaTrader 4 · 1 общих теговdrawdownmeter.mq4MQL4 / MetaTrader 4 · 1 общих теговaccountequityanalyzer@lifeindreamsworld.mq4MQL4 / MetaTrader 4 · 1 общих теговaccountequityanalyzer v1.1.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник для платформы MetaTrader 4, реализующий стратегию хеджирования с постепенным увеличением объёма позиций. Советник открывает начальные рыночные ордера на покупку и продажу, а при наличии активных позиций размещает встречные отложенные ордера с нарастающими объёмами. Он отслеживает состояние открытых и отложенных ордеров, управляет неисполненными стоп-ордерами и выводит на график текущие торговые показатели, включая баланс, плавающую прибыль и максимальную просадку.

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

НастройкаОписание
Nama EA (EA1) Имя советника — Текстовый идентификатор, используемый в комментариях к ордерам
TF Id No. (magic) Магический номер — Целочисленный идентификатор ордеров для разделения торговых потоков
lot 1 (lot_0) Лот уровня 1 — Начальный объём позиции для первого уровня
lot 2 (lot_1) Лот уровня 2 — Объём позиции для второго уровня
lot 3 (lot_2) Лот уровня 3 — Объём позиции для третьего уровня
lot 4 (lot_3) Лот уровня 4 — Объём позиции для четвёртого уровня
lot 5 (lot_4) Лот уровня 5 — Объём позиции для пятого уровня
lot 6 (lot_5) Лот уровня 6 — Объём позиции для шестого уровня
lot 7 (lot_6) Лот уровня 7 — Объём позиции для седьмого уровня
lot 8 (lot_7) Лот уровня 8 — Объём позиции для восьмого уровня
lot 9 (lot_8) Лот уровня 9 — Объём позиции для девятого уровня
lot 10 (lot_9) Лот уровня 10 — Объём позиции для десятого уровня
lot 11 (lot_10) Лот уровня 11 — Объём позиции для одиннадцатого уровня
lot 12 (lot_11) Лот уровня 12 — Объём позиции для двенадцатого уровня
Spread (Pips) (spread) Спред в пунктах — Значение спреда, используемое при расчёте условий размещения встречных ордеров
TakeProfit (Pips) (takeprofit) Тейк-профит в пунктах — Размер фиксации прибыли в пунктах для рыночных ордеров
Stoploss (Pips) (stoploss) Стоп-лосс в пунктах — Размер стоп-лосса в пунктах для рыночных ордеров
Open Initial Buy Order (openbuy) Открытие покупок — Включает или отключает открытие начальных рыночных ордеров на покупку
Open Initial Sell Order (opensell) Открытие продаж — Включает или отключает открытие начальных рыночных ордеров на продажу
Enable EA (enable_ea) Включение советника — Общий переключатель активности советника
Max No Of Orders (maxlayer) Максимальное количество уровней — Ограничение на число уровней и соответствующих ордеров
Получить полный код

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

#property version   "1.00"
#property strict
#property description " Created For Pak Sugiman. Telegram. 5.4.2017"

string EA;
string buy  =  " buy- ";
string sell =  " sell- ";
extern string EA1                      =  "PJ Dewa Hedging";        //  Nama EA 
extern int magic                       =  12345;                    //  TF Id No.
int    magic1                          =  6655;
int    magic2                          =  6656;

extern double lot_0                    =  0.01;         //  lot 1
extern double lot_1                    =  0.04;         //  lot 2
extern double lot_2                    =  0.09;         //  lot 3
extern double lot_3                    =  0.20;         //  lot 4
extern double lot_4                    =  0.42;         //  lot 5
extern double lot_5                    =  0.86;         //  lot 6
extern double lot_6                    =  1.74;         //  lot 7
extern double lot_7                    =  3.50;         //  lot 8
extern double lot_8                    =  7.10;         //  lot 9
extern double lot_9                    =  14.4;         //  lot 10
extern double lot_10                   =  30.00;        //  lot 11
extern double lot_11                   =  61.00;        //  lot 12

extern double spread                   =  2.6;          //  Spread (Pips)
extern int    takeprofit               =  20;           //  TakeProfit (Pips)
extern int    stoploss                 =  40;           //  Stoploss (Pips)

extern bool openbuy                    =  true;         //  Open Initial Buy Order
extern bool opensell                   =  true;         //  Open Initial Sell Order
extern bool enable_ea                  =  true;         //  Enable EA

extern int    maxlayer                 =  12;           //  Max No Of Orders 

int newcount_mbuy                      =  0;
int newcount_msell                     =  0;

double lots                            [];

double drawdown                        =  0;

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

void OnDeinit(const int reason)
  {

   EventKillTimer();

  }

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

void OnTimer()
  {

  }

double OnTester()
  {

   double ret=0.0;

   return(ret);
  }

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

  }

double stoplvl()
{
double value    =  0;
double value1   =  MarketInfo(Symbol(),MODE_STOPLEVEL);
double value2   =  MarketInfo(Symbol(),MODE_FREEZELEVEL); 

if (value1>value2)       value   =  value1;
else if (value1<value2)  value   =  value2;

return(value*Point);
}// end stplvl

int dec(){   int decimal;   if (Digits==3|| Digits==5) decimal=10;   else  decimal=1;   return(decimal);}

void openorder(int type, double Lot,double price,double SLvalue, double TPvalue, color kolor,int magicnumber)
{ 
if (Lot >= MarketInfo(Symbol(),MODE_MINLOT) && Lot <= MarketInfo(Symbol(),MODE_MAXLOT))
   {
   bool order  =  OrderSend(Symbol() ,type ,Lot ,price ,3*dec() ,SLvalue ,TPvalue ,EA ,magicnumber ,0 ,kolor);
   if  (!order)   Print(Symbol()  ,",  Orderticket = ",OrderTicket(),", type= ",type,", ERROR=", GetLastError());
   }
else Print ("fail to send order of Lot size: ", Lot,",  type: ", type );
}// end

int counter(int type,int magicnumber)
{
int value=0;
for (int x=0;x<OrdersTotal();x++)
   { 
     if(OrderSelect           (x,SELECT_BY_POS,MODE_TRADES) )
     if(OrderSymbol()         !=  Symbol())               continue;
     if(OrderMagicNumber()    !=  magicnumber)            continue;  
     if (OrderType()          != type)                    continue;
         value++;
   }// for loop
return(value);

}// end

void array_resize()
{
   int reserved   =  500;
   int max        =  maxlayer ;
   ArrayResize(lots,max,reserved);

}// end

void initialize_lot()
{

lots[0] = lot_0;
lots[1] = lot_1;
lots[2] = lot_2;
lots[3] = lot_3;
lots[4] = lot_4;
lots[5] = lot_5;
lots[6] = lot_6;
lots[7] = lot_7;
lots[8] = lot_8;
lots[9] = lot_9;
lots[10]= lot_10;
lots[11]= lot_11;

for (int x=0; x<maxlayer; x++)
      {
      lots[x]  =  NormalizeDouble(lots[x],2);
      }

}// end

double ask()
{
RefreshRates();
return(NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits));
}//

double bid()
{
RefreshRates();
return(NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits));
}//

double tp_buy(double price)
{
double value= price + takeprofit *dec() *Point;
if (takeprofit==0 || takeprofit <= stoplvl())
   value = 0;

return(NormalizeDouble(value,Digits));
}

double tp_sell(double price)
{
double value = price - takeprofit *dec() *Point;
if (takeprofit==0 || takeprofit <= stoplvl())
   value = 0;
return(NormalizeDouble(value,Digits));
}

double spread()
{
double value = MarketInfo(Symbol(),MODE_SPREAD);// *Point;
return(NormalizeDouble(value,Digits));
}// end

int get_latestticket(int type, int magicnumber)
{
int ticket     =  0;
double value   =  0;

for(int x=0; x<OrdersTotal(); x++)
   {
   if(OrderSelect          (x,SELECT_BY_POS,MODE_TRADES))
   if(OrderSymbol()        == Symbol())
   if(OrderMagicNumber()   == magicnumber)
   if(OrderTicket()        >  ticket)  
   if(OrderType()          == type)
      {
      ticket=  OrderTicket();
      value =  OrderOpenPrice();
      }
   }// if select
return(ticket);

}// end

int get_latestticket_type( int magicnumber)
{
int ticket  =  0;
int value   =  0;

for(int x=0; x<OrdersTotal(); x++)
   {
   if(OrderSelect          (x,SELECT_BY_POS,MODE_TRADES))
   if(OrderSymbol()        == Symbol())
   if(OrderMagicNumber()   == magicnumber)
   if(OrderType()          <  2)
   if(OrderTicket()        >  ticket)  
         {
         ticket   =  OrderTicket();
         value    =  OrderType();
         }
    }// for loop
return(value);
}// end

double set_povalue(int type, int magicnumber)
{
double value=0;
if(OrderSelect(get_latestticket(type,magicnumber),SELECT_BY_TICKET,MODE_TRADES))
   {
   if (type==OP_BUY)
         value = OrderOpenPrice() - stoploss/2 *dec() * Point;else
   if (type==OP_SELL)     
         value = OrderOpenPrice() + stoploss/2  *dec() * Point;
   }     
return(NormalizeDouble(value,Digits));
}// end

void podelete(int magicnumber)
{

if(counter(OP_BUY,magicnumber)==0 && counter(OP_SELLSTOP,magicnumber)>0)
   {
     for(int x=OrdersTotal()-1;x>=0; x--)
      {
      if(OrderSelect(x,SELECT_BY_POS,MODE_TRADES))
      if(OrderSymbol()  != Symbol())        continue;
      if(OrderMagicNumber() != magicnumber) continue;
      if(OrderType() != OP_SELLSTOP)        continue;
         {
         bool podelete= OrderDelete(OrderTicket(),clrNONE);
         if (!podelete) Print("fail to delete sellpo order #",OrderTicket(),"  error:  ", GetLastError());
         }
      }//for loop

   }// end if close po sellstop   

if (counter(OP_SELL,magicnumber)==0 && counter(OP_BUYSTOP,magicnumber)>0)
   {
     for(int x=OrdersTotal()-1;x>=0; x--)
      {
      if(OrderSelect(

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

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

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

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

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

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

Стоимость полного кода
1 047,50₽ ≈ $12.80