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

m-golden scalper@lifeindreamsworld.mq4

Вы автор или правообладатель?

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

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

О программе

M-Golden Scalper — торговый советник для MetaTrader 4, написанный на MQL4. Советник работает на текущем символе графика, использует заданный магический номер для идентификации своих ордеров и обрабатывает события появления новых тиков, изменения состояния счёта и нажатия объектов на графике. Публичное название продукта в исходнике явно не подтверждено, поэтому поле product_name оставлено пустым.

Логика построена вокруг двух горизонтальных линий, которые советник создаёт на графике при инициализации и затем автоматически перемещает вслед за ценой. Цвет линий покупок и продаж настраивается. В рабочие часы, задаваемые параметрами начала и конца, советник может открывать рыночные ордера на покупку или продажу при выполнении условий по направлению свечи и положению цены относительно линий. При наличии уже открытых ордеров того же направления советник может добавлять новые ордера с увеличенным объёмом, если цена ушла на заданное расстояние от последней открытой позиции.

Советник рассчитывает объём первого ордера от баланса счёта и параметра риска, а также с учётом минимального лота и стоимости пункта. Для добавления ордеров применяется множитель объёма. Закрытие ордеров выполняется при достижении заданного уровня прибыли в процентах от баланса: отдельно закрываются прибыльные и убыточные ордера по текущему символу и магическому номеру.

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

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

НастройкаОписание
Risk Параметр риска, используемый при расчёте объёма первого ордера от баланса счёта.
MinProfit Минимальный уровень прибыли в процентах от баланса, при достижении которого советник закрывает прибыльные и убыточные ордера по текущему символу.
Dist Расстояние в пунктах, на котором линии располагаются от текущей цены и на которое они смещаются при перемещении. Учитывает количество знаков после запятой в котировке.
Step Минимальное расстояние в пунктах от последнего открытого ордера, необходимое для добавления следующего ордера того же направления.
TimeStart Час начала периода, в течение которого советник может открывать новые ордера.
TimeEnd Час окончания периода, в течение которого советник может открывать новые ордера.
UpLot Множитель, применяемый к объёму при добавлении ордеров того же направления.
BuyLine Цвет горизонтальной линии, связанной с открытием покупок. Используется при создании линии на графике.
SellLine Цвет горизонтальной линии, связанной с открытием продаж. Используется при создании линии на графике.
Info Переключатель отображения информационной панели и кнопок ручной торговли на графике.
TextColor Цвет текстовых подписей информационной панели на графике.
InfoDataColor Цвет числовых значений, выводимых на информационной панели.
FonColor Цвет фона информационной панели на графике.
FontSizeInfo Размер шрифта текста информационной панели и кнопок на графике.
Magic Уникальный номер, по которому советник отличает свои ордера от чужих при подсчёте, закрытии и отображении статистики.
Получить полный код

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

#property version   "1.00"

input double    Risk             =1;           //Риск
extern double   MinProfit        =0.05;        //Множитель лота
input int       Dist             =20;          //Расстояние "трала" линий
input int       Step             =10;          //Минимальный шаг для второго и следуующих колен
extern int      TimeStart        =3;  
extern int      TimeEnd          =23; 
extern double   UpLot            =1.2;         //Множитель лота
input color     BuyLine          =Blue;        //Цвет линии покупок
input color     SellLine         =Red;         //Цвет линии продаж
extern bool      Info             =true;  
extern color     TextColor        =White;   
extern color     InfoDataColor    =DodgerBlue; 
extern color     FonColor         =Black;   
extern int       FontSizeInfo     =7; 
input int       Magic            =2021;        //Уникальный номер ордеров

string comment ="www.mforex.pro";
color            FonButtonBuy     =Blue;
color            FonButtonSell    =Red;
color            TextButtonBS     =White; 
color            ButtonBorder     =Blue;
color            ClickButton      =Black;
int              o;
double           Lot              =0;
int              dig;
int r, D;
double PricSellLine, PricBuyLine, NewLot, NewProfProc;

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

