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

scalper cash maker ea.mq4

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

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

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

О программе

Данный продукт представляет собой торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник автоматизирует процесс открытия и закрытия ордеров на валютном рынке, используя горизонтальные уровни-ориентиры для принятия торговых решений.

В основе логики лежит расчёт объёма позиции на основе процента риска от баланса счёта. Советник отслеживает поведение текущей свечи и открывает ордера (BUY или SELL) при достижении цены заданных линий-уровней, при условии что текущий час попадает в разрешённый временной интервал.

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

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

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

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

#property version   "1.00"

input double    Risk             =0.02;           //Риск         
input int       Step             =10;          //Минимальный шаг для второго и следуующих колен
extern int      TimeStart        =6;  
extern int      TimeEnd          =19; 
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";
double   MinProfit        =0.00;        //
int       Dist             =10; 
double   UpLot            =1;         //Множитель лота
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 ticketnumber = 0;
   for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      bool clos=OrderSelect(cnt, SELE

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

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

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

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

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

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

Стоимость полного кода
1 485,90₽ ≈ $18.16