Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
cm_tral_ma
//+------------------------------------------------------------------+
//| Copyright © 2016, Õëûñòîâ Âëàäèìèð |
//| cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, http://cmillion.ru"
#property link "cmillion@narod.ru"
#property strict
#property description "Ñîâåòíèê òðàëèò ñòîïëîññ è òåéêïðîôèò ïî èíäèêàòîðó ÌÀ"
//--------------------------------------------------------------------*/
enum tf
{
m1=1, // M1
m5=5, // M5
m15=15, // M15
m30=30, // M30
h1=60, // H1
h4=240, // H4
d1=1440, // D1
t=0, // current
};
//--------------------------------------------------------------------*/
extern bool Tral_SL = true; //òðàëèòü ñòîïëîññ
extern bool Tral_TP = true; //òðàëèòü òåéêïðîôèò
sinput string ma = ""; //ïàðàìåòðû èíäèêàòðà ÌÀ
extern int period = 55, //Ïåðèîä óñðåäíåíèÿ äëÿ âû÷èñëåíèÿ ïåðâîé MA.
ma_shift = 0; //Ñäâèã èíäèêàòîðà ÌÀ îòíîñèòåëüíî öåíîâîãî ãðàôèêà.
input ENUM_MA_METHOD ma_method = MODE_SMMA; //Ìåòîä óñðåäíåíèÿ èíäèêàòîðà ÌÀ.
input ENUM_APPLIED_PRICE applied_price = PRICE_OPEN; //Èñïîëüçóåìàÿ öåíà èíäèêàòîðà ÌÀ.
input tf timeframe = t; //Òàéìôðåéì èíäèêàòîðà ÌÀ.
sinput int Magic = -1; //ìàãèê íîìåð îðäåðîâ (-1 âåäåò âñå îðäåðà)
//--------------------------------------------------------------------
int OnInit()
{
return(INIT_SUCCEEDED);
}
//-------------------------------------------------------------------
void OnTick()
{
if(!IsTradeAllowed()) return;
double stoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
double OSL,OTP,OOP=0,SL=0,TP=0;
int i,tip;
double MA=NormalizeDouble(iMA(NULL,timeframe,period,ma_shift,ma_method,applied_price,1),Digits);
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && (Magic==OrderMagicNumber() || Magic==-1))
{
tip = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OTP = NormalizeDouble(OrderTakeProfit(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;TP=OTP;
if(tip==OP_BUY)
{
if(Tral_SL && Bid>MA+stoplevel && MA>OSL) SL=MA;
if(Tral_TP && Ask<MA-stoplevel && MA!=OTP) TP=MA;
if(SL!=OSL || TP!=OTP)
{
if(!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
}
}
if(tip==OP_SELL)
{
if(Tral_SL && Ask<MA-stoplevel && (MA<OSL || OSL==0)) SL=MA;
if(Tral_TP && Bid>MA+stoplevel && MA!=OTP) TP=MA;
if(SL!=OSL || TP!=OTP)
{
if(!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",(GetLastError()),">> ");
}
}
}
}
}
if(IsTesting() && OOP==0)
{
if(Bid>MA+stoplevel+10*Point)
{
if(OrderSend(Symbol(),OP_BUY,1,NormalizeDouble(Ask,Digits),100,0,0,NULL,Magic,0,clrNONE)==-1)
Print("Îøèáêà îòêðûòèÿ îðäåðà <<",(GetLastError()),">> ");
}
if(Ask<MA-stoplevel-10*Point)
{
if(OrderSend(Symbol(),OP_SELL,1,NormalizeDouble(Bid,Digits),100,0,0,NULL,Magic,0,clrNONE)==-1)
Print("Îøèáêà îòêðûòèÿ îðäåðà <<",(GetLastError()),">> ");
}
}
return;
}
//--------------------------------------------------------------------
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
---