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