Expert Advisors: Jolly Roger EA Version

 

Jolly Roger EA Version:

Inspired by Pirat's Expert Advisor submitted to the Automated Trading Championship 2011.

Author: Андрей Корнишкин

 

Dear all,

Indeed it seems to be an interresting strategy, just because it is extremelly simple, and I guess our first rule in building a strategy should be : KEEP IT SIMPLE!

But, how can you explain that it is a winning strategy on Championship 2011, 2010 and 2008 and even on full 2011, but a loosing one on 2012 :

Performance : same settings 01.01.2011 - 20.07.2011

 

Performances : same settings 01.01.2012 - today

 

Performances : same settings 01.01.2010 - 20.07.2010 

 

And how optimization results (RSIPeriod and RSILevel) can give such gap : factor 1:10 (profits and number of trades)

 

Optimization process - 2011 RSIPeriod & RSILevel

 

Optimization process - 2012 RSIPeriod & RSILevel

 

 Probably because of volatility. The less volatility is the less profits are and need to run optimization on SL and TP ???

 

 EURUSD 2010 versus 2011 versus 2012 

 

 

 

 

 

 

 

 

when you run an optimization of only two parameters RSIPeriod and RSILevel

 

jolly


does anyone know why the order is sent out in thirds???? wouldn't it be more efficient to execute one trade operation?

 
With multiple positions instead of one is hoping to catch the volatility more efficient.
 
theDUDE:


does anyone know why the order is sent out in thirds???? wouldn't it be more efficient to execute one trade operation?

Most probably is for the championship max lot requirement. Money Management.
 
theDUDE:

does anyone know why the order is sent out in thirds???? wouldn't it be more efficient to execute one trade operation?

Hi theDUDE,

I think that's the habit from MT4 to avoid margin call. When margin call occur, broker will close trader position starting from the biggest losing one, until trader account is above margin call level. By dividing position like that (by 3 or 7 or 23), trader will still get its position closed but not all of them because his/her account may already above margin call level when some of his/her position get closed. So the trader still get some of position closed and some still open.

I think that's only work on MT4 which is ticket based trading.

 

 

Hi@all,

i test the ea at the moment but i don´t fund any good settings...

Could someone post settings who work well? 

At the Moment i test 410000 combinations but the result takes some time... ;)
 

Hi

I like the concept of this EA and it works very well. But it only seems to be working on USDEUR.

I tried it on other currencies and i get the [invalid Price] error quite a lot. Anybody got any explenations for that? Or what do i have to change to make it work on other currencies?

@Nixon007

some very conservative settings work fine. For me Level 20 and period 21 are nice (Tp 150, sl 40). Trades are seldom and profits arent that high, but at least its steady and without much drawdown (as my priorities are)

 

I am not fully understood why do we have to create a PENDING at first, then modify the order later? why do not we create a "DEAL" order immediately?

 

even we wanna create a pending order, shall we create an BUY order with   request.price=NormalizeDouble(Ask-StopLevel*_Point,_Digits); rather than PLUS the  StopLevel*_Point

 

any clarification will be much appreciated! 

 

Hi,


I would like to test this EA- but, I 'm getting the warning bellow - 

Warning  - cannot be used for static allocated array -line 53 .


and other one related to - "return valur of Ordersend should be checked " where I resolved adding if --

 if(OrderSend(request,result)){};


Doe anyone get the same erro ? or would be able to guide in how to solve this warning ?

Thanks in advance

 

This script identifies Elliott waves and projects Fibonacci levels.

Initialize the variables. int lotSize = 1; Lot size. stopLoss int = 100; stoploss. int takeProfit = 200; Presumed profit.

Make sure the market is open. if (MarketInfo("EURUSD", MODE_BID) != 0) {

Get the close price of the previous bar. closing doublePrice = iClose (SymbolInfoPeriod(Symbol()));

Get Fibonacci levels. double fibonacciLevels[] = {0.236, 0.382, 0.618, 0.764};

Identify the current wave. int waveNumber = WaveCount(closePrice, fibonacciLevels);

If the current wave is an impulse wave, open a buy order. if (waveNumber == 1 || waveNumber == 3) { OrderSend(Symbol(), OP_BUY, lotSize, stopLoss, takeProfit, 0, 0, 0, 0, 0, <>); }

If the current wave is a correction wave, open a sell order. if (waveNumber == 2 || waveNumber == 4) { OrderSend(Symbol(), OP_SELL, lotSize, stopLoss, takeProfit, 0, 0, 0, 0, 0, <>); } }

Function to count Elliott waves. int WaveCount(double closePrice, double fibonacciLevels[]) {

Initialize the waveNumber variable. int waveNumber = 0;

Repeat the loop until the current wave is an impulse wave. while (wavenumber < 5) {

// Get the current Fibonacci level. double fibonacciLevel = fibonacciLevels[waveNumber]; // If the close price of the current bar is above the current Fibonacci level, the current wave is an impulse wave. if (closePrice > fibonacciLevel) { waveNumber++; } else { break; }

}

Return the current wave number. return waveNumber; }



Reason: