EA Superstar v99.9
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea superstar v9.9.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Торговый советник для платформы MetaTrader 4, написанный на языке MQL4. При запуске открывает одновременно позицию BUY и позицию SELL с начальным лотом, задаваемым пользователем. Автор — JOHN ANAK ANTHONY (Telegram: https://t.me/Astrologe), версия кода 9.99.
Советник реализует наращивание позиций по принципу мартингейла: при достижении цены определённого уровня в пипсах от последней открытой позиции добавляются новые ордера с лотом, увеличивающимся в заданное число раз. Количество одновременных позиций ограничено параметром максимального слоя. Для каждой стороны доступна собственная серия лотов.
Take Profit устанавливается на расстоянии, заданном в пипсах, от последней открытой цены, но только если это расстояние превышает стоп-лвел брокера. Советник также отображает на графике информацию о балансе, эквити, плече, свободном маржинале, количестве и прибыльности открытых позиций. При некорректном magic number советник блокируется и выводит предупреждение.
Настройки программы
| Настройка | Описание |
|---|---|
| Magic Number (magic) | Магический номер — Магический номер для идентификации ордеров советника; при значении 0 или больше 999999999 советник блокируется |
| Lot Started (lot_initial) | Начальный лот — Начальный лот для первых позиций BUY и SELL |
| Multiplier (multiplier) | Множитель лота — Множитель лота при наращивании: лот каждого следующего уровня умножается на это значение |
| TakeProfit (Pips) (takeprofit) | Take Profit (пипсы) — Расстояние Take Profit в пипсах от последней открытой позиции (не применяется, если меньше стоп-лвела брокера) |
| Distance Open Position (Pips) (distance_pips) | Расстояние открытия позиции (пипсы) — Расстояние в пипсах от последней открытой позиции для открытия следующего уровня наращивания |
| Max Position(layer) Per Side (maxlayer) | Максимальный слой позиций на сторону — Максимальное количество одновременных позиций на каждую сторону (BUY/SELL) |
| Show Info On Chart (display_info) | Показывать информацию на графике — Переключатель отображения информационного блока на графике (баланс, эквити, количество позиций и т.д.) |
| Info's Text Color (kolor_display) | Цвет текста информации — Цвет текста информационного блока на графике |
| Font Size (fontsize) | Размер шрифта — Размер шрифта текстовых меток на графике |
Поиск по коду файла
#property version "9.99"
#property strict
#property description " New Version: Created for JOHN ANAK ANTHONY 2.5.2017"
string EA;
string EA1 = "EA Superstar v99.9"; // Comment To Dispaly In Order
extern int magic = 1; // Magic Number
extern double lot_initial = 0.01; // Lot Started
extern double multiplier = 2.0; // Multiplier
extern int takeprofit = 20; // TakeProfit (Pips)
extern int distance_pips = 15; // Distance Open Position (Pips)
extern int maxlayer = 100; // Max Position(layer) Per Side
extern bool display_info = true; // Show Info On Chart
extern color kolor_display = clrYellow; // Info's Text Color
extern int fontsize = 10; // Font Size
double lotsbuy[];
double lotssell[];
string buy = " buy ";
string sell= " sell ";
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll();
}
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);}
double ask(){RefreshRates();return(nl(MarketInfo(Symbol(),MODE_ASK)));}//
double bid(){RefreshRates();return(nl(MarketInfo(Symbol(),MODE_BID)));}//
double minlot(){return(MarketInfo(Symbol(),MODE_MINLOT));}
double maxlot(){return(MarketInfo(Symbol(),MODE_MAXLOT));}
void openorder( int type, double Lot,double price,double SLvalue, double TPvalue, color kolor)
{
if (Lot < minlot()) Print( " periksa saiz lot = ", DoubleToStr(Lot,2)," kecil.. minimum lot broker= ", minlot());
if (Lot > maxlot()) Print( " periksa saiz lot = ", DoubleToStr(Lot,2)," besar.. maximum lot broker= ", maxlot());
if (AccountFreeMarginCheck(Symbol(),type,Lot)>0)
{
Comment("");
bool order = OrderSend(Symbol() ,type ,Lot ,price ,3*dec() ,SLvalue ,TPvalue ,EA ,magic ,0 ,kolor);
if (!order) Print(Symbol() ,", Orderticket = ",OrderTicket(),", type= ",type,", ERROR=", GetLastError());
}
else Comment("Bro.. Pls check ur account margin..");
}// end
int counter(int type, int magicnumber)
{
int count = 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;
count++;
}// for loop
return(count);
}// end
void array_resize()
{
int max = maxlayer ;
int reserved = max+100;
ArrayResize(lotsbuy ,max,reserved);
ArrayResize(lotssell,max,reserved);
}// end
void initialize_lotbuy()
{
lotsbuy[0]= lot_initial;
lotsbuy[1]= lot_initial;
for(int x=2; x<maxlayer ; x++)
lotsbuy[x] = lotsbuy[x-1]*multiplier;
for(int x=0; x<maxlayer ; x++)
lotsbuy[x] = NormalizeDouble(lotsbuy[x],2);
}// end
void initialize_lotsell()
{
lotssell[0]= lot_initial;
lotssell[1]= lot_initial;
for(int x=2; x<maxlayer; x++)
lotssell[x] = lotssell[x-1]*multiplier;
for(int x=0; x<maxlayer ; x++)
lotssell[x] = NormalizeDouble(lotssell[x],2);
}// end
double latest_openprice(int type)
{
double value=0;
int ticket = get_latest_ticket(type);
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
value= OrderOpenPrice();
return(value);
}// end
double nextlayer_pricebuy()
{
double value = latest_openprice(OP_BUY) - dist();
return(nl(value));
}// end
double nextlayer_pricesell()
{
double value = latest_openprice(OP_SELL) + dist();
return(nl(value));
}// end
double dist()
{return(distance_pips *dec() *Point);}
double nl(double value)
{return(NormalizeDouble(value,Digits));}// end
int get_latest_ticket(int type)
{
int ticket = 0;
for (int x=0;x<OrdersTotal();x++)
{
if(OrderSelect (x,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber() != magic) continue;
if(OrderType() != type) continue;
if(OrderTicket() > ticket || ticket == 0 )
ticket = OrderTicket();
}// for loop
return(ticket);
}// end
double tp_buy()
{
double value = latest_openprice(OP_BUY) + takeprofit * dec()* Point;
if (takeprofit*dec()*Point < stoplvl())
value = 0;
return(nl(value));
}//
double tp_sell()
{
double value = latest_openprice(OP_SELL) - takeprofit * dec()* Point;
if (takeprofit*dec()*Point < stoplvl())
value = 0;
return(nl(value));
}//
void put_tp(double tp_cal)
{
double tp = nl(tp_cal);
for(int x=0; x<OrdersTotal(); x++)
{
RefreshRates();
if(OrderSelect (x,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol() == Symbol())
if(Показано первые 50% кода (символов: 8731)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.