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.


  • Topics

  • Posts

    • I'm pretty sure that a Russian resident would say that recessions are real today. Their prime interest rate is 21%, their corporate military contractors are threatening to file bankruptcy, and sticks of butter are kept under lock and key in their grocery stores because shoplifters are stealing it in bulk so they can resell it on the black market. A downturn is cyclical until it turns into a collapse. I really don't think anyone will be buying-into this mess.😬
    • Well said. This principle is highly analogous to trading. Any human can easily click buy or sell when they "feel" that price is about to go up or down. The problem with feeling, commonly referred to as "instinctive" trading, is that it cannot be quantified. And because it cannot be quantified, it cannot be empirically tested. Instinctive trading has the lowest barrier to entry and therefore returns the lowest reward. As this is true for most things in life, this comes as no surprise. Unfortunately, the lowest barrier to entry is attractive to new traders for obvious reasons. This actually applied to me decades ago.🤭   It's only human nature to seek the highest amount of reward in exchange for the lowest amount of work. In fact, I often say that there is massive gray area between efficiency and laziness. Fortunately, losing for a living inspired me to investigate the work of Wall Street quants who refer to us as "fishfood" or "cannonfodder." Although I knew that we as retail traders cannot exploit execution rebates or queues like quants do, I learned that we can engage in automated scalp, swing, and trend trading. The thermonuclear caveat here, is that I had no idea how to write code (or program) trading algorithms. So I gravitated toward interface-based algorithm builders that required no coding knowledge (see human nature, aforementioned). In retrospect, I should never have traded code written by builder software because it's buggy and inefficient. However, my paid subscription to the builder software allowed me to view the underlying source code of the generated trading algo--which was written in MQL language. Due to a lack of customization in the builder software, I inevitably found myself editing the code. This led me to coding research which, in turn, led me to abandoning the builder software and coding custom algo's from scratch. Fast forward to the present, I can now code several trading strategies per day across 2 different platforms. Considering how inefficient manual backtesting is, coding is a huge advantage. When a new trading concept hits me, I can write the algo, backtest it, and optimize it within an hour or so--across multiple exchanges and symbols, and cycle through hundreds of different settings for each input. And then I get pages upon pages of performance metrics with the best settings pre-highlighted. Having said all of this, I am by no means an advanced programmer. IMHO, advanced programmers write API gateways, construct their own custom trading platforms, use high end computers with field programmable gateway array chips, and set up shop in close proximity to the exchanges. In any event, a considerable amount of work is required just to get toward the top of the "fishfood"/"cannonfodder" pool. Another advantage of coding is that it forces me to write trade entry and exit conditions (triggers) in black & white, thereby causing me to think microscopically about my precise trade trigger conditions. For example, I have to decide whether the algo should track the slope, angle, and level of each bar price and indicator to be used. Typing a hard number like 50 degrees of angle into code is a lot different than merely looking at a chart myself and saying, that's close enough.  Code doesn't acknowledge "maybe" nor "feelings." Either the math (code) works (is profitable) or doesn't work (is a loser). It doesn't get angry, sad, nor overly optimistic. And it can trade virtually 24 hours per day, 5 days per week. If you learn to code, you'll eventually reach a point where coding an algo that trades as you intended provides its own sense of accomplishment. Soon after, making money in the market merely becomes a side effect of your new job--coding. This is how I compete, at least for now, in this wide world of trading. I highly recommend it.  
    • VRA Vera Bradley stock watch, pull back to 5.08 support area at https://stockconsultant.com/?VRA
    • MU Micron stock watch, pull back to 102.83 gap support area with high trade quality at https://stockconsultant.com/?MU
    • ACLX Arcellx stock watch, trending at 84.6 support area with bullish indicators at https://stockconsultant.com/?ACLX
×
×
  • Create New...

Important Information

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