Pak Sugiman Hedging
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pak sugiman hedging.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник для платформы 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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.