Если Вы хотите заказать советник или индикатор, то публикуйте в эту группу тех. задание. Если Ваш заказ не очень сложный, то велика вероятность, что Вам его смогут сделать даже бесплатно
Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.
Комментарии (7)
35 AM2 Сообщений: 16285 - Андрей
//| Proboy_High_Low.mq4|
//| Copyright 2021 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2021»
#property link «www.forexsystems.biz»
#property version «1.00»
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern double Risk = 0; // риск
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
extern string Comm = ""; // коммент
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
sl=NormalizeDouble(High[1]+(Ask-Bid),Digits);
tp=NormalizeDouble(Bid-(High[0]-Low[1]),Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
sl=NormalizeDouble(Low[1]-(Ask-Bid),Digits);
tp=NormalizeDouble(Ask+(High[1]-Low[0]),Digits);
}
for(int k=1; k<=10; k++)
{
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,Comm,Magic,0,clr);
if(r>0)
{
Print(«Order is placed successfully: „+“ OOP: »,price," LOT: ",Lot());
break;
}
Sleep(3000);
}
return;
}
//+------------------------------------------------------------------+
//| расчет лота |
//+------------------------------------------------------------------+
double Lot()
{
double lot=Lots;
if(Lots==0) lot=AccountBalance()*Risk/100000;
return(lot);
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
int CountOrders(int type)
{
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==type)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool FindLastTimeOrder()
{
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderType()<2 && OrderMagicNumber()==Magic)
{
if(OrderOpenTime()>=Time[0])
{
return(false);
}
}
}
}
return(true);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double signal()
{
double sig=3;
if(Close[1]>Open[1] && Bid>=High[1])
{
sig=0;
}
if(Close[1]<Open[1] && Ask<=Low[1])
{
sig=1;
}
return(sig);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(FindLastTimeOrder())
{
if(CountOrders(0)<1 && signal()==0)
{
PutOrder(0,Ask);
}
if(CountOrders(1)<1 && signal()==1)
{
PutOrder(1,Bid);
}
}
}
//+------------------------------------------------------------------+
9 droba Автор Сообщений: 239 - Droba
35 AM2 Сообщений: 16285 - Андрей
Для наглядности подправил немного код, ТР и SL сделал по 300 пипсов.
После SL риск не увеличился.
9 droba Автор Сообщений: 239 - Droba
14 verta81 Сообщений: 392
9 droba Автор Сообщений: 239 - Droba
9 droba Автор Сообщений: 239 - Droba
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий