Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Breakthrough_BB1_2
extern int Period_MA_Long1 = 260;// Ïåðèîä ñðåäíåé, íåîáõîäèìîé äëÿ îïðåäåëåíèÿ òðåíäà
extern int Period_BB1 = 25; // Ïåðèîä ñðåäíåé áîëèíäæåðà
extern double deviation1 = 1;
extern int Period_MA_Long2 = 20;// Ïåðèîä ñðåäíåé, íåîáõîäèìîé äëÿ îïðåäåëåíèÿ òðåíäà
extern int Period_BB2 = 25; // Ïåðèîä ñðåäíåé áîëèíäæåðà
extern double deviation2 = 1.6;
extern int Ïåðèîä_ATR1=20;
extern double Êîýôôèöèåíò1=3;
extern int Êîëè÷åñòâî_Áàðîâ1=10;
extern int Ïåðèîä_ATR2=20;
extern double Êîýôôèöèåíò2=3;
extern int Êîëè÷åñòâî_Áàðîâ2=10;
extern int ðåæèì=0; //âûáîð ðåæèìà 1-äëèííûå 2-êîðîòêèå 0-îáå
extern double Loss = 0.02; // Âåëè÷èíà óáûòêà â ïðîöåíòàõ íà îäíó ñäåëêó
extern int ðåæèìÌÌ=0; //âûáîð ðåæèìà 0-íåò ÌÌ 1-óáûòîê % îò êàïèòàëëà 2- âåëè÷èíà ïîçèöèè % îò áàëàíñà
extern double Lots = 0.01; // Âåëè÷èíà ëîòà
int tmp, tc, st, et, dtmp,tiket;
//----------------------------------------------------------------------------------------------------------//
int start()
{
int cnt, total,x;
double a;// ïåðåìåííûå à-óáûòîê â ïèïñàõ
//------------------------------------------Çàùèòà îò îøèáîê è êîñÿêîâ--------------------------------------//
if(Bars<Period_MA_Long1 || Bars<Period_MA_Long2)
{
Print("Êîëè÷åñòâî áàðîâ ñëèøêîì ìàëî");
return(0);
}
if (Volume[0] < 1.0) // Åñëè òîðãè èäóò çíà÷èò îáüåì áîëåå 0
{
Comment("Òîðãîâ íåò.. Æäåì íîâûé áàð..");
return(0);
}
if (AccountFreeMargin()<(1000*Lots))
{
Comment("Íåäîñòàòî÷íî äåíåã. Óðîâåíü ìàðæè ìåíåå ...");
return(0);
}
if(Digits==3 || Digits==5) x=10;
if(Digits==2 || Digits==4) x=1 ;
//-----------------------------------------Êîíåö çàùèòû îò êîñÿêîâ-----------------------------------------//
double MA_1_Long1=iMA(NULL,0,Period_MA_Long1,0,MODE_SMA,PRICE_CLOSE,1);
double MA_2_Long1=iMA(NULL,0,Period_MA_Long1,0,MODE_SMA,PRICE_CLOSE,4);
double BB_MA1=iCustom(NULL,0,"Bands",Period_BB1,0,deviation1,0,1);
double BB_n_MA1=iCustom(NULL,0,"Bands",Period_BB1,0,deviation1,0,4);
double BB_Up1=iCustom(NULL,0,"Bands",Period_BB1,0,deviation1,1,1);
double BB_Low1=iCustom(NULL,0,"Bands",Period_BB1,0,deviation1,2,1);
double MA_1_Long2=iMA(NULL,0,Period_MA_Long2,0,MODE_SMA,PRICE_CLOSE,1);
double MA_2_Long2=iMA(NULL,0,Period_MA_Long2,0,MODE_SMA,PRICE_CLOSE,4);
double BB_MA2=iCustom(NULL,0,"Bands",Period_BB2,0,deviation2,0,1);
double BB_n_MA2=iCustom(NULL,0,"Bands",Period_BB2,0,deviation2,0,4);
double BB_Up2=iCustom(NULL,0,"Bands",Period_BB2,0,deviation2,1,1);
double BB_Low2=iCustom(NULL,0,"Bands",Period_BB2,0,deviation2,2,1);
double Ëþñòðà_Íèç11=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,Êîëè÷åñòâî_Áàðîâ1,1,1);
double Ëþñòðà_Íèç21=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,Êîëè÷åñòâî_Áàðîâ1,1,2);
double Ëþñòðà_Âåðõ11=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,Êîëè÷åñòâî_Áàðîâ1,2,1);
double Ëþñòðà_Âåðõ21=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,Êîëè÷åñòâî_Áàðîâ1,2,2);
double Ëþñòðà_Íèç12=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,Êîëè÷åñòâî_Áàðîâ2,1,1);
double Ëþñòðà_Íèç22=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,Êîëè÷åñòâî_Áàðîâ2,1,2);
double Ëþñòðà_Âåðõ12=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,Êîëè÷åñòâî_Áàðîâ2,2,1);
double Ëþñòðà_Âåðõ22=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,Êîëè÷åñòâî_Áàðîâ2,2,2);
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(OrderType()==OP_BUY) // long position is opened
{
if(Ëþñòðà_Íèç11>OrderStopLoss() && Ëþñòðà_Íèç11<Low[1] && MathAbs(Close[1]-Ëþñòðà_Íèç11)>50*x*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ëþñòðà_Íèç11,OrderTakeProfit(),0,Red);
return(0); // exit
}
}
if(OrderType()==OP_SELL) // go to short position
{
if(Ëþñòðà_Âåðõ12<OrderStopLoss() && Ëþñòðà_Âåðõ12>High[1] && MathAbs(Ëþñòðà_Âåðõ12-Close[1])>50*x*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ëþñòðà_Âåðõ12,OrderTakeProfit(),0,Red);
return(0); // exit
}
}
}
}
total=OrdersTotal();
//-----------------------------------------------Îòêðûòèå ïîçèöèè åñëè åñòü ñäåëêà------------------------------------
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY && total<=1)
{
if(Close[2]>BB_Low2 && Close[1]<BB_Low2 && MA_1_Long2<MA_2_Long2 && (ðåæèì==2 || ðåæèì==0))
{
if(High[1]>Ëþñòðà_Âåðõ12) Ëþñòðà_Âåðõ12=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,1,2,1)+50*x*Point;
if(High[1]<=Ëþñòðà_Âåðõ12 && (Ëþñòðà_Âåðõ12-Close[1])<100*x*Point) Ëþñòðà_Âåðõ12=Close[1]+100*x*Point;
a=MathAbs(Ëþñòðà_Âåðõ12-Close[1]);
Lots=ValueLot(a);
tiket=OrderSend(Symbol(),OP_SELL,Lots,Bid,5*x,Ëþñòðà_Âåðõ12,0,"Êîðîòêàÿ ïîçèöèÿ",16384,0,Red);
return(0);
}
}
if(OrderType()==OP_SELL && total<=1)
{
if(Close[2]<BB_Up1 && Close[1]>BB_Up1 && MA_1_Long1>MA_2_Long1 && (ðåæèì==1 || ðåæèì==0))
{
if(Low[1]<Ëþñòðà_Íèç11) Ëþñòðà_Íèç11=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,1,1,1)-50*x*Point;
if(Low[1]>=Ëþñòðà_Íèç11 && (Close[1]-Ëþñòðà_Íèç11)<100*x*Point) Ëþñòðà_Íèç11=Close[1]-100*x*Point;
a=MathAbs(Close[1]-Ëþñòðà_Íèç11);
Lots=ValueLot(a);
tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5*x,Ëþñòðà_Íèç11,0,"Äëèííàÿ ïîçèöèÿ",16384,0,Green);
return(0);
}
}
}
}
if(total==0) // åñëè íåò ïîçèöèé
{
// îòêðûòèå äëèííîé ïîçèöèè
if(Close[2]<BB_Up1 && Close[1]>BB_Up1 && MA_1_Long1>MA_2_Long1 && (ðåæèì==1 || ðåæèì==0))
{
if(Low[1]<Ëþñòðà_Íèç11) Ëþñòðà_Íèç11=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR1,Êîýôôèöèåíò1,1,1,1)-100*x*Point;
if(Low[1]>=Ëþñòðà_Íèç11 && (Close[1]-Ëþñòðà_Íèç11)<100*x*Point) Ëþñòðà_Íèç11=Close[1]-100*x*Point;
a=MathAbs(Close[1]-Ëþñòðà_Íèç11);
Lots=ValueLot(a);
tiket=OrderSend(Symbol(),OP_BUY,Lots,Ask,5*x,Ëþñòðà_Íèç11,0,"Äëèííàÿ ïîçèöèÿ",16384,0,Green);
return(0);
}
// îòêðûòèå êîðîòêîé ïîçèöèè
if(Close[2]>BB_Low2 && Close[1]<BB_Low2 && MA_1_Long2<MA_2_Long2 && (ðåæèì==2 || ðåæèì==0))
{
if(High[1]>Ëþñòðà_Âåðõ12) Ëþñòðà_Âåðõ12=iCustom(NULL,0,"Ëþñòðà ×èæåâñêîãî",Ïåðèîä_ATR2,Êîýôôèöèåíò2,1,2,1)+100*x*Point;
if(High[1]<=Ëþñòðà_Âåðõ12 && (Ëþñòðà_Âåðõ12-Close[1])<100*x*Point) Ëþñòðà_Âåðõ12=Close[1]+100*x*Point;
a=MathAbs(Ëþñòðà_Âåðõ12-Close[1]);
Lots=ValueLot(a);
tiket=OrderSend(Symbol(),OP_SELL,Lots,Bid,5*x,Ëþñòðà_Âåðõ12,0,"Êîðîòêàÿ ïîçèöèÿ",16384,0,Red);
return(0);
}
}
return(0);
}
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=MathFloor((AccountFreeMargin()*Loss*Point)/(ticvalue*A*minlot))*minlot;
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
---