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.

nab999

Help Needed For Indicator

Recommended Posts

Hi,

 

I am running a show me on TS 8.6.

 

The idea is that it will plot a show me when both the fast and slow averages are pointing up, when on the previous bar, either the fast or slow average were not pointing up.

 

The problem I am having is that once a show me is plotted, further plots are made, which I do not want, I only want the plot when both averages are pointing up, when on the previous bar either one or the other were not pointing up, then i do not want any further plots until at some time in the future, the obove occurs again.

 

I attach a chart, with arrows showing where the plots should be, as the show me, which as you can see in not plotting correctly.

 

Below is the code that I have.

 

Many thanks for all your continued help guys.

 

inputs:

fastLength(5),

slowLength(10),

BEx(0.5);

 

Var:

longTrigger(false),

longTriggerValue(0),

fastValue(0),

slowValue(0);

 

Value1=LOW ;

 

fastValue = Average( Close, fastLength );

slowValue = Average( Close, slowLength );

 

if fastvalue<=fastvalue[1] or slowValue <= slowValue[1] then

longTrigger = false;

 

 

If FastValue>FastValue[1] and slowvalue>slowvalue[1]

and close>open then longTrigger = true;

 

longTriggerValue = High +( range * BEx );

 

if longTrigger=true then Plot1(Value1);

If longtrigger=true then Plot2(LongTriggerValue);

Screenshot.thumb.gif.e881eaff3ed846d5b651525946487939.gif

Share this post


Link to post
Share on other sites

if you wrap your indicator in Code Tag (the # icon at the top of the reply window),

you codes will be enclosed in a easy-to-read code window.

Edited by Tams

Share this post


Link to post
Share on other sites
...

The idea is that it will plot a show me when both the fast and slow averages are pointing up, when on the previous bar, either the fast or slow average were not pointing up.

....

 

 

my suggestion:

 

Write out your ideas:

ONE thought at a time,

ONE logic at a time,

ONE action at a time,

ONE LINE PER PHRASE,

ONE phrase per sentence

ONE LINE per sentence...

 

if you have more than one thought in the same sentence, you are cooked.

if you have more than one phrase in the same line, you are cooked.

 

write it as if you were writing the code,

write it as if the machine is reading it... one line at a time, one action at a time.

 

if you can do that... you will see your coding solution easily.

Edited by Tams

Share this post


Link to post
Share on other sites

Hi Tams, sorry about the code box, I hit the quote box my mistake.

 

I have put it down as you suggested, i.e. the code that almost works is shown....

 

The problem I have is that it is not producing the results that I want, as explained in my initial post. I am not a very good easy language coder at all, and can not get any further with it myself, hence my request for some help.

Share this post


Link to post
Share on other sites
...

I have put it down as you suggested....

 

 

but I don't see what you wrote...

can't help you if I don't see it.

 

writing out the thoughts line by line is a way to

line up your logic

 

computers are very stupid,

it can only do what you tell it to do.

 

your instruction has to be direct and complete

for the computer to do what you want to do

 

if the computer is not doing what you want to do,

there is only one explanation:

your logic is incomplete

 

i.e. you haven't got all the bases covered.

 

 

 

p.s. it is good that you have posted a chart,

you need to write some notes on the chart to

point out what is wrong with the picture.

You can also draw some lines and arrows and notes

to illustrate what you have in mind.

Edited by Tams

Share this post


Link to post
Share on other sites

Set longtrigger=false right at the start of your code or

 

where you have the if statement add else false.

 

If FastValue>FastValue[1] and slowvalue>slowvalue[1]

and close>open then longTrigger = true

else

longtrigger = false;

Share this post


Link to post
Share on other sites
The idea is that it will plot a show me when both the fast and slow averages are pointing up, when on the previous bar, either the fast or slow average were not pointing up.

 

Does this mean you want a slope calculation on the plots? So you want to know when some point A followed by point B is negative in slope and then point C is positive in slope for two separate averages?

 

As an example data set:

 

------------ Avg1 -------- Avg2

Time1 -- 12 ---------- 10

Time2 -- 10 ---------- 9

Time3 -- 11 ---------- 10

 

In the above, each average moves down from Time1 to Time2 then up from Time2 to Time3 but they do not cross in this example data set here.

 

I do this with crossing action, but not for slope change ... so curious exactly what you're asking, just to be clear :-)

Share this post


Link to post
Share on other sites

Hi MrTraderGuy

 

Yes, what I am looking for is a Bar A followed by Bar B Formation....

 

At Bar A either the fast or the slow average have a slope that is either down or level.

 

At Bar B the slope of both the fast and slow averages are up, so on this bar the show me plot would be made.

 

No further plots are made until a new bar A followed by a new bar B formation is made.

 

Many thanks.

Share this post


Link to post
Share on other sites

Did my suggestion not work? It should have done if the question was correctly expressed in your original post.

 

Once you trigger true nothing in your code ever resets back to false. Either always reset to false at the start of your code -or- have an else clause where you test your conditions. The former will just show the bar that transitions from false to true the latter will show all bars that meet the condition. Simple logic error.

 

Problem solved as far as I can see.

Share this post


Link to post
Share on other sites

At Bar A either the fast or the slow average have a slope that is either down or level.

 

At Bar B the slope of both the fast and slow averages are up, so on this bar the show me plot would be made.

 

No further plots are made until a new bar A followed by a new bar B formation is made.

 

A) OK, so the setup (assuming TS 8.6) is a symbol with at least three data series:

