ProRealCode - Trading & Coding with ProRealTime™
Hi Juanj,
I have attached the 200.000 bars test. As it is pretty erratic, I add a MA + a stop trailing…Hope you do not mind.
Attached are the results.
//Stategy: Scalping Candles
//Market: EUR/USD
//Timeframe: 1min
//Spread: 0.8
//Author: Juan Jacobs (Jd3gjacobs@gmail.com)
Defparam cumulateorders = false
If longonmarket and close < positionprice and (barindex-tradeindex) > 720 Then //Time Stop set to 12 hours
Sell at market
EndIf
//Candle Paramaters
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
longcandle= (ratio>0.6)
Bull = 0
//Bullish Signals
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if MorningStar then
Bull = 1 //Positive
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if ThreeInsideUp then
Bull = 1 //Positive
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if ThreeOutsideUp then
Bull = 1 //Positive
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BullishEngulfing then
Bull = 1 //Positive
endif
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
Bull = 1 //Positive
endif
If (high - low) = 0 Then //Prevents potential division by zero
HiLo = 1
Else
HiLo = (high - low)
EndIf
HammerUp = min(open[1],close[1])>high[1]-(high[1]-low[1])/3
HammerUpNeg= max(open,close)<min(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bullish Hammer Negated = Bearish (used for exit signal)
HammerDown = max(open[1],close[1])<low[1]+(high[1]-low[1])/3
HammerDownNeg = min(open,close)>max(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bearish Hammer Negated = Bullish (used for exit signal)
If HammerUp and HammerUpNeg Then
//Bull = 0
ElsIf HammerDown and HammerDownNeg Then
Bull = 1
EndIf
dojibull2 = open[2]<close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibull1 = open[1]<close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
dojibear2 = open[2]>close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibear1 = open[1]>close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
hammerup2 = min(open,close)>high-(high-low)/2 //and max(open,close) < min(open[1],close[1])
hammerdown2 = max(open,close)<low+(high-low)/2 //and max(open,close)<min(open[1],close[1])//and timeok
If (dojibull2 and dojibull1) and hammerdown2 Then
Bull = 1
ElsIf (dojibear2 and dojibear1) and hammerup2 Then
//Bull = 0
EndIf
//Entry/Exit Criteria
possize = 1
ATR = AverageTrueRange[4](close)
LongMA = Average[50,2](close)
NearMA = Average[6,2](close)
RSIChk = RSI[4](close) >= 80
StoChk = Stochastic[14,3](close) >= 75
Trendma = average[2000,2]
If countofposition = 0 and Bull = 1 and close > LongMA and NearMA > LongMA and LongMA[1] > LongMA[20] and NearMA[1] > NearMA[3] and ATR[1] > ATR[2] and RSIChk and StoChk and Trendma > trendma [1]Then
Buy possize contract at market
EndIf
//trailing stop
trailingstop = 24
if not onmarket then
MAXPRICE = 0
priceexit = 0
endif
//LONG order
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close) //saving the MFE of the current trade
if MAXPRICE-tradeprice(1)>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
priceexit = MAXPRICE-trailingstop*pointsize //set the exit price at the MFE - trailing stop price level
endif
endif
//exit on trailing stop price levels
if onmarket and priceexit>0 then
EXITSHORT AT priceexit STOP
SELL AT priceexit STOP
endif
Set Target $profit 98
Set Stop $Loss 150
Very odd indeed. Maybe @Nicolas could provide us with a possibe explanation. What is odd to me is the fact that your wins is bigger than your losses with a low win rate. Whereas with the logic provided it would make sense to have results closer to those posted by me with a high win rate.
Can I suggest everyone try playing around with the Stop and Target values using WF optimisation and then posting your results?
@inertia I like the idea of using a the longer trend MA such as 2000 (the longer the better) but because of the limited bars available I refrained from using it myself. Also technically speaking a trailing stop should not be necessary with a strategy with such low target. Either you take profit asap or get stopped out.
Remember I only posted an idea for a 1 min scalping strategy, you guys are welcome to build onto that with your own ideas. Hopefully together we stumble upon something that works for everyone!
You both with IG? I am with IG and my PRT Platform is direct from IG. Attached is latest version etc.
im with IG and PRT CFD and yes exacly the same version.
We need a version recording method already! :).
I propose using the Post Link or can you think of a better way?
Code authors, modifiers and optimisers are contributing enough. So each time a new version / sub version is posted, please could somebody / anybody copy and paste the Table below and add the new version and Post Link at the bottom.
Then – by scrolling up to find latest post showing the Table – we will all know where we are up to re Versions, as follows …
Juanj V1 click #40559
Juanj V2 click #40653 modified by #40675
Inertia V2.2 click #40695
Inertia is your 1st image (left) Juanj V2 and your 2nd image (right) is Inertia V2.2?
GraHal
PS idea ‘falls at the 1st hurdle’ ? … the links aren’t clickable? Or are they for you, is it that I am still in the post screen or something weird?
Aha my fault I think (I wont bore you how / why! 😉 ) … if you click on this Link you should get back to Page 1 #40559 ?
I will correct on the next itteration of the Table.
Mmm still not working, we may have to use the full link address as below?? Nicolas any ideas why this is not working … the link is copied from Page 1 of this Thread but clicking on the link (or even right click new Tab) does not take me back to Page 1??
We may have use the full Link Address??
https://www.prorealcode.com/topic/1-min-trading-strategy/#post-40559
Hi Grahal,
Thank you for organising my mess ;)) … I will follow whatever the ordering method will be.
I am not the king of the WF but attached are couple of tests made today from the post #40695.
Hope it does make sense.
post #40695.
The optimised set up are in progress…Takes hours…I’ll get back to you ASAP.
Thx.
Hi Juanj,
Thank you for your kind message. You did a great job !
Well noted for the scalping vs surfing the trend…
Once the WF done, I will play around with your original idea.
I may reduce the risk/reward…to 40/10 (0.25).
Keep in touch.
Thanks
I just realised that running this strategy on a 1min time frame vs. Something like a 5min time frame is actually less effective due to the fact that trends and candle stick patterns are actually more pronounced in the higher time frames. Also the profit target level is time frame independent and thus you still get the benefit of immediate position closing if the target profit level is hit.
Ok guys. Here is a version for the Dax. I set time filter for it works only during time with low spread ( 1 pts).
I optimized only SL and TP with WF on 200k units. It’s just version 1 (But it starts to become sexy ; ) ) . I’ll still work on it but I optimize only with WF so it takes time.
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
noEntryBeforeTime = 090000
timeEnterBefore = time >= noEntryBeforeTime
noEntryAfterTime = 173000
timeEnterAfter = time < noEntryAfterTime
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
If longonmarket and close < positionprice and (barindex-tradeindex) > 650 Then
Sell at market
ElsIf shortonmarket and close > positionprice and (barindex-tradeindex) > 60 then
Exitshort at market
EndIf
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
Bull = 0
Bear = 0
//Bullish Signals
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if MorningStar then
Bull = 1 //Positive
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if PiercingLine then
Bull = 1 //None
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if AbandonedBabyBottom then
Bull = 1 //None
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if ThreeInsideUp then
Bull = 1 //Positive
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if ThreeOutsideUp then
Bull = 1 //Positive
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if ThreeWhiteSoldiers then
//Bull = 1 //Increase Drawdown
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if ConcealingBabySwallow then
Bull = 1 //None
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if BullishHarami then
//Bull = 1 //Negative Impact
endif
HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if HomingPigeon then
Bull = 1 //None
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BullishEngulfing then
Bull = 1 //Positive
endif
LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if LastEngulfingBottom then
Bull = 1 //None
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if DragonflyDojiBottom then
Bull = 1 //None
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if GravestoneDojiBottom then
Bull = 1 //None
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if DojiStarBottom then
Bull = 1 //None
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if BullishHaramiCross then
Bull = 1 //None
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if ThreeStarsInTheSouth then
Bull = 1 //None
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if BullishBreakaway then
Bull = 1 //None
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if Hammer then
Bull = 1 //None
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if InvertedHammer then
Bull = 1 //None
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if RisingThreeMethods then
Bull = 1 //None
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if BullishThreeLineStrike then
Bull = 1 //None
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if BullishMatHold then
Bull = 1 //None
endif
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
Bull = 1 //Positive
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
Bull = 1 //None
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if BullishCounterAttack then
Bull = 1 //None
endif
BullishKicking=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop=0 AND shadowbottom=0)
if BullishKicking then
Bull = 1 //None
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if EveningStar then
Bear = 1
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if DarkCloudCover then
Bear = 1
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if AbandonedBabyTop then
Bear = 1
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if ThreeInsideDown then
Bear = 1
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if ThreeOutsideDown then
Bear = 1
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if ThreeBlackCrows then
Bear = 1
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if UpsideGapTwoCrows then
Bear = 1
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if BearishHarami then
Bear = 1
endif
DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if DescendingHawk then
Bear = 1
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BearishEngulfing then
Bear = 1
endif
LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if LastEngulfingTop then
Bear = 1
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if DragonflyDojiTop then
Bear = 1
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if GravestoneDojiTop then
Bear = 1
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if DojiStarTop then
Bear = 1
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if BearishHaramiCross then
Bear = 1
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if AdvanceBlock then
Bear = 1
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TwoCrows then
Bear = 1
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if BearishBreakaway then
Bear = 1
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if ShootingStar then
Bear = 1
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if HangingMan then
Bear = 1
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if FallingThreeMethods then
Bear = 1
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if BearishThreeLineStrike then
Bear = 1
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if BearishMatHold then
Bear = 1
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
Bear = 1
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
Bear = 1
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if BearishCounterAttack then
Bear = 1
endif
BearishKicking=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowtop=0 AND shadowbottom=0)
if BearishKicking then
Bear = 1
endif
//Entry/Exit Criteria
possize = 1
NearMA = Average[7,2](close)
If countofposition = 0 and Bull = 1 and NearMA[1] > NearMA[3] and RSI[2](close) > 75 and NearMA > Average[150,2](close) and timeEnterBefore and timeEnterAfter and not daysForbiddenEntry Then
//If shortonmarket Then
//Exitshort at market
//EndIf
Buy possize contract at market
EndIf
If countofposition = 0 and Bear = 1 and NearMA[1] < NearMA[3] and RSI[2](close) < 25 and NearMA < Average[150,2](close) Then
//If longonmarket Then
//Sell at market
//EndIf
//Sellshort possize contract at market
EndIf
Set Target pProfit 10
Set Stop pLoss 50
(I went to the toilet after posting, so here it is again (Mods please delete above post) …
Hey looks good TheAccountant! I felt (like you) that we need to optimise V1 over 200,000 bars so we have a baseline ( I can only do 100,000).
You say … I optimize only with WF … so do you use 1 IN Sample and 1 OUT OF Sample period or how many periods do you use?
Also, if you WF Optimise over many IN / OUT periods … how do you choose which variable value to go forward / Live / Demo trading with?
When I do it, I find myself thinking … is the most recent WF period Typical or Not Typical of the Instrument tested. If Not Typical then I am reluctant to go forward with optimised values from the most recent WF period to use in Live trading?
Do you have similar quandries?
Thanks
GraHal
Hi Theaccountant,
Attached are the result from my side with your strategy…What did I do wrong ? Strange…
The signal is quite powerful.
Hereafter is the best (for the time being) I have...
Thx JuanJ.
//Stategy: Scalping Candles
//Market: EUR/USD
//Timeframe: 1min
//Spread: 0.8
//Author: Juan Jacobs (Jd3gjacobs@gmail.com)
Defparam cumulateorders = False
If longonmarket and close < positionprice and (barindex-tradeindex) > 720 Then //Time Stop set to 12 hours
Sell at market
EndIf
//Candle Paramaters
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
longcandle= (ratio>0.6)
Bull = 0
//Bullish Signals
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if MorningStar then
Bull = 1 //Positive
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if ThreeInsideUp then
Bull = 1 //Positive
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if ThreeOutsideUp then
Bull = 1 //Positive
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if BullishEngulfing then
Bull = 1 //Positive
endif
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
Bull = 1 //Positive
endif
If (high - low) = 0 Then //Prevents potential division by zero
HiLo = 1
Else
HiLo = (high - low)
EndIf
HammerUp = min(open[1],close[1])>high[1]-(high[1]-low[1])/3
HammerUpNeg= max(open,close)<min(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bullish Hammer Negated = Bearish (used for exit signal)
HammerDown = max(open[1],close[1])<low[1]+(high[1]-low[1])/3
HammerDownNeg = min(open,close)>max(open[1],close[1]) and abs(open-close)/HiLo>0.5 //Bearish Hammer Negated = Bullish (used for exit signal)
If HammerUp and HammerUpNeg Then
//Bull = 0
ElsIf HammerDown and HammerDownNeg Then
Bull = 1
EndIf
dojibull2 = open[2]<close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibull1 = open[1]<close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
dojibear2 = open[2]>close[2] and abs(open[2]-close[2])/(high[2]-low[2])<0.6
dojibear1 = open[1]>close[1] and abs(open[1]-close[1])/(high[1]-low[1])<0.6
hammerup2 = min(open,close)>high-(high-low)/2 //and max(open,close) < min(open[1],close[1])
hammerdown2 = max(open,close)<low+(high-low)/2 //and max(open,close)<min(open[1],close[1])//and timeok
If (dojibull2 and dojibull1) and hammerdown2 Then
Bull = 1
ElsIf (dojibear2 and dojibear1) and hammerup2 Then
//Bull = 0
EndIf
//Entry/Exit Criteria
possize = 1
ATR = AverageTrueRange[4](close)
LongMA = Average[periodelongma,2](close)
NearMA = Average[periodenearma,2](close)
RSIChk = RSI[periodersi](close) >= 80
StoChk = Stochastic[14,3](close) >= 75
Trendma = average[periode,2]
If countofposition = 0 and Bull = 1 and close > LongMA and NearMA > LongMA and LongMA[1] > LongMA[20] and NearMA[1] > NearMA[3] and ATR[1] > ATR[2] and RSIChk and StoChk and Trendma > trendma [1]Then
Buy possize contract at market
EndIf
Set Target $profit 5
Set Stop $Loss 40
1 Min Trading Strategy
This topic contains 219 replies,
has 29 voices, and was last updated by Leo
8 years, 2 months ago.
| Forum: | ProOrder: Automated Strategies & Backtesting |
| Language: | English |
| Started: | 07/13/2017 |
| Status: | Active |
| Attachments: | 65 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.