Cost Averaging System - page 9

 

I switched over from V.2 to V.3 last night and got slapped pretty hard today.

 

Statement for Second day. I thought I would get margin call today but not.

Results are from FXDD, 1min, default seting. Quite good. Deposit 5000, Balance 5416, Equlity 5114

Files:
 

This goes to show that how easily stop losses can be hit in this kind of trading. I think we have to look at some kind of trend exhaustion, like the RSI system, to enter. That maybe better than the random method, which is akin to standing in front of a runaway freight train.

 
tomstaufer:
Today v3 got hit.

RSI is doing very well.

Is there anyone else testing v2 ? Please post your results.

yeoeleven,

thanks for the info.

I have v2 running on three pairs....

I really have had better results with it than the v4. v4 has alot of trailing stop and 'patches' which have really muddied my methodical way of testing one thing at a time. I really wanted v2 with a timeclose feature and nothing else changed. V4 is a new animal I don't really know which end is the head and which end is the tail.

Despite how good this looks I won't run this live until we get the catastrophic drawdown problem solved. The rsi version still gives me this drawdown so that's just not really enough. I don't know what to make of v4 I can't seem to make it duplicate v2's results even when I turn everything off Maji told me to turn off.

 
Maji:
This goes to show that how easily stop losses can be hit in this kind of trading. I think we have to look at some kind of trend exhaustion, like the RSI system, to enter. That maybe better than the random method, which is akin to standing in front of a runaway freight train.

no doubt timing entries could be enhanced but I wish you would do me a favor and make a version 2b with just one change that adds the timeclose feature and no other change first before you tackle another development task. I have a methodical approach to testing which is based on isolating variables. Change only one thing at a time so you know what difference IT makes.

I suggested the multilotscalper logic as a study for you to enhance the entry timing but please don't do that before you give me one favor of a version 2b. Please. I know it's difficult to not lose patience with being methodical (at least it is for me sometimes) but it has it's rewards.

 

I sent you v2 with the timestop. Let me know if you got it.

 
Maji:
I sent you v2 with the timestop. Let me know if you got it.

Please resend, it's apparently gotten lost in cyberspace. I've been thru all my email folders and don't see it.

 

Maji,

In your current version2 you have this...'trade now' thing, which is what I suspect you are referring to as the 'standing in front of a train entrance'

if (TradeNow && totalpendingorders<1)

{

// SellLimit = NormalizeDouble(iMA(NULL,TimePeriod,MA_length,0,MODE_SMA,applied_price,1)*(1+Per/100), Digits) + MinSpread;

// BuyLimit = NormalizeDouble(iMA(NULL,TimePeriod,MA_length,0,MODE_SMA,applied_price,1)*(1-Per/100), Digits) - Spread - MinSpread;

// SellLimit = iOpen(NULL,0,0) + MinSpread;

// BuyLimit = iOpen(NULL,0,0) + Spread - MinSpread;

double PrevCl = iClose(Symbol(),0,2);

double CurrCl = iClose(Symbol(),0,1);

SellLimit = Bid;

BuyLimit = Ask;

if (!ShortTrade && !LongTrade)

{

NumOfTrades=0;

iLots = NormalizeDouble(Lots*MathPow(LotExponent,NumOfTrades),1);

if(PrevCl > CurrCl)

OpenPendingOrder(OP_SELL,iLots,SellLimit,slip,SellLimit,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,HotPink);

else

OpenPendingOrder(OP_BUY,iLots,BuyLimit,slip,BuyLimit,0,0,EAName+"-"+NumOfTrades,MagicNumber,0,Lime);

[/PHP]

you're basically going in long or short based on only the last couple of bars recognition.

what if...

you made use of some of this as to the logic of entry timing...

this is from the multilotscalper....it may not fit exactly but some of it might...at least some of the concepts...

[PHP]int start()

{

if( mm != 0 ) lotsi = NormalizeDouble( (AccountFreeMargin() / 50.0) * (risk/100.0), 2); else lotsi = Lots;

if ( lotsi < 0.01 ) lotsi = 0.01;

if( lotsi > 100 ) lotsi = 100;

OpenOrders = 0;

for( cnt = 0; cnt < OrdersTotal(); cnt++ ) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderSymbol() == Symbol() ) OpenOrders++;

}

if( PreviousOpenOrders > OpenOrders ) {//closes all orders when any order closes

for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- ) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

mode = OrderType();

if( OrderSymbol() == Symbol() ) {

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);

Sleep(20);

}

}

OpenOrders=0;

}

PreviousOpenOrders = OpenOrders;

if( OpenOrders >= MaxTrades ) ContinueOpening = False ; else ContinueOpening = True;

double ma1=iMA(NULL,PERIOD_M15,mP,0,0,5,0+mI);

double ma2=iMA(NULL,PERIOD_M15,mP,0,0,5,1+mI);

bool NewOrder=false;

if ( MathAbs(ma1-ma2)/Point > mL )

{

NewOrder = true;

}

if( OpenOrders < 1 ) MyOrderType=0;

if( OpenOrders < 1 && NewOrder == true && ma1 < ma2 ) {

LastPrice = 0;

MyOrderType=1;

}

if( OpenOrders ma2 ) {

LastPrice = 0;

MyOrderType=2;

}

LastTicket = 0;

LastType = 0;

LastClosePrice = 0;

LastLots = 0;

for( cnt = 0; cnt < OrdersTotal(); cnt++ ) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if( OrderSymbol() == Symbol() ) {

LastPrice = OrderOpenPrice();

if(OrderType()==OP_BUY) MyOrderType=2;

if(OrderType()==OP_SELL) MyOrderType=1;

LastTicket = OrderTicket();

if( OrderType() == OP_BUY ) LastType = 0;

if( OrderType() == OP_SELL ) LastType = 1;

LastClosePrice = OrderClosePrice();

LastLots = OrderLots();

}

}

if( MyOrderType == 1 && ContinueOpening ) {

if( Bid - LastPrice >= Pips * Point || OpenOrders < 1 ) {

SellPrice = Bid;

LastPrice = 0;

if( TakeProfit == 0 ) tp = 0 ; else tp = SellPrice - TakeProfit * Point;

if( StopLoss == 0 ) sl = 0 ; else sl = SellPrice + StopLoss * Point;

if( OpenOrders != 0 ) {

mylotsi = lotsi;

for(cnt =0;cnt <OpenOrders;cnt ++) {

if( MaxTrades > 12 ) mylotsi = NormalizeDouble(mylotsi * 1.5,2) ; else mylotsi = NormalizeDouble(mylotsi * 2,2);

}

}

else {

mylotsi = lotsi;

}
 

Testing results

Statement from forward testing EA started yesterday, in FXDD broker with standard setting.

Cost Averaging v4 EA:

Time frame: M1 and M5 ( but i considering dropped testing in M1 just for effeciency, because I saw the other member testing in M1 too)

Testing in 4 pair: USD/JPY, USD/CHF, EUR/USD, GBP/USD

Cost Averaging - RSI EA:

Time frame : M5

Testing in 4 pair: USD/JPY, USD/CHF, EUR/USD, GBP/USD

 

Aaragorn,

The version v1 of the pyramiding EA did use the MA envelopes like you suggested. However, those were really not a good indicator for trend exhaustions. That is why I wanted to see how random entry works.

I think indicators like RSI, CCI etc are better for pointing out trend exhaustions and that is why I came up with the RSI based system. Anyway, these are all experiments and one has to do hundreds of them, before one finds a test which is successful, just like you have been doing.

Thanks again.

Reason: