Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
MA_cross_Method_PriceMode
//============================================================================================
//
//
//
//
//
//============================================================================================
extern int MA1_Period=3; // Ïåðèîä 1-é ÌÀ
extern int MA2_Period=13; // Ïåðèîä 2-é ÌÀ
extern int MA1_Method=0; // Ìåòîä âû÷èñëåíèÿ ÌÀ1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=3; // Ìåòîä âû÷èñëåíèÿ ÌÀ2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0; // Ìåòîä âû÷èñëåíèÿ öåíû ÌÀ1
extern int MA2_Price=4; // Ìåòîä âû÷èñëåíèÿ öåíû ÌÀ2
extern int MA1_Shift=0; // Âðåìåííîé ñäâèã ÌÀ1
extern int MA2_Shift=0; // Âðåìåííîé ñäâèã ÌÀ2
extern double Lot = 0.1; // Ôèêñèðîâàííûé ëîò
extern int slippage = 0; // Îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ
int New_Bar; // 0/1 Ôàêò îáðàçîâàíèÿ íîâîãî áàðà
int Time_0; // Âðåìÿ íà÷àëà íîâîãî áàðà
int PosOpen; // Íàïðàâëåíèå ïåðåñå÷åíèÿ
int PosClose; // Íàïðàâëåíèå ïåðåñå÷åíèÿ
int total; // Êîëè÷åñòâî îòêðûòûõ îðäåðîâ
double MA1_0; // Òåêóùåå çíà÷åíèå 1-é ÌÀ (ðîçîâ)
double MA1_1; // Ïðåäûäóùåå çíà÷åíèå 1-é ÌÀ (ðîçîâ)
double MA2_0; // Òåêóùåå çíà÷åíèå 2-é ÌÀ (ãîëóáàÿ)
double MA2_1; // Ïðåäûäóùåå çíà÷åíèå 2-é ÌÀ (ãîëóáàÿ)
int orderBuy; // 1 = ôàêò íàëèèÿ îðäåðà Buy
int orderSell; // 1 = ôàêò íàëèèÿ îðäåðà Sell
//============================================================================================
int init()
{
}
//============================================================================================
int start()
{
orderBuy=0;
orderSell=0;
double price;
int openOrders=0;
int total=OrdersTotal(); // Îáùåå êîëè÷åñòâî îðäåðîâ
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Âûáèðàåì îðäåð
{
if(OrderType()==OP_BUY) // Åñëè ñòîèò îðäåð íà ïîêóïêó
{
orderBuy=1;
if(CrossPositionClose()==1) // Çàêðûâåì îðäåð, åñëè óäîâëåòâîðÿåò
{ // óñëîâèþ CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // Åñëè ñòîèò îðäåð íà ïîêóïêó
{
orderSell=1;
if(CrossPositionClose()==2) // Çàêðûâåì îðäåð, åñëè óäîâëåòâîðÿåò
{ // óñëîâèþ CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
}
}
New_Bar=0; // Äëÿ íà÷àëà îáíóëèìñÿ
if (Time_0 != Time[0]) // Åñëè óæå äðóãîå âðåìÿ íà÷àëà áàðà
{
New_Bar= 1; // À âîò è íîâûé áàð
Time_0 = Time[0]; // Çàïîìíèì âðåìÿ íà÷àëà íîâîãî áàðà
}
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // Òåêóùåå çíà÷åíèå 1-é ÌÀ
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // Ïðåäûäóùåå çíà÷åíèå 1-é ÌÀ
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // Òåêóùåå çíà÷åíèå 2-é ÌÀ
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // Ïðåäûäóùåå çíà÷åíèå 2-é ÌÀ
if (CrossPositionOpen()==1 && New_Bar==1) // Äâèæåíèå ñíèçó ââåðõ = îòêð. Buy
{
OpenBuy();
}
if (CrossPositionOpen()==2 && New_Bar==1) // Äâèæåíèå ñâåðõó âíèç = îòêð. Sell
{
OpenSell();
}
return;
}
//============================================================================================
int CrossPositionOpen()
{
PosOpen=0; // Âîò ãäå ñîáàêà çàðûòà!!:)
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Ïåðåñå÷åíèå ñíèçó ââåðõ
{
PosOpen=1;
}
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // Ïåðåñå÷åíèå ñâåðõó âíèç
{
PosOpen=2;
}
return(PosOpen); // Âîçâðàùàåì íàïðàâëåíèå ïåðåñå÷åí.
}
//============================================================================================
int CrossPositionClose()
{
PosClose=0; // Âîò ãäå ñîáàêà çàðûòà!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // Ïåðåñå÷åíèå ñâåðõó âíèç {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Ïåðåñå÷åíèå ñíèçó ââåðõ
{
PosClose=2;
}
return(PosClose); // Âîçâðàùàåì íàïðàâëåíèå ïåðåñå÷åí.
}
//============================================================================================
int OpenBuy()
{
if (total==1)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); // Âûäåëèì îðäåð
if (OrderType()==OP_BUY) return; // Åñëè îí buy, òî íå îòêðûâàåìñÿ
}
OrderSend(Symbol(),OP_BUY, Lot, Ask, slippage, 0, 0, "Buy: MA_cross_Method_PriceMode", 1, 0, CLR_NONE);// Îòêðûâàåìñÿ
return;
}
//============================================================================================
int OpenSell()
{
if (total==1)
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); // Âûäåëèì îðäåð
if (OrderType()==OP_SELL) return; // Åñëè îí sell, òî íå îòêðûâàåìñÿ
}
OrderSend(Symbol(),OP_SELL, Lot, Bid, slippage, 0, 0, "Sell: MA_cross_Method_PriceMode", 2, 0, CLR_NONE);
return;
}
//============================================================================================
int MAMethod(int MA_Method)
{
switch(MA_Method)
{
case 0: return(0); // Âîçâðàùàåò MODE_SMA=0
case 1: return(1); // Âîçâðàùàåò MODE_EMA=1
case 2: return(2); // Âîçâðàùàåò MODE_SMMA=2
case 3: return(3); // Âîçâðàùàåò MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Price)
{
case 0: return(PRICE_CLOSE); // Âîçâðàùàåò PRICE_CLOSE=0
case 1: return(PRICE_OPEN); // Âîçâðàùàåò PRICE_OPEN=1
case 2: return(PRICE_HIGH); // Âîçâðàùàåò PRICE_HIGH=2
case 3: return(PRICE_LOW); // Âîçâðàùàåò PRICE_LOW=3
case 4: return(PRICE_MEDIAN); // Âîçâðàùàåò PRICE_MEDIAN=4
case 5: return(PRICE_TYPICAL); // Âîçâðàùàåò PRICE_TYPICAL=5
case 6: return(PRICE_WEIGHTED); // Âîçâðàùàåò PRICE_WEIGHTED=6
}
}
//============================================================================================
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
---