void OnDeinit(const int reason)
{
ObjectsDeleteAll(0,OBJ_HLINE);
}

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

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

if(ObjectGetInteger(0,"TRADEs_B",OBJPROP_STATE))
 {ObjectSetInteger(0,"TRADEs_B",OBJPROP_BGCOLOR,ClickButton);}
else 
 {ObjectSetInteger(0,"TRADEs_B",OBJPROP_BGCOLOR,FonButtonBuy);}

if(ObjectGetInteger(0,"TRADEs_S",OBJPROP_STATE))
 {ObjectSetInteger(0,"TRADEs_S",OBJPROP_BGCOLOR,ClickButton);}
else 
 {ObjectSetInteger(0,"TRADEs_S",OBJPROP_BGCOLOR,FonButtonSell);}

if(id==CHARTEVENT_OBJECT_CLICK)
{string clickedChartObject=sparam;

if(clickedChartObject=="TRADEs_B")
  {o=OrderSend(Symbol(),OP_BUY,Lot,Ask,10,0,0,comment,Magic,0,Green);       
   ObjectSetInteger(0,"TRADEs_B",OBJPROP_STATE,false);}
if(clickedChartObject=="TRADEs_S")
  {o=OrderSend(Symbol(),OP_SELL,Lot,Bid,10,0,0,comment,Magic,0,Red);
   ObjectSetInteger(0,"TRADEs_S",OBJPROP_STATE,false);}

ChartRedraw();
}}

void ClosePlus(int ot)
{bool cl;
 for(int i=OrdersTotal()-1;i>=0;i--)
{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderProfit()+OrderSwap()+OrderCommission()>0)
{if(OrderType()==0 && (ot==0 || ot==-1))
{RefreshRates();
 cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),10,White);}
if(OrderType()==1 && (ot==1 || ot==-1))
{RefreshRates();
 cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),10,White);}}}}}

void CloseMinus(int ot)
{bool cl;
 for(int i=OrdersTotal()-1;i>=0;i--)
{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderProfit()+OrderSwap()+OrderCommission()<0)
{if(OrderType()==0 && (ot==0 || ot==-1))
{RefreshRates();
 cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),10,White);}
if(OrderType()==1 && (ot==1 || ot==-1))
{RefreshRates();
 cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),10,White);}}}}}

bool HLineCreate(string name,double price,color clr)
{//--- если цена не задана, то установим ее на уровне текущей цены Bid 
if(!price) 
   price=SymbolInfoDouble(Symbol(),SYMBOL_BID); 

   ResetLastError(); 

if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price)) 
  {Print(__FUNCTION__,": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError()); 
return(false);} 

   ObjectSetInteger(0,name,OBJPROP_COLOR,clr); 

   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID); 

   ObjectSetInteger(0,name,OBJPROP_WIDTH,1); 

   ObjectSetInteger(0,name,OBJPROP_BACK,false); 

   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,name,OBJPROP_SELECTED,true); 

   ObjectSetInteger(0,name,OBJPROP_HIDDEN,false); 

   ObjectSetInteger(0,name,OBJPROP_ZORDER,0); 

return(true);} 

bool HLineMove(string name,double price)
{if(!price) 
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID); 

   ResetLastError(); 

if(!ObjectMove(0,name,0,0,price)) 
  {Print(__FUNCTION__,": не удалось переместить горизонтальную линию! Код ошибки = ",GetLastError()); 
return(false);} 

return(true);} 

int LastType()
{int type=-1;
datetime dt=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
 if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
  {if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic) 
   {if(OrderOpenTime()>dt)
   {dt=OrderOpenTime();
    type=OrderType();}}}
return(type);}

double BuyPric() {
   double oldorderopenprice;
   int oldticketnumber;
   double unused = 0;
   int ticketnu

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

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

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

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

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

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

Стоимость полного кода
1 500,60₽ ≈ $18.34