Language comparison

EL or AFL is the most anyone here would ever need. If there is something more complex they cannot handle, then it would probably not work.

Ron, don't listen to guys who don't know. You can find a lot of those in Internet forums.
 
I'm sorry to say but you still don't know. If you don't know then why stating something that is not true or why generalizing? It simply insults the intellect of readers.

For example out of few other softwares (two others not listed in post #1) I've been using Amibroker for quite some time. Now I can assure that you don't no much about the speed for example. You just assume. That's all. Secondly AmiBroker is not tied to one language since it is open architecture.
So what does it mean? It means you a free to use languages like C/C++, NET, Delphi, even Python (I think) etc besides AFL. And in AFL you can bridge to other languages too. Again you first two guys don't know much but you talk about your language and transport some assumptions about other languages or softwares as a whole that are simply wrong. Post #3 is quite a joke at parts too. So as you can see reading horsesh.. like "tied to this and tied to that" or "this is not possible or that is not possible" written by people who just post something for the sake of posting something out of the blue without being sure at all can tear reader's hair out (like mine). And I'm asking myself "why even reading it" since I want to keep my hair.
The question was specifically about 2 proprietary languages (Amibroker AFL, Tradestation Easylanguage) 1 platform (NinjaTrader) and an open Programming language (Python).
The proprietary languages may be based on open programming languages but they are tailored for use with a specific platform.
Amibroker allows integration with many programming languages? That's great. Good for them.
Any of those programming languages will allow you to connect to many different brokers, unlike AFL.

I write based on my biases, perceptions and previous experiences and I am fallible on my opinions, just like you and anyone else. I even mixed up EasyLanguage with esignal scripting language -ESL- in my original response. Go figure! At the end of the day everyone is subject to error and I participate of this forum and others with the goal of learning and maybe helping someone out everynow and then.
So far your 4 posts here have only been focused on pointing that someone else is wrong and you are right.
If my responses are forcing you to pull your hair out, then by all means click on my nick open the member profile and click on the ignore button. Health comes first mate and there are more productive ways to spend your time.
 
  • Like
Reactions: d08
@howardbandy i feel like it's pretty easy to write a simple SVM like a linear or guassian kernel in any language, but your point is well received by me nonetheless. Great post haha, if people want to get technical and use more advanced tools, then they should be 100% encouraged to do so.
 
1. Trading system development platforms -- AmiBroker, TradeStation, Ninja, MetaStock, etc -- are great for indicator-based trading systems. We each have our favorite, and understand what we need to do and how it can be accomplished. But TSDPs are special-purpose programs, designed for trading system development and trading. They are far less capable of support for matrix-intensive computation, pattern recognition, and machine learning than Python (the specific general purpose language mentioned in the thread).

2. It may be pretty easy for some readers of this thread to write the code for an SVM with a radial basis function, handle the data wrangling, code the indicator functions, determine the best definition of categories for the classification, perform the data split into train, guide, validate sets, manage the dates to walk forward, set up and run Monte Carlo analyses to determine risk of drawdown in excess of personal tolerance, estimation of profit potential, and trade-by-trade determination of system health and correct position size. But probably not in EasyLanguage. And probably not using any of the TSDPs for most. They might prefer Python with NumPy, SciPy, Scikit-Learn, etc.

In my research and experience, results from machine learning techniques applied to trading are worth the effort. Today's TSDPs are not adequate for support of them.

Whether anyone wants to investigate those techniques or not, my point is that I should not suggest that a technique will not work simply because I do not know how to do it.

Best,
Howard
 
^Excellent post.

Agreed on the distinction of applications: Indicator based strategy design vs. other other forms of design and research where special purpose languages and general purpose languages shine, respectively.

Agreed also on the applicability of machine learning. With proper feature engineering, I believe it is a very powerful tool for quantitative research in trading and other fields. Unsupervised learning can estimate or even find interesting relationships between variables and supervised learning techniques can be instrumental in designing and optimizing strategies.
 
The question was specifically about 2 proprietary languages (Amibroker AFL, Tradestation Easylanguage) 1 platform (NinjaTrader) and an open Programming language (Python).
The proprietary languages may be based on open programming languages but they are tailored for use with a specific platform.
Amibroker allows integration with many programming languages? That's great. Good for them.
Any of those programming languages will allow you to connect to many different brokers, unlike AFL.

I write based on my biases, perceptions and previous experiences and I am fallible on my opinions, just like you and anyone else. I even mixed up EasyLanguage with esignal scripting language -ESL- in my original response. Go figure! At the end of the day everyone is subject to error and I participate of this forum and others with the goal of learning and maybe helping someone out everynow and then.
So far your 4 posts here have only been focused on pointing that someone else is wrong and you are right.
If my responses are forcing you to pull your hair out, then by all means click on my nick open the member profile and click on the ignore button. Health comes first mate and there are more productive ways to spend your time.

Ignore button? That as it looks probably is your preference but not mine. So don't tell me what I have to do and what I don't have to do.

As for AFL ... within AFL you can connect to multiple brokers sending/receiving stuff. So why insisting on claiming something you have not much clue about. Better remain silent then.

But all that got nothing to do with the original post #1 anyway.
 
I came across the code for an SMA crossover system built on python zipline.

http://nbviewer.ipython.org/github/...lob/master/3. Backtesting using Zipline.ipynb

It is not exactly the system requested by Sergio77. but it is pretty close (after i modified the SMA timeframes all that it'll need is the 5%MM stop)



Code:
## imports

import pandas as pd
import pandas.io.data
import numpy as np

import pytz
from datetime import datetime

import zipline as zp

from zipline.finance.slippage import FixedSlippage

## data from yahoo

start = datetime(1990, 1, 1, 0, 0, 0, 0, pytz.utc)
end = datetime(2002, 1, 1, 0, 0, 0, 0, pytz.utc)
data = zp.utils.factory.load_from_yahoo(stocks=['AAPL'], indexes={}, start=start,
                                        end=end, adjusted=False)

## plot the data as a sanity check...
data.plot()



# Class for SMA signal

class DualMovingAverage(zp.TradingAlgorithm):
    """Dual Moving Average Crossover algorithm.

    This algorithm buys apple once its short moving average crosses
    its long moving average (indicating upwards momentum) and sells
    its shares once the averages cross again (indicating downwards
    momentum).

    """
    def initialize(self, short_window=50, long_window=200):
        # Add 2 mavg transforms, one with a long window, one
        # with a short window.
        self.add_transform(zp.transforms.MovingAverage, 'short_mavg', ['price'],
                           window_length=short_window)

        self.add_transform(zp.transforms.MovingAverage, 'long_mavg', ['price'],
                           window_length=long_window)

        # To keep track of whether we invested in the stock or not
        self.invested = False

    def handle_data(self, data):
        short_mavg = data['AAPL'].short_mavg['price']
        long_mavg = data['AAPL'].long_mavg['price']
        buy = False
        sell = False

        if short_mavg > long_mavg and not self.invested:
            self.order('AAPL', 100)
            self.invested = True
            buy = True
        elif short_mavg < long_mavg and self.invested:
            self.order('AAPL', -100)
            self.invested = False
            sell = True

        self.record(short_mavg=short_mavg,
                    long_mavg=long_mavg,
                    buy=buy,
                    sell=sell)

## Run the program.
dma = DualMovingAverage()
perf = dma.run(data)


## make pretty plots

fig = plt.figure()
ax1 = fig.add_subplot(211,  ylabel='Price in $')
data['AAPL'].plot(ax=ax1, color='r', lw=2.)
perf[['short_mavg', 'long_mavg']].plot(ax=ax1, lw=2.)

ax1.plot(perf.ix[perf.buy].index, perf.short_mavg[perf.buy],
         '^', markersize=10, color='m')
ax1.plot(perf.ix[perf.sell].index, perf.short_mavg[perf.sell],
         'v', markersize=10, color='k')

ax2 = fig.add_subplot(212, ylabel='Portfolio value in $')
perf.portfolio_value.plot(ax=ax2, lw=2.)

ax2.plot(perf.ix[perf.buy].index, perf.portfolio_value[perf.buy],
         '^', markersize=10, color='m')
ax2.plot(perf.ix[perf.sell].index, perf.portfolio_value[perf.sell],
         'v', markersize=10, color='k')

plt.legend(loc=0)
plt.gcf().set_size_inches(14, 10)
 
Why are people so adversarial on this website? Sometimes people make mistakes, but its not like anyone is knowingly misleading others or anything malicious. We're (mostly) here with the objective of participating in a community of traders for educational purposes. Not a personal condemnation @M.ST. , I'm just saying this site has a pervasive attitude of hostility that a) I don't understand b) I feel often detracts from both learning and answering the original question.
 
In my research and experience, results from machine learning techniques applied to trading are worth the effort. Today's TSDPs are not adequate for support of them.

Machine learning is multiple comparisons <=> data-mining <=> useless:

http://en.wikipedia.org/wiki/Multiple_comparisons_problem

There is no way in the world that any such procedure will generate a profitable system. But I cannot see the reason for all these buzzwords:

SVM
radial basis function
data wrangling
categories for the classification
perform the data split into train
Monte Carlo analyses
system health

None of the above will make any money, try as much as you want you get nowhere. The OP asked a specific question. Here is some AFL code. I don't know why would anyone want to use anything else, including this strange Python stuff.

Code:
SetBacktestMode(backtestRegular);
SetTradeDelays ( 1, 1, 1, 1);
CondLong = MA(Close, 50) > MA(Close,200) AND Ref(MA(Close, 50) ,-1) <= Ref(MA(Close, 200), -1) ;
CondShort= MA(Close, 50) < MA(Close,200) AND Ref(MA(Close, 50) ,-1) >= Ref(MA(Close, 200), -1) ;
Buy=Cover=CondLong;
Short=sell=CondShort;
BuyPrice=ShortPrice=Open;
SetPositionSize( 100, spsShares);
ApplyStop(0,1,5);
 
Back
Top