Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

GRANDEUR

Intraday Orders (EL)

Recommended Posts

Please, help me to code the following simple algorithm.

A new day begins. Then I want that a highest high (HH) of the day to be calculated. If a HH is created then I want to place my sell short stop next bar at X points below HH. The stop must be active till the end of the day until it's executed. An exit is at the end of the day. If the stop is not executed that day then the same condition but with new parameters takes place next day.

Here is a picture of what I'm telling about:

http://file.qip.ru/file/129903846/98832aca/Picture3.html

 

I was able to write a code that sells short only on the next bar after a HH is formed and the condition is fulfilled, but I want that my stop be active until the end of the day.

Edited by GRANDEUR

Share this post


Link to post
Share on other sites
Come on guys, there must be someone who knows the answer on my question!

 

write out your thoughts step by step,

line by line.

 

write them out one action at a time,

one action per line...

one action per line...

one action per line...

one action per line...

 

eventually you will get there.

Share this post


Link to post
Share on other sites

1. 30-min timeframe.

2. A new day begins (today).

3. If high of a bar > all previous highs of today so far then that high is 'highesthigh' (HH).

4. HH is calculated each bar during the day.

5. We place a sell short stop order at (HH - 50 points).

6. That stop must be active till the end of the day.

7. If the order is not executed next bar and a new HH is formed then we cancel the order and place a new sell short order with the parameters as in (5).

8. If the order is not executed till the end of the day then we cancel the order.

9. If the order is executed then we buy to cover at the end of the day.

10. Loop.

Share this post


Link to post
Share on other sites
....

 

I was able to write a code that sells short only on the next bar after a HH is formed and the condition is fulfilled, but I want that my stop be active until the end of the day.

 

if you don't post your work-in-progress,

are you expecting someone to do all the work for you?

Share this post


Link to post
Share on other sites

Sorry, I got it. I just edited #3 of the list above:

3.If high of a bar > all previous highs of today so far AND IT IS > (TODAY'S OPEN+100) then that high is 'highesthigh' (HH).

 

Here is what I wrote so far:

if time=0930 then value1=open;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100) then value2=h;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100)

then sell short next bar at (value2-50) stop;

if time>1630 then buy to cover next bar at market;

 

When I apply this code, trades are executed not at (HH-50) during the day but at (high [of the bar prior to entry]-50).

Share this post


Link to post
Share on other sites

some house keeping first:

 

1. avoid using generic variables... ie value1, value2, etc.,

always create a meaningful variable names,

because you will come back to the code 3 months from now

and you have to scratch your head wondering what value101 is about.

 

you have mention HH, why are you not using it in your code?

 

2. tag your codes, so that it is easy for everybody to read

 

tagged codes look like this:

 

// This is tagged code

if time=0930 then value1=open;
if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100) then value2=h;
if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100)
then sell short next bar at (value2-50) stop;
if time>1630 then buy to cover next bar at market;

Edited by Tams

Share this post


Link to post
Share on other sites
1. 30-min timeframe.

2. A new day begins (today).

3. If high of a bar > all previous highs of today so far then that high is 'highesthigh' (HH).

4. HH is calculated each bar during the day.

5. We place a sell short stop order at (HH - 50 points).

6. That stop must be active till the end of the day.

7. If the order is not executed next bar and a new HH is formed then we cancel the order and place a new sell short order with the parameters as in (5).

8. If the order is not executed till the end of the day then we cancel the order.

9. If the order is executed then we buy to cover at the end of the day.

10. Loop.

 

Sorry, I got it. I just edited #3 of the list above:

3.If high of a bar > all previous highs of today so far AND IT IS > (TODAY'S OPEN+100) then that high is 'highesthigh' (HH).

 

Here is what I wrote so far:

if time=0930 then value1=open;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100) then value2=h;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100)

then sell short next bar at (value2-50) stop;

if time>1630 then buy to cover next bar at market;

 

When I apply this code, trades are executed not at (HH-50) during the day but at (high [of the bar prior to entry]-50).

 

approach to coding...

 

your logic description (1st quote) should mirror the code (2nd quote),

so that you can go through the required tasks line-by-line.

Share this post


Link to post
Share on other sites
Sorry, I got it. I just edited #3 of the list above:

3.If high of a bar > all previous highs of today so far AND IT IS > (TODAY'S OPEN+100) then that high is 'highesthigh' (HH).

 

Here is what I wrote so far:

if time=0930 then value1=open;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100) then value2=h;

if entriestoday(date)<1 and time>0930 and time<1630 and h>(value1+100)

then sell short next bar at (value2-50) stop;

if time>1630 then buy to cover next bar at market;

 

When I apply this code, trades are executed not at (HH-50) during the day but at (high [of the bar prior to entry]-50).

 

more housekeeping before we get into the nitty-gritty..

 

organize your thoughts/logics,

separate the "global" requirement from the detail logics

so that the code does not look crowded.

i.e. make it easy to read and debug.

 

e.g.

you can separate this requirement from the detail logics

time>0930 and time<1630

 

var:
trading.hour(false);

trading.hour = time>0930 and time<1630;

if trading.hour = true then
begin
    {--- write your codes here---}
end;

Share this post


Link to post
Share on other sites

write out your thoughts step by step,

 

Xcellent TAMS (as always) and so patient...

 

It's good 2 follow your logic process 2 built an algorytm

 

After it's a question of reading the EL manual, ain't it ?! ;)

 

rgds

Share this post


Link to post
Share on other sites
write out your thoughts step by step,

 

Xcellent TAMS (as always) and so patient...

 

It's good 2 follow your logic process 2 built an algorytm

 

After it's a question of reading the EL manual, ain't it ?! ;)

 

rgds

 

Yes... reading the manual is a must.

 

EasyLanguage has been around for ~20 years;

their manuals and tutorials are the result of years of refinement,

no other trading programming language can rival its

breadth and depth in coverage and code samples.

 

I would dare to say, practically anything that you can imagine, has been done.

It is only a matter of time to search out the fragment of code that is floating around in the ether space.

Share this post


Link to post
Share on other sites

I am also learning easy language since few days, so lets learn together

1) I think you need to write the function for new high for the day, as there is only default indicator( Not sure about TS, my platform is MC), not default function..function will be like this

variables: var0( 0 ) ; 

if BarType < 2 then begin                         
if Date <> Date[1] then
	var0 = High 
else if High > var0 then 

	var0 = High ;

	NEWHD=var0;
	end  ;

 

2)write most of the inputs when u want to use numbers within code.

So your 50 point below new high of the day will look like this

 

Inputs: filter(50),opentime(0930),closetime(1630);
vars:trigger(0),newhdShort(false) ;
trigger = newhd[1] - filter ; 
If marketposition = 0 then
begin
newhdShort =  (time > opentime and time < closetime) and high <= newhd[1] - filter ;
If newhdshort then sell short next bar at trigger stop ; 
setexitonclose ; 
end;

 

Thats the rough code i have posted, you can improvise on that as per your specific need.

Share this post


Link to post
Share on other sites

Alex, thank you for you reply!

Your approach appeals to me. I am also using MultiCharts but it fails to compile the function you wrote. The error is 'assignment is allowed only for variables or array elements' and 'NEWHD' is highlighted. Why is that? I've never created any functions, only signals. Maybe there is a mistake there.

And as for variables assignment under 'inputs', I know about that. I just wanted to write the code as small as possible not loading people with lots of words.

Share this post


Link to post
Share on other sites
Alex, thank you for you reply!

Your approach appeals to me. I am also using MultiCharts but it fails to compile the function you wrote. The error is 'assignment is allowed only for variables or array elements' and 'NEWHD' is highlighted. Why is that? I've never created any functions, only signals. Maybe there is a mistake there.

And as for variables assignment under 'inputs', I know about that. I just wanted to write the code as small as possible not loading people with lots of words.

 

in MC make a new function > give a name NEWHD > now copy pest my above posted function. It should work/ compile. Trick is giving name to the function. Later make new signal, give any name, and copy pest second code. Let me know if have any further issues.

Share this post


Link to post
Share on other sites

I am new to making functions and named the function you posted not 'NEWHD'.

Although, the code doen't work OK so far (there comes only one trade for many mounths), I hope my tuning will help. Alex, thank you so much!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.