Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
FT_MADEV_2
//+------------------------------------------------------------------+
//| FT_MADEV_2.mq4.mq4
//| Copyright © 2010, FORTRADER.RU. Îòêëîíåíèå îò ñðåäíåé
//| http://www.fortrader.ru Èññëåäîâàíèå äëÿ 63 âûïóñêà æóðíàëà FORTRADER.RU
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, FORTRADER.RU. Îòêëîíåíèå îò ñðåäíåé"
#property link "http://www.fortrader.ru Èññëåäîâàíèå äëÿ 63 âûïóñêà æóðíàëà FORTRADER.RU"
//---- parameters
extern int InpMaDevPeriod=20;
//extern int timestart=1;
//extern int timestop=1;
extern int NumBarsSerach=100;
extern int EA_Magic=12354;
extern double InpLots =0.1;
extern int InpTakeProfit=0;
extern int InpStopLoss =0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double maxdevbuy;
double maxdevsell;
double STP = InpTakeProfit;
double TKP = InpStopLoss;
if(Digits==5 || Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
double madev = iCustom(NULL, 0, "madev",InpMaDevPeriod,0,1);
double madevsearch;
//Èùåì ìàêñèìàëüíûå îòêëîíåíèÿ ââåðõ è âíèç îò ñðåäíåé
for(int i=5;i<NumBarsSerach;i++){
madevsearch = Close[i]- iMA(NULL,0,InpMaDevPeriod,0,MODE_SMA,PRICE_CLOSE,i);
if(madevsearch>maxdevsell){maxdevsell=madevsearch;}
if(madevsearch<maxdevbuy) {maxdevbuy=madevsearch;}
}
Print("madev "+madev+" maxdevbuy: "+maxdevbuy+" maxdevsell: "+maxdevsell);
if(madev>maxdevsell && !ChPos(1)){OpenOrderOnMarket(1,TKP,STP);}
if(madev<maxdevbuy && !ChPos(0)){OpenOrderOnMarket(0,TKP,STP);}
if(madev<=0 && ChPos(1)){_OrderClose(0);}
if(madev>=0 && ChPos(0)){_OrderClose(1);}
//----
return(0);
}
//ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type)
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100
int i;bool col=false;
for( i=1; i<=OrdersTotal(); i++)
{
if(OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==EA_Magic){col=true;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==EA_Magic){col=true;}
}
}
return(col);
}
int OpenOrderOnMarket(int type,int slpips,int tppips)
{double op,sl,tp;int err;
if(type==0)
{
op=Ask;if(slpips>0){sl=op-slpips*Point;}if(tppips>0){tp=op+tppips*Point;}
err=OrderSend(Symbol(),OP_BUY,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red);
if(err<0){Print("OrderSend()- Îøèáêà OP_BUY. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
if(type==1)
{
op=Bid;if(slpips>0){sl=op+slpips*Point;}if(tppips>0){tp=op-tppips*Point;}
err=OrderSend(Symbol(),OP_SELL,InpLots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"56 FORTRADER.RU",EA_Magic,0,Red);
if(err<0){Print("OrderSend()- Îøèáêà OP_SELL. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
}
return(0);
}
//Çàêðûâàåò ïîçèöþ ïî òèïó
int _OrderClose(int type)
{//http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=99
int err;
for(int i=1; i<=OrdersTotal(); i++)
{
if (OrderSelect(i-1,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==EA_Magic)
{
err=OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_BUY. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Bid "+Bid+" "+GetLastError());return(-1);}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==EA_Magic)
{
err=OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
if(err<0){Print("OrderClose()- Îøèáêà çàêðûòèÿ OP_SELL. OrderTicket "+OrderTicket()+" OrderLots() "+OrderLots()+" Ask "+Ask+" "+GetLastError());return(-1);}
}
}
}
return(0);
}
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
---