[1]Symbol, [2] Slow Stochs, [3] Fast Stochs.

--> Note: I do expect the data series to be in the right place; I don't error check on this since I write stuff for myself and keep all my setups correct by hand :-)

 

B) So you're looking for divergence between data series [2] & [3] then, from what I read above.

 

C) The main condition is that both lines in [2] are flat or down and both lines in [3] are up.

 

D) Crossing of the lines is not relevant here; just [2] both flat/down and [3] up at the same time.

 

E) The processing of the conditions does not occur intra-bar, only on closed bars.

 

Is this correct? I'm rebuilding some code now that was lost during a BlueScreen this morning, so since most of this is the same as what I have, I'll post what I have later and you can use it if you want or can change it to whatever you need.

 

MTG

Share this post


Link to post
Share on other sites
Did my suggestion not work? It should have done if the question was correctly expressed in your original post.

 

Once you trigger true nothing in your code ever resets back to false. Either always reset to false at the start of your code -or- have an else clause where you test your conditions. The former will just show the bar that transitions from false to true the latter will show all bars that meet the condition. Simple logic error.

 

 

that's why I insist on people writing out their thoughts,

instead of jumping into coding immediately.

 

 

Problem solved as far as I can see.

 

 

I really don't care if he solved the problem...

some people only want a quick fix. As far as I am concerned, the "problem" is not in the logic.

Share this post


Link to post
Share on other sites

Thats not what he said Mr T G, he simply wants a mark when two moving avergaes ( a fast and a slow) both turn up. Single data series, no stochs, no divergences, unless I mis read the original post and code.

 

this will probably do it though I have simply modified your original code so might not be the most elegant way of doing it.

 

inputs:
fastLength(5),
slowLength(10),
BEx(0.5);

Var:
longTrigger(false),
longTriggerValue(0),
fastValue(0),
slowValue(0);

longTrigger = false;
Value1=LOW ;

fastValue = Average( Close, fastLength );
slowValue = Average( Close, slowLength );

if fastvalue[1]<=fastvalue[2] or slowValue[1] <= slowValue[2] then {where previous MA's down?}
 If FastValue>FastValue[1] and slowvalue>slowvalue[1]               {if so check if current MA is up}
    and close>open then longTrigger = true;


if longTrigger=true then
begin
 longTriggerValue = High +( range * BEx );

 Plot1(Value1);
 Plot2(LongTriggerValue);
end;

 

Cant remember whether braces are EL comments or a MC extension might have to change those.

Share this post


Link to post
Share on other sites
that's why I insist on people writing out their thoughts,

instead of jumping into coding immediately.

 

I really don't care if he solved the problem...

some people only want a quick fix. As far as I am concerned, the "problem" is not in the logic.

 

Actually that was why I tried to help compared t0o many posters he did a reasonable job of describing what he was trying to do :D. He posted some code that he had taken a stab at, reasonably clearly described what he was trying to do and posted a chart with an illustration of how it looked and how it should look. Compared to many of the "please help" posts a zillion miles ahead ! :) I think (though I may be mistaken) there was enough information in the original post to provide a solution. Time will tell I guess!

 

Having said that your advice was spot on for him finding the solution for himself.

Share this post


Link to post
Share on other sites

I agree with you both, (BFish/Tams) ... it could be just a quick fix need, but I don't really like to try to do quick-fix as it always seems to effect other things and make other problems.

 

Start simple, test, expand, test, etc. is my motto :-)

 

Anyway, since I have a similar indicator, just offering to share/help as best I can; not necessarily fix anything existing ... just giving back what I can as I get help from time-to-time as well. I'm not claiming anyone, myself included, right or wrong; just providing options :-)

