Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
ao1
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| ao.mq4 |
//| Copyright © 2005, tageiger |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, tageiger aka fxid10t"
#property link "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int slip =2;
extern double MaximumRisk =0.02; //%account balance to risk per position
extern double DecreaseFactor =3; //lot size divisor(reducer) during loss streak
extern string comment ="m ao";
extern int magic =1965;
int ticket,b,s,c;
int init(){return(0);}
int deinit(){return(0);}
int start(){
if(!IsTesting()){
if(Period()!=15 && c<=0) {
int ret=MessageBox("The AO expert was designed for 15m\n charts,do you wish to continue?","ao expert advisor",MB_YESNO|MB_ICONQUESTION);
c++;
if(ret==IDNO) return(0);}}
double mafc=iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,0);
double masc=iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,0);
double mafp=iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,1);
double masp=iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,1);
PosCounter();
double aoc=mafc-masc;
double aop=mafp-masp;
//double AO=iCustom(Symbol(),0,"Awesome",0,0,0);
if((aoc>aop) && (aop<(0.0000)) && b==0) {
ticket=OrderSend(Symbol(),
OP_BUY,
LotsOptimized(),
Ask,
slip,
bsl(),
0,//tp
Period()+comment,
magic,
0,//OrderExpiration
Blue);
if(ticket>0) {
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{ Print(ticket); }
else Print("Error Opening Buy Order: ",GetLastError());
return(0); }}//buy
if((aoc<aop) && (aop>(0.0000)) && s==0) {
ticket=OrderSend(Symbol(),
OP_SELL,
LotsOptimized(),
Bid,
slip,
ssl(),
0,//tp
Period()+comment,
magic,
0,//OrderExpiration
DeepPink);
if(ticket>0) {
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{ Print(ticket); }
else Print("Error Opening Sell Order: ",GetLastError());
return(0); }}//sell
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Period()+comment &&
OrderType()==OP_BUY && (aoc<aop) && (aop>(0.0000)) && OrderProfit()>0) {
OrderClose(OrderTicket(),OrderLots(),Bid,slip,Red);}
if(OrderSymbol()==Symbol() && OrderComment()==Period()+comment &&
OrderType()==OP_SELL && (aoc>aop) && (aop<(0.0000)) && OrderProfit()>0) {
OrderClose(OrderTicket(),OrderLots(),Ask,slip,Green);} }
if(!IsTesting()) {Comment("AO Last:",AOC()," ",aoc,"\n"," AO Prev:",AOP()," ",aop);}
return(0);
}
//+------------------------------------------------------------------+
double LotsOptimized() {
double lot;
int orders=HistoryTotal();
int losses=0;
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
if(DecreaseFactor>0) {
for(int i=orders-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++; }
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2); }
if(lot<0.05) lot=0.05;
return(lot); }//end LotsOptimized
double bsl() {
double Lval;
Lval=Low[Lowest(Symbol(),0,MODE_LOW,34,0)];
if(Ask-Lval<Point*150) {Lval=Ask+Point*150;}
return(Lval);}
double ssl() {
double Hval;
Hval=High[Highest(Symbol(),0,MODE_HIGH,34,0)];
if(Hval-Bid<Point*150) {Hval=Bid-Point*150;}
return(Hval);}
void PosCounter() {
b=0;s=0;
for(int cnt=0;cnt<=OrdersTotal();cnt++) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic &&
OrderComment()==Period()+comment) {
if(OrderType() == OP_SELL) s++;
if(OrderType() == OP_BUY ) b++;}}}
double AOC() {
return(iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,0)-iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,0));}
double AOP() {
return(iMA(Symbol(),0,5,0,MODE_SMA,PRICE_MEDIAN,1)-iMA(Symbol(),0,34,0,MODE_SMA,PRICE_MEDIAN,1));}
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
---