📄 [ea]2max_ron_mt4_v02.mq4
字号:
/*
+--------+
|2MAX |
+--------+
Theory of operation
Long term MA against short term MA
TIME FRAME
==========
trying M15
PAIRS
=====
GBPUSD
ENTRY LONG
==========
Fast cross above slow
ENTRY SHORT
===========
Fast cross below slow
EXIT
====
Stop and Reverse
MONEY MANAGEMENT
================
none
RISK MANAGEMENT
===============
none
FAILURE MANAGEMENT
==================
GetLastError on every transaction
VERSION HISTORY
===============
01 - initial concept
02 - another order every N ticks to overcome chop
*/
// variables declared here are GLOBAL in scope
#property copyright "Ron Thompson"
#property link "http://www.lightpatch.com/forex"
// user input
extern double Lots=0.1; // how many lots to trade at a time
extern int Slippage=2; // how many pips of slippage can you tolorate
extern int MASlow=88;
extern int MAFast=7;
extern int barstep=5;
extern double ProfitMade=99; // how much money do you expect to make
extern double LossLimit=43; // how much loss can you tolorate
extern double TrailStop=999; // trailing stop (999=no trailing stop)
extern int PLBreakEven=59; // set break even when this many pips are made (999=off)
extern int StartHour=0; // your local time to start making trades
extern int StopHour=24; // your local time to stop making trades
extern int BasketProfit=200; // if equity reaches this level, close trades
extern int BasketLoss=9999; // if equity reaches this negative level, close trades
extern string FileName="2MAXv2Log";
// naming and numbering
int MagicNumber = 200604052129; // allows multiple experts to trade on same account
string TradeComment = "2MAX_02_"; // comment so multiple EAs can be seen in Account History
// Bar handling
datetime bartime=0; // used to determine when a bar has moved
int bartick=0; // number of times bars have moved
int reptick=0;
int objtick=0; // used to draw objects on the chart
// Trade control
bool TradeAllowed=true; // used to manage trades
// Min/Max tracking
double maxOrders;
double maxEquity;
double minEquity;
//+-------------+
//| Custom init |
//|-------------+
// Called ONCE when EA is added to chart or recompiled
int init()
{
int i;
string o;
//remove the old objects
for(i=0; i<Bars; i++)
{
o=DoubleToStr(i,0);
ObjectDelete("myx"+o);
ObjectDelete("myz"+o);
}
objtick=0;
Print("Init happened ",CurTime());
logwrite( FileName, "Init happened "+CurTime());
Comment(" ");
}
//+----------------+
//| Custom DE-init |
//+----------------+
// Called ONCE when EA is removed from chart
int deinit()
{
Print("MAX number of orders",maxOrders);
Print("MAX equity ",maxEquity);
Print("MIN equity ",minEquity);
Print("DE-Init happened ",CurTime());
logwrite( FileName, "DE-Init happened "+CurTime());
Comment(" ");
}
//+-----------+
//| Main |
//+-----------+
// Called EACH TICK and each Bar[]
int start()
{
double p=Point();
double spread=Ask-Bid;
int cnt=0;
int gle=0;
int OrdersPerSymbol=0;
int OrdersBUY=0;
int OrdersSELL=0;
// stoploss and takeprofit and close control
double SL=0;
double TP=0;
double CurrentProfit=0;
double CurrentBasket=0;
// direction control
bool BUYme=false;
bool SELLme=false;
// indicator things
double PmaF, PmaS, CmaF, CmaS;
// bar counting
if(bartime!=Time[0])
{
bartime=Time[0];
bartick++;
reptick++;
objtick++;
if(Hour()>=StartHour && Hour()<=StopHour)
{
TradeAllowed=true;
}
}
OrdersPerSymbol=0;
for(cnt=OrdersTotal();cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
OrdersPerSymbol++;
}
}
if(OrdersPerSymbol>maxOrders) maxOrders=OrdersPerSymbol;
//+-----------------------------+
//| Insert your indicator here |
//| And set either BUYme or |
//| SELLme true to place orders |
//+-----------------------------+
CmaS=iMA(Symbol(),0,MASlow,0,MODE_SMA,PRICE_OPEN,0);
PmaS=iMA(Symbol(),0,MASlow,0,MODE_SMA,PRICE_OPEN,1);
CmaF=iMA(Symbol(),0,MAFast,0,MODE_LWMA,PRICE_OPEN,0);
PmaF=iMA(Symbol(),0,MAFast,0,MODE_LWMA,PRICE_OPEN,1);
ObjectDelete("xCmaS");
ObjectCreate("xCmaS", OBJ_ARROW, 0, Time[0], CmaS);
//ObjectSetText("xCmaS","+",15,"Arial",White);
ObjectDelete("xCmaF");
ObjectCreate("xCmaF", OBJ_ARROW, 0, Time[0], CmaF);
//ObjectSetText("xCmaF","+",15,"Arial",White);
ObjectDelete("xPmaS");
ObjectCreate("xPmaS", OBJ_ARROW, 0, Time[1], PmaS);
//ObjectSetText("xPmaS","+",15,"Arial",White);
ObjectDelete("xPmaF");
ObjectCreate("xPmaF", OBJ_ARROW, 0, Time[1], PmaF);
//ObjectSetText("xPmaF","+",15,"Arial",White);
if(TradeAllowed && PmaF<PmaS && CmaF>CmaS)
{
CloseEverything();
logwrite(FileName,"Buying EURUSD at "+Close[0]);
//Comment("BUYme");
BUYme=true;
}
if(TradeAllowed && PmaF>PmaS && CmaF<CmaS)
{
CloseEverything();
logwrite(FileName,"Selling EURUSD at "+Close[0]);
//Comment("SELLme");
SELLme=true;
}
// Adding trades every N ticks
if(TradeAllowed && CmaF>CmaS && reptick>=barstep)
{
reptick=0;
logwrite(FileName,"Adding Buy EURUSD at "+Close[0]);
BUYme=true;
}
if(TradeAllowed && CmaF<CmaS && reptick>=barstep)
{
reptick=0;
logwrite(FileName,"Adding Sell EURUSD at "+Close[0]);
SELLme=true;
}
//+------------+
//| End Insert |
//+------------+
//ENTRY LONG (buy, Ask)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -