Kevin Peter Abate / Perfil
- Informações
3 anos
experiência
|
8
produtos
|
2
versão demo
|
0
trabalhos
|
0
sinais
|
0
assinantes
|
Then I don't have to do any more guess work with ticklish bars that are still floating. Trash your demo account with open/close/open/close and then tell me how to tease out a useful strategy. I thought Velvet Sea was going to be a completely different product. I'll have to test it out.
Definitely maybe is better than absolutely not.
So last night I got the ADXW, not knowing that it was ADXW. I knew it was something and I knew that I coded it right. Today I looked a little deeper to find out what the difference was and it looks like it's something to do with the way that the indicator data is smoothed. Weilles Wilder used SMMA and my built-in ADX uses EMA, an exponential moving average, instead to smooth its data. I can't stress how important it is to understand what the indicators measure in terms of price action. ADX gives you three lines --- the main line, the positive directional indicator (+DI) and the negative directional indicator (-DI). And both "flavors" of ADX, if you will, can give you viable signals for entering a trade. Wilder originally designed ADX for long term positions based on daily data from stocks and commodities. The main line is an indicator of volatility and then +DI and -DI are supposed to say something about directionality, and I know these are subjective terms, but very clearly there is a more complicated algorithm here than a simple moving average.
Here's the best link I could find for the description of ADXW:
https://school.stockcharts.com/doku.php?id=technical_indicators:average_directional_index_adx
The wikipedia page is garbage for "ADX", but I'm using it right now for the description of Exponential Moving Averages. Hopefully I'll get an indicator that I can verify against the internal iADX function before too late this afternoon.
There's a problem with the way I recoded order cancellations using cancel=[object], where it cancels the order when you enter the command in rather than when the order is filled. That's the next update.
I haven't been able to think about the project for the last couple of days. Sometimes it's hard to parse and figure out what the next steps need to be. I'm thinking about going in the direction of better supporting more graphical objects than just trendlines and labels, I'm also thinking about how few indicators are ACTUALLY supported by velvet and yet I wanted to make files so that I could save the state of a chart (or all the charts) and reload it somewhere else.
You can save a CSV file and that's the chart. But that doesn't include the lines you drew, the orders that Velvet stores or command labels that might be holding an equity limit that you've decided to use in your account. So then I make a file to save all the objects and where they are, I don't know which indicator is which anymore or where those objects were, unless I'm using velvet and I had those objects saved according to the handle that's created after the indicator is verified as being Velvet. I hated those things, because when you run Velvet, it's supposed to delete all of them. Somehow, they'll get through the filter and break the damn thing, like if you've ever vacuumed up a paper clip and it jammed up the belt and whole thing either burned up and snapped and/or caught on fire. I think it happens when you have two charts open that are the same symbol and timeframe, that the routine that's used to figure out which chart and symbol you're using, will glitch, because it goes back to the record of all the handles created for the entire session, rather than what the user is actually doing in the local context.
I don't know if that makes any sense, but I'm trying to work through the structure of the program, because there's an object loop that acts within a loop that iterates through each chart and each indicator sub window. That's what I really wanted to do was open up the data displayed in those indicators to the programmer, so that if I wanted to do something based on a graphical object placed on the indicator, I didn't have to go back and re-derive all the different parameters, because that data should already be available to the program. However, there are no "IndicatorGet..." functions implemented. And therefore, I still have purpose. Files will make it more easy to debug this nonsense. Because otherwise you could get yourself quite tangled up in a complicated and unwieldy situation that could take a significant amount of time to deleverage from. I DO NOT recommend looped ordering. Velvet supports looped ordering, but latency can become a problem when you have to clear several hundred orders from the balance sheet. Enough is enough. You have to be decisive, because in that closing process, your equity level could slip significantly.
There's always work to be done.
Hopefully I can knock out another solid version before Monday. That's what I said Thursday was probably this weekend it'd be ready. The "debug" and "account" functions were already done this morning and I just coded the "order" functions earlier. I got everything to compile, but it's not tested yet. Maybe do some of that with a little light weekend crypto-trading in my demo.
Cheers Velveteers.
Velvet MACD is intended for use with the Velvet advanced ordering layer. It is a modified version of the MACD indicator provided by Metaquotes and all of the data it displays is accurate and verified, when it is detected by the ordering layer. In order to place orders with the Velvet MACD indicator, the ordering layer must be installed and running. Ordering from the Velvet MACD indicator requires that "Velvet Ordering Layer" ( found here ), version 2.0 or higher, be installed
Velvet RVI is intended for use with the Velvet advanced ordering layer. It is based on the algorithm for the Relative Vigor Index, provided by Investopedia here . All of the data it displays is accurate and verified against the internal API function iRVI, when it is detected by the ordering layer. In order to place orders with the Velvet RVI indicator, the ordering layer must be installed and running. Ordering from the Velvet RVI indicator requires that "Velvet Ordering
[layer].[action]([parameters]); [constants]; // [comment]
so if you change the description of a trendline to the most simple statement in "C3PO", you type in
order.buy(0.01, above);
And then you're waiting for a price break out above the trendline you drew to trigger the order. Velvet changes the name of the line on a price chart or a supported indicator. Currently trendlines are only supported on the velvet compatible version of RSI. Velvet indicators aren't any better than the regular indicators, except that they had cool looking computery code that's otherwise useless for a title. But after I updated velvet to better support that type of string formatting, I knew immediately that I had to do something else with it. I mean, MQL4 is a bit sandboxed from reality, but it handles arrays so much better than regular C++. So I took it a step further and use statements like that to control the ordering system.
Dare I call it an object-oriented ordering system, but that's sort of what it is. There are clearly refinements that I can make to the code, but I think that this is really ready for prime time and I wouldn't be bragging about it if I wasn't really ready to be charging for it. You can set orders to cancel orders. That looks like this:
order.buy(0.01, below); cancel=N;
where N is the OBJECT number of the order you want to cancel. The parameters in order.buy and order.sell are the same. It's the volume of the order (EagleFX uses 0.01 for its volume step), and then either the word "above" or "below". These are case-sensitive statements that only use lowercase letters. order.close is exactly the same, but only takes the parameter "above" or "below". However, you had to specify either one object=N; or one ticket=N in the constants region, so it would look like this:
order.close(above); ticket=XYZ; or
order.close(above); object=ABC;
where XYZ is the order number for an open position listed in the trade table, or if you wanted to close a position that either will be or has been triggered by a certain trendline order that has been detected, ABC is the object number -- the N from velvet.object=N .
Don't delete the handles that display "Velvet Enabled." or "Velvet Disabled." Those are tagged on by the program according to which chart, window and time frame the indicator is displayed for. Some indicators show different data for different time frames, and I had to track that as well to make sure that the order was being triggered by the correct data.
This version includes, finally, support for placing orders based on signal behavior. So you enter "order.signal(0.01);" and wait a second; the program adds a few constants, but don't be too intimidated. That let's you know the ordering system has found your order. Use any appropriate volume and this will wait for the signal to come before selling if the red signal crosses above the main line or buying if the red signal crosses below the main line. That's how MACD and RVI work. And if you use my software you have to have my indicators to place orders using those statements.
That's another thing that will affect the quality of your trades---not sleeping.
Happy trading, happier code.
Velvet RSI is intended for use with the Velvet advanced ordering layer. It is a modified version of the RSI indicator provided by Metaquotes and all of the data it displays is accurate and verified, when it is detected by the ordering layer. In order to place orders with the Velvet RSI indicator, the ordering layer must be installed and running. Ordering from the Velvet RSI indicator requires that "Velvet Ordering Layer" ( found here ), version 1.0 or higher, be installed and
velvet is an advanced ordering layer designed with MQL4 for use on a virtual private server to allow users to place orders with graphical objects placed onto compatible indicator charts displayed in the user session. The current version of velvet supports ordering from trendlines placed on price charts and ordering from trendlines on the compatible version of the RSI indicator found here . For compatible indicators to function they must be installed to the "velvet"
I digress.
Velvet is a layer for entering orders for trades manually based on indicator data. I see expert advisors that don't require the same degree of maintenance, but I think I've got something legit here. I don't see anyone offering this or anything like this, at least not on here. It's become much more sophisticated and powerful now that the first customized indicator has been detected. All the data displayed is the same. But there are gonna be a lot more listings under my name in the market. Most of them are going to be redundancies with code provided by Metaquotes, that was maybe only modified to display a different short name and accept the applied price parameter. The indicators in the "Oscillator" set accept input through a dialog box and not the same tabbed confirmation window that's displayed for a script, but with output like that, I'm really happy with my progress this weekend.
But yeah, that's what it's gonna take for me to be able to trigger an order from a graphical object placed onto an indicator sub window attached to a chart. The program had to do some data checking to make sure that the indicator is not being spoofed, either, but then once it passes that check, I'll start with the regular trendline and see what I can do with other objects later---and which objects can trigger a market order and open a position will vary with each indicator, but I'll get there when I get there. Likely, for oscillators like RVI and MACD, you'll put a label or a text object to "wait" on either a buy or a sell signal when either the lines cross or the line crosses the histogram.
In economics they call it the opportunity cost. If you want to sit on Expert Advisor XYZ to place automated trades for you and you have it calibrated properly and you turn a profit consistently, great. Go make money. I make software.