Êîä:
// ýêñïåðò äëÿ òåñòà ñòðàòåãèè ÌÀ â ÌÒ4
extern int FastPer = 7; // çäåñü óñòàíàâëèâàåì ïåðèîä áûñòðîé ÌÀ
extern int SlowPer = 21; // çäåñü óñòàíàâëèâàåì ïåðèîä ìåäëåííîé ÌÀ
int ticket=0;
int start()
{
int Ord=0;
for(int i = 0; i <= OrdersTotal(); i++) // îïðåäåëåíèå åñòü ëè îòêðûòûå îðäåðà?
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == 777)
{
ticket=OrderTicket();
if (OrderType()==OP_BUY)
{
Ord=1;// åñëè åñòü îòêðûòàÿ áàåâàÿ ïîçèöèÿ òî Ord = 1
}
else
{
Ord=2;// åñëè åñòü îòêðûòàÿ øîðòîâàÿ ïîçèöèÿ òî Ord = 2
}
}
}
bool SellOp=false;
bool BuyOp=false;
double MAFast2=NormalizeDouble(iMA(NULL,0,FastPer,0,MODE_SMA,PRICE_CLOSE,2),Digits); // áûñòðàÿ ïðîøëîãî áàðà
double MAFast3=NormalizeDouble(iMA(NULL,0,FastPer,0,MODE_SMA,PRICE_CLOSE,0),Digits); // áûñòðàÿ òåêóùåãî áàðà
double MASlow2=NormalizeDouble(iMA(NULL,0,SlowPer,0,MODE_SMA,PRICE_CLOSE,2),Digits); // ìåäëåííàÿ ïðîøëîãî áàðà
double MASlow3=NormalizeDouble(iMA(NULL,0,SlowPer,0,MODE_SMA,PRICE_CLOSE,0),Digits); // ìåäëåííàÿ òåêóùåãî áàðà
if ( // ïðîâåðêà óñëîâèé íà ïîêóïêó
(MAFast2<=MASlow2)&&
(MAFast3>MASlow3))
{
BuyOp=true;
}
if ( // ïðîâåðêà óñëîâèé íà ïðîäàæó
(MAFast2>=MASlow2)&&
(MAFast3<MASlow3))
{
SellOp=true;
}
if (BuyOp) // åñëè óñëîâèÿ íà ïîêóïêó âûïîëíÿþòñÿ
{
if (Ord==2)// è åñëè óæå îòêðûòà øîðòîâàÿ ïîçèöèÿ
{
OrderClose(ticket,1,Ask,3,Red); // òîãäà çàêðûòü øîðòîâóþ
}
if (Ord!=1)// à åñëè åù¸ íå îòêðûòà áàåâàÿ ïîçèöèÿ
{
OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0," buy ",777,0,Green); // òîãäà îòêðûòü áàåâóþ
}
}
if (SellOp) // åñëè óñëîâèÿ íà ïðîäàæó âûïîëíÿþòñÿ
{
if (Ord==1) // è åñëè óæå îòêðûòà áàåâàÿ ïîçèöèÿ
{
OrderClose(ticket,1,Bid,3,Green);
}
if (Ord!=2) // à åñëè åù¸ íå îòêðûòà øîðòîâîé ïîçèöèè
{
OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0," sell",777,0,Red); // òîãäà îòêðûòü øîðòîâóþ
}
}
return(0);
}