Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
GBPUSD_M15_V2_01
//---- Âõîäíûå ïàðàìåòðû---------------
extern string Long="Ïàðàìåòðû äëèííûõ ïîçèöèé";
extern int PeriodMA1=20;
extern int ×àñ_Îòêðûòèÿ1 = 16;
extern int ×àñ_Çàêðûòèÿ1 = 8;
extern string Short="Ïàðàìåòðû êîðîòêèõ ïîçèöèé";
extern int PeriodMA2=20;
extern int ×àñ_Îòêðûòèÿ2 = 6;
extern int ×àñ_Çàêðûòèÿ2 = 13;
extern string ÒÐ="Âûñòàâëÿåì ÒÐ â ïðîöåíòàõ îò öåíû";
extern double Ïðîöåíò_TP=0.6;
extern string SL1="Âûñòàâëÿåì SL â ïèïñàõ";
extern int SL=30;
extern string ïðîôèò="çàêðûâàåì ïîçèöèþ ïåðåñå÷åíèå ÌÀ âûøå/íèæå îòêðûòèÿ íà ... ïóíêòîâ";
extern int ProfitPips=35;
extern bool Flag_ProfitPips=true; //Ôëàã äëÿ îòêëþ÷åíèÿ äàííîé ôóíêöèè true - âêëþ÷åíà, false - îòêëþ÷åíà
extern string òðýíä="Íàñòðîéêà òðýíäà";
extern int Period_MA=200;
extern int n_MA=2;
extern string lot="Íàñòðîéêà âåëè÷èíû ëîòà";
extern double Lots=0.01;
extern string ÌÌ="Íàñòðîéêà óïðàâëåíèÿ êàïèòàëëîì";
extern double Loss = 0.02; // Âåëè÷èíà óáûòêà â ïðîöåíòàõ íà îäíó ñäåëêó
extern int ðåæèìÌÌ=0; //âûáîð ðåæèìà 0-íåò ÌÌ 1-óáûòîê % îò êàïèòàëëà 2- âåëè÷èíà ïîçèöèè % îò áàëàíñà
extern string x1="Äëÿ äèëèíãîâûõ öåíòðîâ ñ 5 çíàêàìè x óìíîæèòü íà 10";
extern int x=10;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
static datetime dt;
static bool permission_long = true, permission_short = true; // ðàçðåøåíèå äëèííûõ è êîðîòêèõ ïîçèöèé
int start()
{
double a;// ïåðåìåííûå à-óáûòîê â ïèïñàõ
int n=1; // Çàäàåò äèàïàçîí â ÷àñàõ íà îòêðûòèå
int total,cnt;
int TP=0;
int magik_Buy=13;
int magik_Sell=14;
int êîë_äë=0, êîë_êîð=0;
double MA11=iMA(NULL,0,PeriodMA1,0,MODE_SMA,PRICE_MEDIAN,1);
double MA12=iMA(NULL,0,PeriodMA1,0,MODE_SMA,PRICE_MEDIAN,2);
double MA21=iMA(NULL,0,PeriodMA2,0,MODE_SMA,PRICE_MEDIAN,1);
double MA22=iMA(NULL,0,PeriodMA2,0,MODE_SMA,PRICE_MEDIAN,2);
double Medium1=iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,1);
double Medium2=iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,2);
double MA_Long1=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_MEDIAN,1);
double MA_Long_n=iMA(NULL,0,Period_MA,0,MODE_EMA,PRICE_MEDIAN,n_MA);
if(dt!=iTime(NULL,PERIOD_D1,0)) // Îïðåäåëÿåò îòêðûòèÿ íîâîãî äíÿ
{
permission_long = true; // Ðàçðåøàåì îòêðûòèå äëèííûõ ïîçèöèé íà ýòîò äåíü
permission_short = true; // Ðàçðåøàåì îòêðûòèå êîðîòêèõ ïîçèöèé íà ýòîò äåíü
dt=iTime(NULL,PERIOD_D1,0); // Çàïîìèíàåì âðåìÿ îòêðûòèÿ äíåâíîé ñâå÷è
}
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderMagicNumber()==magik_Buy) êîë_äë=êîë_äë+1;
if(OrderMagicNumber()==magik_Sell) êîë_êîð=êîë_êîð+1;
}
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
// ---------------------Çàêðûòèå-------------------------------------------------
if(OrderType()==OP_BUY && OrderMagicNumber()==magik_Buy)
{
if(Hour()==×àñ_Çàêðûòèÿ1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3*x,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
if(Medium1>MA11 && Medium2<=MA12 && Close[1]-OrderOpenPrice()>ProfitPips*x*Point && Flag_ProfitPips==true)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3*x,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
if(Medium1<MA11 && Medium2>=MA12 && Bid-SL*x*Point>OrderStopLoss()+3*x*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-SL*x*Point,OrderTakeProfit(),0,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
}
//-------------------Çàêðûòèå----------------------------------------------------
if(OrderType()==OP_SELL && OrderMagicNumber()==magik_Sell)
{
if(Hour()==×àñ_Çàêðûòèÿ2)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3*x,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
if(Medium1<MA21 && Medium2>=MA22 && OrderOpenPrice()-Close[1]>ProfitPips*x*Point && Flag_ProfitPips==true)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3*x,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
if(Medium1>MA21 && Medium2<=MA22 && Ask+SL*x*Point<OrderStopLoss()-3*x*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+SL*x*Point,OrderTakeProfit(),0,Red);
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
}
}
}
if((Hour()==×àñ_Îòêðûòèÿ1 || Hour()==×àñ_Îòêðûòèÿ1+n) && permission_long==true && êîë_äë<1) // åñëè íåò ïîçèöèé
{
// îòêðûòèå äëèííîé ïîçèöèè
if(Medium1>MA11 && MA11>MA12 && MA_Long1>MA_Long_n)
{
TP=Ðàñ÷åò_TP(Ask,Ïðîöåíò_TP);
a=NormalizeDouble(TP*Point,Digits);
Lots=ValueLot(a);
if(buy(TP,magik_Buy,Lots)!=-1) permission_long = false;
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
}
if((Hour()==×àñ_Îòêðûòèÿ2 || Hour()==×àñ_Îòêðûòèÿ2+n) && permission_short == true && êîë_êîð<1) // åñëè íåò ïîçèöèé
{
// îòêðûòèå êîðîòêîé ïîçèöèè
if(Medium1<MA21 && MA21<MA22 && MA_Long1<MA_Long_n)
{
TP=Ðàñ÷åò_TP(Bid,Ïðîöåíò_TP);
a=NormalizeDouble(TP*Point,Digits);
Lots=ValueLot(a);
if(sell(TP,magik_Sell,Lots)!=-1) permission_short = false;
Sleep(60000); // Çàäåðæêà â 60 ñåêóíä
return(0);
}
}
//---------------------------------------------------------------------------------------
return(0);
}
double Ðàñ÷åò_TP(double A,double B)
{
int xx=0;
double y=A*B/100;
xx=MathRound(y/Point);
if (xx<30*x) xx=30*x;
return(xx);
}
int sell(int TP, int magik_Sell, double Lot) //Ôóíêöèÿ âõîäà â êîðîòêóþ ñòîðîíó
{
int t=-1;
t=OrderSend(Symbol(),OP_SELL,Lot,Bid,3*x,Bid+TP*Point,Bid-TP*Point,"order_sell",magik_Sell,0,Red);
return(t);
}
int buy(int TP, int magik_Buy, double Lot) //Ôóíêöèÿ âõîäà â äëèííóþ ñòîðîíó
{
int t=-1;
t=OrderSend(Symbol(),OP_BUY,Lot,Ask,3*x,Ask-TP*Point,Ask+TP*Point,"order_buy",magik_Buy,0,Green);
return(t);
}
double ValueLot (double A)
{
RefreshRates();
double ticvalue=MarketInfo(Symbol(),MODE_TICKVALUE);
double minlot=MarketInfo(Symbol(),MODE_MINLOT);
double maxlot=MarketInfo(Symbol(),MODE_MAXLOT);
double standartlot=MarketInfo(Symbol(),MODE_LOTSIZE);
double x=0;
if (ðåæèìÌÌ==0) x=Lots;
if(ðåæèìÌÌ==1) x=NormalizeDouble(MathFloor((AccountFreeMargin()*Loss*Point)/(ticvalue*A*minlot))*minlot,2);
if(ðåæèìÌÌ==2) x=NormalizeDouble(minlot*((AccountFreeMargin()*Loss)/(1000*minlot)),2);
if(ðåæèìÌÌ==3)
{
double bb=MathSqrt(AccountFreeMargin()/1000);
x=NormalizeDouble(bb*Loss,2);
}
if(x>=maxlot) x=maxlot;
if(x<=minlot) x=minlot;
return(x);
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---