Share this post


Link to post
Share on other sites

the problem is...

most wishful thinkers write in mumble jumbles...

 

 

writing out their fantasy is easy,

but until people can write out their "wishes" one thought/one line at a time...

the codes will be mumble jumble too.

 

I have yet to be proven wrong on that.

 

;-)>

Edited by Tams

Share this post


Link to post
Share on other sites

Mr T G, You can often learn something new by how others approach problem. There was a great thread "plotting globex highs and lows" or something similar. What was good about it is that several methods to do it where presented, some from fairly novice coders. Anyway reading back my post sounds unduly critical that was not my intention, apologies.

Share this post


Link to post
Share on other sites
Actually that was why I tried to help compared t0o many posters he did a reasonable job of describing what he was trying to do :D. He posted some code that he had taken a stab at, reasonably clearly described what he was trying to do and posted a chart with an illustration of how it looked and how it should look. Compared to many of the "please help" posts a zillion miles ahead ! :) I think (though I may be mistaken) there was enough information in the original post to provide a solution. Time will tell I guess!

 

Having said that your advice was spot on for him finding the solution for himself.

 

 

I agree that he did a reasonable job of trying...

especially posting his work-in-progress. (I give credit to that... some people are too shy to post)

 

If he had written out his thoughts one line at a time in this format:

 

IF...

THEN...

ELSE...

 

he would have avoided the error.

 

 

 

 

p.s. I think he had solved the problem already...

This is a simple bug, you have given him the clue he needed. it is not that difficult to spot the fault once he thinks it through.

In an anonymous forum, some people just don't have the habit of acknowledging help.

Edited by Tams

Share this post


Link to post
Share on other sites

Besides the advice that Tams gave about writing out your rules in English in advance, I would also suggest that you always include some print statements for use during debugging. An example is shown below:

 

Print(ELDATETOSTRING(Date), " ", Time, " LongTrigger: ", LongTrigger, " LongTriggerValue: ", longtriggervalue, " Fastvalue: ", fastvalue, " Slowvalue: ", slowvalue, " A");

 

The idea is to print out the current values of important variables on each bar. These print out to the Easylanguage output bar, which can be automatically saved to a file upon exit. Each one shows the date and time of the bar plus the variables required. Note that I have also included a reference "A" at the end, because you might want to insert the same print statement at different points in your logic to see how the variables change as the code is processed. By using a different reference for each print statement you can see exactly which part of the code triggers any changes in values.

 

Normally this will highlight any problems with your logic. Logic/coding problems are IMHO the normal cause of funny results, rather than TS technical issues.

 

It can be useful also to have an input at the start of the statement, something like:

 

Inputs:

Print_On("N");

 

Then you can add a line before the print statement:

 

If Print_On = "Y" then print(message that needs to be printed);

 

This allows you to turn the printing on or off during run-time by changing the input.

 

Charlton

Share this post


Link to post
Share on other sites
Mr T G, You can often learn something new by how others approach problem. There was a great thread "plotting globex highs and lows" or something similar. What was good about it is that several methods to do it where presented, some from fairly novice coders. Anyway reading back my post sounds unduly critical that was not my intention, apologies.

 

No worries, I agree BFish, that's why I just provide options and take nothing personally :-) I've coded in other areas for years, and yet find myself in a new category every day! The only thing we know for sure is that we don't know everything!

 

Always happy to help where I can and learn everything along the way :-) OK, I'm back to work!

Share this post


Link to post
Share on other sites

Hi, and many thanks to you all for all your help with this so far.

 

Blowfish, I put the code, exactly as you posted into ts and ran it on GBPUSD 5 min data.

 

I attach 3 charts which are showing the problems I am having with this show me. ( Also plotted are the fast and slow moving averages ( the thick ones ) which change to green when both the slow and fast MAs are pointing up. )

 

I have market the charts with lines and put text at the places that the problems are ocurring, to make things easier to see, as previously suggested by Tams.

 

Once again, many thanks for all your help.

5aa70f6f72b5e_ScreenHunter_01Nov_2910_34.thumb.gif.7a6d78a9c94e308b9744f4cf3603c2e7.gif

5aa70f6f7ec76_ScreenHunter_02Nov_2910_35.thumb.gif.48b57c3b6006853d04fd7c206b89310f.gif

5aa70f6f8604f_ScreenHunter_03Nov_2910_37.thumb.gif.1754569163b4a34ecd134d0e13cccd2d.gif

Share this post


Link to post
Share on other sites

You did not say WHY this is plotting correctly.

What is your criteria that makes it "correct"?

