/*[[
Name := MedianTraderSilver
Author := ERB
Link :=
Notes := Eur Daily only
Lots := 1.00
Stop Loss := 150
Take Profit := 150
Trailing Stop := 0
]]*/
Define: MaxOpenTrades(6);
Define: Compounding(0);
Define: GearingToOne(1);
Var: a002(0);
Var: r1(0);
Var: r2(0);
Var: tvi(0);
Var: s1(0);
Var: s2(0);
Var: step(0);
Var: ppl(30);
Var: cnt(0);
Var: t1(0);
Var: t2(0);
Var: t3(0);
Var: t4(0);
Var: t5(0);
Var: ShowGrid(0);
Var: SLSell(0);
Var: SLBuy(0);
Var: TradeVol(1);
if CurTime < StrToTime("2006.12.12") then Exit;
//if CurTime > StrToTime("2005.09.30") then Exit;
if IsTesting == False then ShowGrid = 1;
//Comment("This EA is for Demo accounts only");
if Compounding == 1 then TradeVol = 0.1 * Round(Equity / (10000 /
GearingToOne));
if Compounding == 0 then TradeVol = Lots;
tvi = Abs(iMA(3,0,1) - iMA(3,0,3)) / (High[Highest(2,3,3)] - Low[Lowest(1,3,3)]) * 100;
if tvi < 40 then step = 150;
if tvi > 40 then step = 200;
a002 = GetGlobalVariable("a002");
if Low[Lowest(1,2,2)] > a002 + 50 * Point then a002 = Round((a002 + step *
Point) * 10000) / 10000;
if High[Highest(2,2,2)] < a002 - 50 * Point then a002 = Round((a002 - step *
Point) * 10000) / 10000;
SetGlobalVariable("a002",a002);
r2 = Round((a002 + 45 * Point) * 10000) / 10000;
r1 = Round((a002 + ppl * Point) * 10000) / 10000;
s1 = Round((a002 - ppl * Point) * 10000) / 10000;
s2 = Round((a002 - ppl * 2 * Point) * 10000) / 10000;
SLBuy = a002 - StopLoss * Point;
SLSell = a002 + StopLoss * Point;
if ShowGrid == 1 then
{
MoveObject("Sell_StopLoss_line",0,Time[0],SLSell,Time[0],SLSell,16776960,1,2);
MoveObject("Median_line",0,Time[0],a002,Time[0],a002,16711935,1,1);
MoveObject("Buy_StopLoss_line",0,Time[0],SLBuy,Time[0],SLBuy,16776960,1,2);
SetObjectText("SLSell_txt","Sell StopLoss ","Arial",8,White);
MoveObject("SLSell_txt",4,Time[44],SLSell,Time[44],SLSell,16777215);
SetObjectText("Median_txt","Median ","Arial",8,White);
MoveObject("Median_txt",4,Time[44],"a002",Time[44],a002,16777215);
SetObjectText("SLBuy_txt","Buy StopLoss ","Arial",8,White);
MoveObject("SLBuy_txt",4,Time[44],SLBuy,Time[44],SLBuy,16777215);
}
for cnt = 1 to TotalTrades
{
if Ord(cnt,VAL_OPENTIME) > Time[0] then
{
if Ord(cnt,VAL_OPENPRICE) == s2 then t1 = 1;
if Ord(cnt,VAL_OPENPRICE) == s1 then t2 = 1;
if Ord(cnt,VAL_OPENPRICE) == a002 then t3 = 1;
if Ord(cnt,VAL_OPENPRICE) == r1 then t4 = 1;
if Ord(cnt,VAL_OPENPRICE) == r2 then t5 = 1;
}
}
if TotalTrades < MaxOpenTrades then
{
if DayOfWeek > 2 then
{
if Hour == 1 and Minute > 5 then
{
if Ask < s2 - 7 * Point and t1 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,s2,0,SLBuy,s2 + TakeProfit *
Point,Black);
Exit;
}
if Ask < s1 - 7 * Point and t2 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,s1,0,SLBuy,s1 + TakeProfit *
Point,Black);
Exit;
}
if Ask < a002 - 7 * Point and t3 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,a002,0,SLBuy,a002 + TakeProfit *
Point,Black);
Exit;
}
if Ask < r1 - 7 * Point and t4 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,r1,0,SLBuy,r1 + TakeProfit *
Point,Black);
Exit;
}
if Bid > r2 + 7 * Point and t5 == 0 then
{
SetOrder(OP_SELLSTOP,TradeVol,r2,0,SLSell,r2 - TakeProfit *
Point,Black);
Exit;
}
}
if Hour == 1 and Minute < 5 then
{
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
t5 = 0;
}
}
if DayOfWeek == 2 then
{
if Hour == 2 and Minute > 5 then
{
if Ask < s2 - 7 * Point and t1 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,s2,0,SLBuy,s2 + TakeProfit *
Point,Black);
Exit;
}
if Ask < s1 - 7 * Point and t2 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,s1,0,SLBuy,s1 + TakeProfit *
Point,Black);
Exit;
}
if Ask < a002 - 7 * Point and t3 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,a002,0,SLBuy,a002 + TakeProfit *
Point,Black);
Exit;
}
if Ask < r1 - 7 * Point and t4 == 0 then
{
SetOrder(OP_BUYSTOP,TradeVol,r1,0,SLBuy,r1 + TakeProfit *
Point,Black);
Exit;
}
if Bid > r2 + 7 * Point and t5 == 0 then
{
SetOrder(OP_SELLSTOP,TradeVol,r2,0,SLSell,r2 - TakeProfit *
Point,Black);
Exit;
}
}
if Hour == 1 and Minute < 5 then
{
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
t5 = 0;
}
}
}
for cnt = 1 to TotalTrades
{
if Ord(cnt,VAL_TYPE) > OP_SELL then
{
if Hour == 0 and Minute >= 30 then
{
DeleteOrder(Ord(cnt,VAL_TICKET),Red);
Exit;
}
if DayOfWeek == 6 then
{
if Hour == 22 and Minute >= 30 then
{
DeleteOrder(Ord(cnt,VAL_TICKET),Red);
Exit;
}
}
}
}