ending a program-what to type
Forums › ProRealTime English forum › ProOrder support › ending a program-what to type
- This topic has 13 replies, 5 voices, and was last updated 7 years ago by
Nobody.
-
-
12/06/2017 at 5:32 PM #54906
Hi
Ive written a program but when i try to backtest it i get a message “syntax error line 35 character 1 please complete the syntax of this line ” but there’s nothing in line 35. what should I type there ?? The last line is the stoploss value. Please advise12/06/2017 at 6:12 PM #54908Place your cursor after the last character of your strategy, then keep the DEL key pressed for a while, just in case there’s some garbage you can’t see!
Another way is to copy the whole strategy, from the first character to the last one, then cancel the strategy, then again paste it in a new strategy.
I don’t know if either works but it’s worth trying!
Roberto
12/06/2017 at 8:55 PM #54917Thanks Roberto.
I’ve done that but it still comes back with the same thing and there’s nothing on the line.
The previous line was the stoploss which was accepted by the syntax indicator on the left.
What is the last thing you guys write into your programs ??
As you can guess I am a complete newcomer to programming, I find it very interesting but
I just don’t understand this last bit. Also what are BBCodes ??Regards Paul
12/06/2017 at 10:21 PM #5492712/07/2017 at 12:51 AM #54934You should easily spot a missing ENDIF because your last lines should be indented, if this is the case.
12/07/2017 at 10:30 AM #54951Thanks Roberto and Vonasi that’s what I have done, so now it backtests but the result is nil over a year so it looks like I’ve screwed up somewhere. Wow, this is quite a learning curve. This is my first attempt (fail) can you see what’s wrong with it please
DEFPARAM CumulateOrders = False
DEFPARAM FlatBefore = 065000
DEFPARAM FlatAfter= 160000
// Conditions to enter long positions
sto=Stochastic[15,3](close)
if sto=20 then
ma=Average[50](close)
a=ma>ma[10]
if a then
BUY 1 CONTRACTS AT MARKET
ENDIF
ENDIF// Conditions to exit long positions
ema=ExponentialAverage[21](close)
if close CROSSES UNDER ema then
SELL AT MARKET
ENDIF// Conditions to enter short positions
if sto=80 then
a=Average[50](close)
if a>average[10](close) then
SELLSHORT 1 CONTRACTS AT MARKET
ENDIF
ENDIF// Conditions to exit short positions
if a>average[10](close) then
if sto=20 then
EXITSHORT AT MARKET
ENDIF
ENDIF
SET STOP $LOSS1012/07/2017 at 10:38 AM #54952Your “if sto=20” and “if sto=80” will almost never happen, most of the time it will cross over or under those levels without ever being exactly equal to 20 or 80, so what’s inside your if statement wouldn’t be visited.
>> For clarity of messages on ProRealCode’s forums, please use the “<>” (insert PRT code) button in the message editor toolbar to separate the text of the code part! Thank you! <<
12/07/2017 at 8:25 PM #55011Thank you Nooywan, I have changed the symbol but it now seems to backtest but there is no result, only a flat line, and that’s over a year so I must still be doing something dire.
Is there a strict protocol for constructing a procedure ?
This PRT code doesnt seem to copy/paste too accurately, i will repeat in normal code if you wish.12345678910111213141516171819202122232425262728293031323334DEFPARAM CumulateOrders = FalseDEFPARAM FlatBefore = 065000DEFPARAM FlatAfter= 160000// Conditions to enter long positionssto=Stochastic[15,3](close)if sto<=20 thenma=Average[50](close)a=ma>ma[10]if a thenBUY 1 CONTRACTS AT MARKETENDIFENDIF// Conditions to exit long positionsema=ExponentialAverage[21](close)if close CROSSES UNDER ema thenSELL AT MARKETENDIF// Conditions to enter short positionsif sto>=80 thena=Average[50](close)if a>average[10](close) thenSELLSHORT 1 CONTRACTS AT MARKETENDIFENDIF// Conditions to exit short positionsif a>average[10](close) thenif sto<=20 thenEXITSHORT AT MARKETENDIFENDIFSET STOP $LOSS1012/07/2017 at 11:34 PM #55017I tested it on Dax and EurUsd 1,2,5,10,15,30 minutes,1,2,4 hours and it works. It is a losing strategy, but it works!
12/08/2017 at 5:45 PM #55171I have to modify it but ATT i’m having problems with the backtest. First it displayed just a flat line, but now every time I click on a share it goes through the backtest routine and has changed the graph from candlestick to line chart. It does this with every chart. How do I get it back to candlestick display and turn off this backtest routine. It must be here somewhere but I can’t find it.
12/13/2017 at 8:59 PM #55606Hi
When writing code , does it have to be presented in a certain sequence, could you please check this piece of a simple program and tell me what is wrong with it ?123456789101112131415161718192021222324252627DEFPARAM CumulateOrders = FalseDEFPARAM FlatBefore = 083000DEFPARAM FlatAfter= 200000// Conditions to enter long positionssto=Stochastic[15,3](close)ma=Average[50](close)if sto<=20 thena=ma>=ma[5]if a thenbuy 2 contracts at marketif sto>=78 thensell at marketSET STOP $LOSS15ma=Average[50](close)if sto>= 78 thena=ma<=ma[5]if a thenbuy 1 contracts at marketif sto<=20 thensell at marketSET STOP $LOSS15endifendifendifENDIFENDIFendifI ran it against todays(13th) GBPCAD using 1000 units and 2 min timeframe.
Visibly I see strikes at 1138, out at 1156
1258, out at 1316, 1350 (loss), 1557 out at 1612, 1821 out at 1850
The backtest showed 1 strike which was not correct so am I writing the code in the wrong order? Please advise.12/13/2017 at 9:41 PM #55607123456789101112131415161718192021222324252627282930313233343536373839404142434445// Definition of code parametersDEFPARAM CumulateOrders = FalseDEFPARAM FlatBefore = 083000DEFPARAM FlatAfter= 200000// Conditions to enter long positionsindicator1 = Stochastic[15,3](close)c1 = (indicator1 <= 20)indicator2 = Average[50](close)indicator3 = Average[5](close)c2 = (indicator2 >= indicator3)IF c1 AND c2 THENBUY 2 CONTRACT AT MARKETENDIF// Conditions to exit long positionsindicator4 = Stochastic[15,3](close)c3 = (indicator4 >= 78)IF c3 THENSELL AT MARKETENDIF// Conditions to enter short positionsindicator5 = Stochastic[15,3](close)c4 = (indicator5 >= 78)indicator6 = Average[50](close)indicator7 = Average[5](close)c5 = (indicator6 <= indicator7)IF c4 AND c5 THENSELLSHORT 1 CONTRACT AT MARKETENDIF// Conditions to exit short positionsindicator8 = Stochastic[15,3](close)c6 = (indicator8 <= 20)IF c6 THENEXITSHORT AT MARKETENDIF// Stops and targetsSET STOP $LOSS 15try this , i assume the second buy is a short given the parameters
12/13/2017 at 10:22 PM #55610You should simply use
1GRAPH stoand you will discover that, today, sto is never <=20 so the outer block (and inner ones as well, of course) IF…ENDIF is never true.
12/13/2017 at 10:28 PM #55614 -
AuthorPosts
Find exclusive trading pro-tools on