What should the chart do if the criteria is not met ???

 

What about the "incorrect" plot?

What is your criteria it did not make that renders it "incorrect"?

What should the chart do if the criteria is not met ???

 

You might have described your codes in one post or anther,

but don't expect people to look for that section of code...

because that code is "wrong"... it is not producing the effect you want, how can people match that section of code to this picture????

I see lots of lines... do you know which line is which?

Do you know what variables you are evaluating against which?

I don't.

 

 

Can you see that your thoughts are not cohesively articulated

and the logic description are incomplete?

Computers are dumb. They can only do what you tell it to do.

If your logic is incomplete, so is the computer's action.

 

 

If you are looking a solution... this is the place you really have to make an effort to cover all the bases...

So far I only see you swimming around in shallow water...

 

 

15983d1259491611-help-needed-indicator-screenhunter_01-nov.-29-10.34.gif

Edited by Tams

Share this post


Link to post
Share on other sites

ThanX TAMS 2 write 18 lines 2 repeat it again & again

 

This is what I've leanred from TAMS

 

2 B clear

 

First in my head 4 my personnal work

 

Then 4 the others 2 receive the correct answer

 

But The road is hard...

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

    • NFLX Netflix stock, watch for a top of range breakout at https://stockconsultant.com/?NFLX
    • SMCI Super Micro Computer stock watch, attempting to move higher off the 34.06 support area at https://stockconsultant.com/?SMCI        
    • UPST Upstart stock watch, pull back to 68.15 gap support area at https://stockconsultant.com/?UPST  
    • Why not to simply connect you account to myfxbook which will collect all this data automatically for you? The process you described looks tedious and a bit obsolete but may work for you though.
    • The big breakthrough with AI right now is “natural language computing.”   Meaning, you can speak in natural language to a computer and it can go through huge data sets, make sense out of them, and speak back to you in natural language.   That alone is a huge breakthrough.   The next leg? AI agents. Where they don’t just speak back to you.   They take action. Here’s the definition I like best: an AI agent is an autonomous system that uses tools, memory, and context to accomplish goals that require multiple steps.   Everything from simple tasks (analyzing web traffic) to more complex goals (building executive briefings or optimizing websites).   They can:   > Reason across multiple steps.   >Use tools like a real assistant (Excel spreadsheets, budgeting apps, search engines, etc.)   > Remember things.   And AI agents are not islands. They talk to other agents.   They can collaborate. Specialized agents that excel at narrow tasks can communicate and amplify one another’s strengths—whether it’s reasoning, data processing, or real-time monitoring.   What it Looks Like You wake up one morning, drink your coffee, and tell your AI agent, “I need to save $500 a month.”   It gets to work.   First, it finds all your recurring subscriptions. Turns out you’re paying $8.99 for a streaming service you forgot you had.   It cancels it. Then it calls your internet provider, negotiates a lower bill, and saves you another $40. Finally, it finds you car insurance that’s $200 cheaper per year.   What used to take you hours—digging through statements, talking to customer service reps on hold for an hour, comparing plans—is done while you’re scrolling Twitter.   Another example: one agent tracks your home maintenance needs and gets information from a local weather-monitoring agent. Result: "Rain forecast next week - should we schedule gutter cleaning now?"   Another: an AI agent will plan your vacations (“Book me a week in Italy for under $2,000”), find the cheapest flights, and sort out hotels with a view.   It’ll remind you to pay bills, schedule doctor’s appointments, and track expenses so you’re not wondering where your paycheck went every month.   The old world gave you tools—Excel spreadsheets, search engines, budgeting apps. The new world gives you agents who do the work for you.   Don’t Get Too Scared (or Excited) Yet William Gibson famously said: "The future is already here – it's just not evenly distributed."   AI agents will distribute it. For decades, the tools that billionaires and corporations used to get ahead—personal assistants, financial advisors, lawyers—were out of reach for regular people.   AI agents could change that.   BUT, remember…   We’re in inning one.   AI agents have a ways to go.   They’re imperfect. They mess up. They need more defenses to get ready for prime time.   To be sure, AI is powerful, but it’s not a miracle worker. It’s great at helping humans solve problems, but it’s not going to replace all jobs overnight.   Instead of fearing AI, think of it as a tool to A.] save you time on boring stuff and B.] amplify what you’re already good at. Right now is the BEST time to start experimenting. It’s also the best time to find investments that will “make AI work for you”. Author: Chris Campbell (AltucherConfidential)   Profits from free accurate cryptos signals: https://www.predictmag.com/     
×
×
  • Create New...

Important Information

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