Introduction
I am giving away an idea of hedging the GBP/JPY & EUR/JPY daily. Yes Daily. This idea popped up while I was trying to generate a trading system that plays on the daily scheme, opening the trade only once a day, collecting the profit only around $100 each day, and of course, all the things do automatically. At the first time, I only tried to trade with the TD-Sequential System, owned by Tom Demark. I tried trading it daily, actually it dose a good system, but somehow give me an unacceptable loss, then the idea of hedging the two correlated pairs came out. "Why don't hedge ?, then you will lose less than today or maybe you can gain, sounds grate ! ". Then i tested it manually with 1 month past history, and found a good profit maker sign. So...no need to wait for anything, just make it automatically trade for you and test it live for a couple of months or longer. Now let's start making it comes true.
Concept of Daily Hedge
Before we start the coding process, let's make a plan together. Including...
-> What will we use for signaling the daily trading trend? : This will give us the estimate today's direction of GBP/JPY and EUR/JPY (these two pairs are always 90% correlated) . In this case i still choose the TD-Sequential System, an easy TD-Sequential I've found in a forum, to give me the daily signal.
-> Which hedging pairs to hedge? : Just select your favorite pairs. Mine are GBP/JPY and EUR/JPY, with the reason above.
-> Which pair will be the base pair? & Which one will be the hedge pair? : This will make it easier to code the EA. I decided to mark the EUR/JPY as my base pair and hedge GBP/JPY. ("Why Base & Hedge?", that's because of the system is hedge by the daily trend.) For example, today the TD-Sequential signal out the UP trend of EUR/JPY, then I will BUY EUR/JPY and hedge by selling GBP/JPY. Or maybe you can make sure by mark the UP day only when both EUR/JPY and GBP/JPY are showing the TD-Sequential UP, then buy the base pair & sell the hedge pair.
-> What is the ... correlation ? : Of course, we need this factor, and you all know, it is an important factor of hedging system. In this case, I will only allow to hedge when the correlation of those two pairs is 0.9 or higher only. YES, please don't be astonished. Yes 0.9+ "WHY ?", I know every hedge professor suggests you to hedge when the correlation is low, but that is for a very very and very long - term . To me and my daily hedging system, hedging at high correlation is better. Please NOTE that, this is for my daily hedging system only. Because we need them to go the same way always, especially for today (our trading day), then we can get one positive and one negative always and then only collect the profit when they swing, even they were never swing in the profitable way, you still loss less than one way in negative trade.
O.K. Now let's start coding.
Daily Hedge Expert Advisor
In this part, I will separate it into 5 major parts, that is .
- The Input Parameters
- The Daily Trend Signal Function
- The Trade Function
- The Trading Process
- Showing The Hedging Status Function
And now let's begin with the input parameters.
1. Input Parameters
extern bool BlockOpening=false;
extern bool ShowStatus=true;
extern string Auto_Lot_______________________="_______";
extern int PercentMaxRisk=25;
extern string How_Much_You_Xpect?____________ ="_______";
extern double Daily_Percent_ROI=7.98;
extern double AcceptableLoss_ROI=3.08;
string BaseSymbol="GBPJPY";
string H_Symbol="EURJPY";
int CorPeriod_1=3;
int CorPeriod_2=5;
bool AutoLot=true;
double H_B_LotsRatio=1.50;
int MMBase=3;
string ExpectCorrelation______________= "______";
double Between=1.05;
double And=0.9;
string TDSequential="______";
int cntFrom=1;
int cntTo=3;
bool ClearTradeDaily?=true;
string MISC___________________________= "______";
int MagicNo=317;
bool PlayAudio=false;
int BSP
,HSP
,gsp
,BOP=-1
,HOP=-1
,up=0
,Hcnt=0
,u=0
,d=0
,day=0
,sent=0
,cntm
,curm
;
double Lot
,BaseOpen
,HOpen
,BaseLots
,HLots
,BUM
,GBUM
,HUM
,GHUM
,TUM
,BPt
,HPt
,midpt3;
bool SResult=false,BResult=false;
bool allmeetcor=false,BlockOpen=false,cleared=false;
string candletxt,tdstxt="";
double Min_Lot;
double Max_Lot;
double lot_step;
int init()
{
BSP=MarketInfo(BaseSymbol,MODE_SPREAD);
HSP=MarketInfo(H_Symbol,MODE_SPREAD);
BPt=MarketInfo(BaseSymbol,MODE_POINT);
HPt=MarketInfo(H_Symbol,MODE_POINT);
lot_step=MarketInfo(BaseSymbol, MODE_LOTSTEP);
Min_Lot=MarketInfo(BaseSymbol, MODE_MINLOT);
if(Min_Lot<=0)Min_Lot=1*lot_step;
Max_Lot=MarketInfo(BaseSymbol, MODE_MAXLOT);
if(BSP>HSP)gsp=HSP;
else gsp=BSP;
return(0);
}
2. Daily Trend Signal Function
int DeMark(string sym,int s)
{
int i,pos=36,num=0,num1=0,Rnum,w,m;
for(i=pos; i>=0; i--)
{
double midPt3=(iClose(sym,0,i+s+cntTo)+iOpen(sym,0,i+s+cntTo))/2;
if(iClose(sym,0,i+s+cntFrom)<midPt3)
{ w++;m=0;num++; num1=0;
Rnum=-1*num;
}
else
if(iClose(sym,0,i+cntFrom)>midPt3)
{ m++;w=0;num1++;num=0;
Rnum=num1;
}
else {num1=0;num =0;Rnum=0;}
}
return(Rnum);
}
double symboldif(string symbol,int shift,int CorPeriod)
{
return(iClose(symbol,1440,shift)-iMA(symbol,1440,CorPeriod,0,MODE_SMA,PRICE_CLOSE,shift));
}
double powdif(double val)
{
return(MathPow(val,2));
}
double u(double val1,double val2)
{
return((val1*val2));
}
double Cor(string base,string hedge,int CorPeriod)
{ double u1=0,l1=0,s1=0;
for(int i=CorPeriod-1 ;i >=0 ;i--)
{
u1 +=u(symboldif(base,i,CorPeriod),symboldif(hedge,i,CorPeriod));
l1 +=powdif(symboldif(base,i,CorPeriod));
s1 +=powdif(symboldif(hedge,i,CorPeriod));
}
if(l1*s1 >0) return(u1/MathSqrt(l1*s1));
}
3. Trade Function
double TotalCurProfit(int magic)
{
double MyCurrentProfit=0;
for(int cnt=0;cnt < OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber()==magic)
{
MyCurrentProfit+= (OrderProfit()+OrderSwap());
}
}
return(MyCurrentProfit);
}
bool CloseHedge(int magic)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
{
if(OrderClose(OrderTicket()
,OrderLots()
,OrderClosePrice()
,MarketInfo(OrderSymbol(),MODE_SPREAD)
,CLR_NONE)
)SResult=true;
}
}
if(SResult||BResult){return(true);if(PlayAudio){PlaySound("ok.wav");}}
else Print("CloseHedge Error: ",ErrorDescription(GetLastError()));
RefreshRates();
}
bool SendH(string symbol,int op,double lots,double price,int sp,string comment,int magic)
{
if(OrderSend(symbol
,op
,lots
,price
,sp
,0
,0
,comment
,magic
,0
,CLR_NONE)
>0)
{ return(true);
if(PlayAudio)PlaySound("expert.wav");
}
else {Print(symbol,": "
,magic," : "
,ErrorDescription(GetLastError()));
return(false);
}
}
int ExistPositions(string symbol,int magic)
{
int NumPos=0;
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
&&OrderSymbol()==symbol
&&OrderMagicNumber()==magic
)
{ NumPos++;}
}
return(NumPos);
}
int ExistOP(string symbol,int magic)
{
int NumPos=-1;
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
&&OrderSymbol()==symbol
&&OrderMagicNumber()==magic
)
{ NumPos=OrderType();}
}
return(NumPos);
}
bool CloseScrap(string sym,int op,int magic)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
&& OrderMagicNumber()==magic
&&OrderSymbol()==sym
&&OrderType()==op)
{
if(OrderClose(OrderTicket()
,OrderLots()
,OrderClosePrice()
,MarketInfo(OrderSymbol(),MODE_SPREAD)
,CLR_NONE)
)BResult=true;
}
}
if(SResult||BResult){return(true);if(PlayAudio){PlaySound("ok.wav");}}
else Print("CloseScrap Error: ",ErrorDescription(GetLastError()));
RefreshRates();
}
string OP2Str(int op)
{
switch(op)
{
case OP_BUY : return("BUY");
case OP_SELL: return("SELL");
default : return("~~");
}
}
int GetTimeExistOP(string symbol,int magic)
{
int NumPos=-1;
for(int i=0;i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
&&OrderSymbol()==symbol
&&OrderMagicNumber()==magic
)
{ NumPos=OrderOpenTime();}
}
return(NumPos);
}
string bool2str( bool boolval)
{
if(boolval==true) return("Yes");
if(boolval==false)return("No");
}
double Base(int MM)
{
switch(MM)
{
case 1: return(AccountBalance()); break;
case 2: return(AccountEquity()); break;
case 3: return(AccountFreeMargin());
}
}
double Lots(string symbol, double risk)
{
if(risk > 100) risk=100;
Lot=NormalizeDouble(Base(MMBase)*(risk/100)/AccountLeverage()/10.0, 2);
Lot=NormalizeDouble(Lot/lot_step, 0)*lot_step;
if(Lot < Min_Lot) Lot=Min_Lot;
if(Lot > Max_Lot) Lot=Max_Lot;
return(Lot);
}
double AutoBLots()
{
double z=1+H_B_LotsRatio
,BLot=Lots(BaseSymbol,PercentMaxRisk)/z;
BLot=NormalizeDouble(BLot/lot_step, 0)*lot_step;
if(BLot < Min_Lot) BLot=Min_Lot;
if(BLot > Max_Lot) BLot=Max_Lot;
return(BLot);
}
double AutoHLots()
{
double HLot=AutoBLots()*H_B_LotsRatio;
HLot=NormalizeDouble(HLot/lot_step, 0)*lot_step;
if(HLot < Min_Lot) HLot=Min_Lot;
if(HLot > Max_Lot) HLot=Max_Lot;
return(HLot);
}
4. Trading Process
int start()
{
midpt3=(iClose(BaseSymbol,1440,3)+iOpen(BaseSymbol,1440,3))/2;
int hb=FileOpen("B317.csv", FILE_CSV|FILE_READ)
,hh=FileOpen("H317.csv", FILE_CSV|FILE_READ);
if(hb>0)
{
GBUM=StrToDouble(FileReadString(hb));
FileClose(hb);
}
if(hh>0)
{
GHUM=StrToDouble(FileReadString(hh));
FileClose(hh);
}
TUM=GBUM+GHUM;
{
if(Period()==1440)
{
if(day!=Day())
{ sent=0;cleared=false;
if(ExistPositions(BaseSymbol,MagicNo)==1&&ExistPositions(H_Symbol,MagicNo)==1)
{
if(Day()!= TimeDay(GetTimeExistOP(BaseSymbol,MagicNo))
&& Day()!=TimeDay(GetTimeExistOP(H_Symbol,MagicNo)))
{
if(ClearTradeDaily? && (TotalCurProfit(MagicNo)/TUM)*100>AcceptableLoss_ROI)
{
if(CloseHedge(MagicNo)){cleared=true;BUM=0;HUM=0;}
}
else
if((DeMark(BaseSymbol,0)>0&&DeMark(H_Symbol,0)>0&&DeMark(BaseSymbol,1)<0&&
DeMark(H_Symbol,1)<0)
||(DeMark(BaseSymbol,0)<0&&DeMark(H_Symbol,0)<0&&DeMark(BaseSymbol,1)>0&&
DeMark(H_Symbol,1)>0)
)
{
if(CloseHedge(MagicNo)){cleared=true;BUM=0;HUM=0;}
}
}
}
else
{
if(ExistPositions(BaseSymbol,MagicNo)>=1&&Day()!= TimeDay(GetTimeExistOP(BaseSymbol,MagicNo)))
{
if(ExistOP(BaseSymbol,MagicNo)==OP_SELL){CloseScrap(BaseSymbol,OP_SELL,MagicNo);
{cleared=true;BUM=0;HUM=0;}}
if(ExistOP(BaseSymbol,MagicNo)==OP_BUY ){CloseScrap(BaseSymbol,OP_BUY,MagicNo);
{cleared=true;BUM=0;HUM=0;}}
}
else
if(ExistPositions(H_Symbol,MagicNo)>=1&&Day()!= TimeDay(GetTimeExistOP(H_Symbol,MagicNo)))
{
if(ExistOP(H_Symbol,MagicNo)==OP_BUY) {CloseScrap(H_Symbol,OP_BUY,MagicNo);
{cleared=true;BUM=0;HUM=0;}}
if(ExistOP(H_Symbol,MagicNo)==OP_SELL){CloseScrap(H_Symbol,OP_SELL,MagicNo);
{cleared=true;BUM=0;HUM=0;}}
}
}
if(( Cor(BaseSymbol,H_Symbol,CorPeriod_1)>Between
|| Cor(BaseSymbol,H_Symbol,CorPeriod_1)<And
)
||( Cor(BaseSymbol,H_Symbol,CorPeriod_2)>Between
|| Cor(BaseSymbol,H_Symbol,CorPeriod_2)<And
)
)
BlockOpen=true;
else BlockOpen=false;
day=Day();
}
else
if(TimeCurrent()>Time[0]&&ExistPositions(BaseSymbol,MagicNo)+ExistPositions(H_Symbol,MagicNo)>1)
{
if((!cleared&&(TotalCurProfit(MagicNo)/TUM)*100>AcceptableLoss_ROI&&
Day()!= TimeDay(GetTimeExistOP(BaseSymbol,MagicNo)))
||((TotalCurProfit(MagicNo)/TUM)*100>Daily_Percent_ROI)
)
{CloseHedge(MagicNo);BlockOpen=true;BUM=0;HUM=0;}
}
double BMid=(MarketInfo(BaseSymbol,MODE_ASK)+MarketInfo(BaseSymbol,MODE_BID))/2
,HMid=(MarketInfo(H_Symbol,MODE_ASK)+MarketInfo(H_Symbol,MODE_BID))/2
,BLS,HLS
,BLST,HLST;
BLS=AutoBLots();
HLS=AutoHLots();
{
if(MathAbs((BMid-iOpen(BaseSymbol,1440,0)))<=BPt*gsp&&
MathAbs(HMid-iOpen(H_Symbol,PERIOD_D1,0))<=HPt*gsp)
{
int handleB=FileOpen("B"+DoubleToStr(317,0)+".csv", FILE_CSV|FILE_WRITE, ';')
,handleH=FileOpen("H"+DoubleToStr(317,0)+".csv", FILE_CSV|FILE_WRITE, ';')
;
if(DeMark(BaseSymbol,0)>0&&DeMark(H_Symbol,0)>0
&& iClose(BaseSymbol,1440,1)>midpt3
)
{
up=1;
BaseOpen=MarketInfo(BaseSymbol,MODE_ASK);
HOpen =MarketInfo(H_Symbol,MODE_BID);
if(MathAbs((BaseOpen-iOpen(MarketInfo(BaseSymbol,MODE_BID),1440,0)))<=BPt*gsp
&&MathAbs(MarketInfo(H_Symbol,MODE_BID)-iOpen(H_Symbol,PERIOD_D1,0))<=HPt*gsp
)
{
if(!BlockOpen && !BlockOpening)
{
if(ExistPositions(BaseSymbol,MagicNo)!=0 && ExistOP(BaseSymbol,MagicNo)==OP_SELL)
{
CloseScrap(BaseSymbol,OP_SELL,MagicNo);BUM=0;HUM=0;
}
else
if(ExistPositions(BaseSymbol,MagicNo)==0
&&(ExistOP(H_Symbol,MagicNo)==OP_SELL
|| ExistOP(H_Symbol,MagicNo)==-1
)
)
{ BUM=((MarketInfo("EURUSD",MODE_BID)+MarketInfo("EURUSD",MODE_ASK))/2)*BLS*
(MarketInfo("EURJPY",MODE_LOTSIZE)/100);
if(handleB>0)
{
FileWrite(handleB,BUM);
FileClose(handleB);
}
if(SendH(BaseSymbol,OP_BUY,BLS,BaseOpen,BSP
,"TDS UP : "+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_1),2)
+"|"+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_2),2),MagicNo))
{sent++;}
BLST=BLS;
}
if(ExistPositions(H_Symbol,MagicNo)!=0 && ExistOP(H_Symbol,MagicNo)==OP_BUY)
{
CloseScrap(H_Symbol,OP_BUY,MagicNo);BUM=0;HUM=0;
}
else
if(ExistPositions(H_Symbol,MagicNo)==0
&&(ExistOP(BaseSymbol,MagicNo)==OP_BUY
|| ExistOP(BaseSymbol,MagicNo)==-1
)
)
{ HUM=((MarketInfo("GBPUSD",MODE_BID)+MarketInfo("GBPUSD",MODE_ASK))/2)*HLS*
(MarketInfo("GBPJPY",MODE_LOTSIZE)/100);
if(handleH>0)
{
FileWrite(handleH,HUM);
FileClose(handleH);
}
if(SendH(H_Symbol,OP_SELL,HLS,HOpen,HSP
,"TDS UP : "+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_1),2)
+"|"+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_2),2),MagicNo))
{sent++;}
HLST=HLS;
}
}
}
}
if(DeMark(BaseSymbol,0)<0&&DeMark(H_Symbol,0)<0
&& iClose(BaseSymbol,1440,1)<midpt3
)
{
up=-1;
BaseOpen=MarketInfo(BaseSymbol,MODE_BID);
HOpen =MarketInfo(H_Symbol,MODE_ASK);
if(MathAbs((BaseOpen-iOpen(MarketInfo(BaseSymbol,MODE_BID),1440,0)))<=BPt*gsp
&&MathAbs(MarketInfo(H_Symbol,MODE_BID)-iOpen(H_Symbol,PERIOD_D1,0))<=HPt*gsp
)
{
if(!BlockOpen && !BlockOpening)
{
if(ExistPositions(BaseSymbol,MagicNo)!=0 && ExistOP(BaseSymbol,MagicNo)==OP_BUY)
{
CloseScrap(BaseSymbol,OP_BUY,MagicNo);BUM=0;HUM=0;
}
else
if(ExistPositions(BaseSymbol,MagicNo)==0
&&(ExistOP(H_Symbol,MagicNo)==OP_BUY
|| ExistOP(H_Symbol,MagicNo)==-1
)
)
{BUM=((MarketInfo("EURUSD",MODE_BID)+MarketInfo("EURUSD",MODE_ASK))/2)*BLS*
(MarketInfo("EURJPY",MODE_LOTSIZE)/100);
if(handleB>0)
{
FileWrite(handleB,BUM);
FileClose(handleB);
}
if(SendH(BaseSymbol,OP_SELL,BLS,BaseOpen,BSP
,"TDS DN : "+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_1),2)
+"|"+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_2),2),MagicNo))
{sent++;}
BLST=BLS;
}
if(ExistPositions(H_Symbol,MagicNo)!=0 && ExistOP(H_Symbol,MagicNo)==OP_SELL)
{
CloseScrap(H_Symbol,OP_SELL,MagicNo);BUM=0;HUM=0;
}
else
if(ExistPositions(H_Symbol,MagicNo)==0
&&(ExistOP(BaseSymbol,MagicNo)==OP_SELL
|| ExistOP(BaseSymbol,MagicNo)==-1
)
)
{HUM=((MarketInfo("GBPUSD",MODE_BID)+MarketInfo("GBPUSD",MODE_ASK))/2)*HLS*
(MarketInfo("GBPJPY",MODE_LOTSIZE)/100);
if(handleH>0)
{
FileWrite(handleH,HUM);
FileClose(handleH);
}
if(SendH(H_Symbol,OP_BUY,HLS,HOpen,HSP
,"TDS DN : "+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_1),2)
+"|"+DoubleToStr(Cor(BaseSymbol,H_Symbol,CorPeriod_2),2),MagicNo))
{sent++;}
HLST=HLS;
}
}
}
}
}
else
if(day==Day()
&&TimeCurrent()>Time[0]
&&ExistPositions(BaseSymbol,MagicNo)+ExistPositions(H_Symbol,MagicNo)!=0
)
{
if((TotalCurProfit(MagicNo)/TUM)*100>AcceptableLoss_ROI)
{
if(ExistPositions(BaseSymbol,MagicNo)!=0
&&ExistPositions(H_Symbol,MagicNo)==0
)
{
if(ExistOP(BaseSymbol,MagicNo)==OP_SELL)
{CloseScrap(BaseSymbol,OP_SELL,MagicNo);BlockOpen=true;BUM=0;HUM=0;}
else
if(ExistOP(BaseSymbol,MagicNo)==OP_BUY)
{CloseScrap(BaseSymbol,OP_BUY,MagicNo);BlockOpen=true;BUM=0;HUM=0;}
}
if(ExistPositions(BaseSymbol,MagicNo)==0
&&ExistPositions(H_Symbol,MagicNo)!=0
)
{
if(ExistOP(H_Symbol,MagicNo)==OP_BUY)
{CloseScrap(H_Symbol,OP_BUY,MagicNo);BlockOpen=true;BUM=0;HUM=0;}
else
if(ExistOP(H_Symbol,MagicNo)==OP_SELL)
{CloseScrap(H_Symbol,OP_SELL,MagicNo);BlockOpen=true;BUM=0;HUM=0;}
}
}
}
}
}
else Alert("Please Attatch The EA On D1 Only.");
}
5. Showing the Hedging Status Function
if (DeMark(BaseSymbol,0)>0&&DeMark(H_Symbol,0)>0) tdstxt="UP";
else if(DeMark(BaseSymbol,0)<0&&DeMark(H_Symbol,0)<0) tdstxt="DN";
else tdstxt="~~";
if(curm!=Minute())
{
cntm++;
curm=Minute();
}
if(cntm<=15)
string timetxt="\n\nThis text section will disappear in 15 minutes after this."
+"\n"
+"\n\nIn order to run this EA you need to turn off every other EAs."
+"\nThis EA was created to be standed alone due to the AccountMargin() function."
+"\nRunning other EA at the same time will cause the WRONG calculation of your Daily ROI function."
+"\nPLS Strickly follow the instruction above to see the real performance of Daily Hedge Strategy."
+"\nThank You ^_^."
+"\n~~~~~~~";
else timetxt="";
if(ShowStatus)
{
Comment(
"\n\nDailyH : Daily GBPJPY ~ EURJPY Hedge."
,"\nBy sexytrade.wordpress.com"
,"\nWith A Static Magic No. of 317"
,timetxt
,"\n\nBlockOpen : "+bool2str(BlockOpen || BlockOpening)
,"\n\nB/H [sp] : "+BaseSymbol+" ["+BSP+"]"+" / "+H_Symbol+" ["+HSP+"]"
,"\nCurOp [Lots]: "+OP2Str(ExistOP(BaseSymbol,MagicNo))+" ["+DoubleToStr(BLST,2)+"]"
+" ~ "+OP2Str(ExistOP(H_Symbol,MagicNo))+" ["+DoubleToStr(HLST,2)+"]"
,"\nCurPF [Expect]: $"
+DoubleToStr(TotalCurProfit(MagicNo),2)
+" [$"
+DoubleToStr(TUM*(Daily_Percent_ROI/100),2)
+" / ROI: "
+DoubleToStr(Daily_Percent_ROI,2)
+"]"
);
}
else Comment("");
Let Me Show Off
My daily hedge system with some live testing results.







Conclusion
From
my 1 month report and the back testing result that show a possibility
to make money in forex using this daily hedge concept, I think this system can help at least one idea of you to light up ("Ping Pong!!!, Hey! What about doing this instead ?") and generate a money maker system that is more qualify. Or maybe my style of coding can at least help one newbie to learn and practical for his/her traditional coding style.
I strongly hope that my article is useful for all readers, even the
system may fail later, and you all like it. Now I will follow my plan of testing it for at least 6 months and I will post the result if possible. GOOD LUCK.