Welcome to the QChartist blog QChartist Community – Your way to financial freedom

May 11, 2026

Even if Warren Buffett says gambling is a bad idea, has he ever played in his life?

Even if Warren Buffett says gambling is a bad idea, has he ever played in his life?

The short answer is yes, Warren Buffett has gambled, but likely not in the way you’d expect. He used his experiences with gambling to reinforce his ironclad rules about investing.

Here is the breakdown of his relationship with “the house”:

1. Youthful Indiscretions

In his youth, Buffett was obsessed with probabilities. He frequented racetracks and placed bets on horses. However, these experiences mostly served as a wake-up call. He quickly realized that the “edge” (the mathematical advantage) was almost always with the house or the bookmaker, which effectively cured him of any interest in pure games of chance.

2. His Philosophy: “Being the Casino”

Buffett avoids casinos because he views gambling as a tax on hope and mathematical ignorance. To him, the difference is clear:

  • The Gambler bets on uncertain events with the odds stacked against them.
  • The Investor (Buffett) bets on productive companies with time and compound interest in their favor.

3. The Slot Machine Lesson

There is a famous anecdote about Buffett keeping a slot machine in his own home for his children.

The Goal? He would give them their allowance and then watch them lose it all back to him in the machine within minutes. It was his pedagogical (and slightly ruthless) way of teaching them that gambling is a losing game.

4. “Intellectual” Bets

While he avoids Blackjack tables, Buffett loves long-term bets based on statistics.

  • The Million Dollar Bet: In 2007, he wagered $1 million that a simple index fund (S&P 500) would outperform a selection of high-fee Hedge Funds over ten years.
  • The Result: He won by a landslide. This is the only type of “gambling” he respects: one where he is mathematically right from the start.

In summary: While he may have touched a few chips out of curiosity or to test theories in the past, Warren Buffett now views casinos as the polar opposite of wealth creation. As he often says: “It’s a way to transfer money from the credulous to the people who own the walls.”

May 3, 2026

Solving root node problems

Filed under: Trading — admin @ 10:42 am

As Demis Hassabis solves root node problems with AI, QChartist trading systems solved the root node problem of anticipating market reversals (with complex algorithms and geometry) and making perpetual gains

April 13, 2026

Bug solved in QChartist build 333/334

Filed under: Trading — admin @ 6:03 am

Very often, the app freezed and crashed under WineHQ when i moved the cursor of the mouse on certain elements of the gui. This was due to the timer interval set at 1ms for screen.mousex and y. Under Wine, Screen.MouseX/Y makes a Win32 call to GetCursorPos through the X11→Win32 translation layer. This bridge can block the main thread if there is a synchronization issue with the X server, causing an apparent freeze. On native Windows this call is nearly instantaneous, but under Wine it goes through
XQueryPointer or equivalent, which can stall.
Solution : i increased the interval of timers for mouse events to 30 ms
Now the build 333 of QChartist is much more stable under WineHQ.
If you have not made it yet, run update to obtain the build 333 ! Or if you are on build 332, download the archive of the build 333 from the website and overwrite the files.

The app is still freezing and crashing sometimes under WineHQ.
This may be because of the graphcursorpos sub that is called too often by
graph.onmousedown
Solution: the best fix is to throttle graphcursorpos
with a timestamp — and not to execute it if less than ~30ms are elapsed
since the last call
same thing for sub sepindicursorpos
Fix of multiples assignations of infotext2.Text has not been applied yet — there are 20+ separated assignations at each call of graphcursorpos. It is probably the remaining cause of crashes because infotext2.Text = forces redraw X11 synchrone under Wine.
Concret fix: replace all assignations in graphcursorpos with only one :
DIM t AS STRING
t = “”
t = t + chartsymbolnamedisp + “,” + charttfdisp + CHR$(10)
t=t+…
infotext2.Text = t
Added IF LIKE(frmmain.caption, “wait“) = 1 THEN EXIT SUB in
sub graphcursorpos and sepindicursorpos

build 334

Cheers and enjoy!

March 24, 2026

Leverage is what kills you

Filed under: Trading — admin @ 3:26 pm

1. “Leverage is what kills you”

Buffett repeatedly warns that leverage turns ordinary mistakes into disasters.

“If you’re smart, you don’t need it; if you’re dumb, you shouldn’t be using it.”

His point: even good investors are sometimes wrong. With leverage, being wrong doesn’t just hurt—it can wipe you out.


2. Survival > Returns

Buffett prioritizes staying in the game over maximizing returns.

He often emphasizes:

  • You don’t need to swing for the fences
  • Avoiding ruin is more important than making extra profit

Leverage introduces:

  • Margin calls
  • Forced liquidation at the worst time
  • Loss of control over timing

That’s exactly the opposite of how he invests (long-term, patient, no forced selling).


3. “Never risk what you have and need…”

One of his most famous principles:

“Never risk what you have and need for what you don’t have and don’t need.”

Leverage violates this because:

  • You’re borrowing money
  • You can lose more than your initial capital
  • You’re putting your financial stability at risk for extra upside

4. Even professionals blow up with leverage

Buffett has pointed out that:

  • Long-Term Capital Management (LTCM) collapsed due to leverage
  • Many hedge funds fail not because of bad ideas—but because of too much leverage

His takeaway: intelligence doesn’t protect you from leverage risk.

March 18, 2026

We are nearly at the end of our project QChartist.

Filed under: Computers,Programming,Trading — admin @ 9:06 am

Finishing a big project can feel surprisingly strange — a mix of relief, pride, and sometimes a bit of emptiness. That’s completely normal.

Don’t rush past the finish line. Take a moment to:

  • reflect on what you achieved
  • recognize the effort you put in
  • celebrate in a way that feels good to you

Closing the chapter properly helps your mind move on.

Expect the “post-project dip”

After working toward a clear goal, it’s common to feel a drop in motivation or energy.
You had structure and purpose — now there’s a gap.

👉 This isn’t a problem, just a transition phase.

But the project is still continuing in a way, since I’m trying to port QChartist to 64-bit FreeBASIC with the help of AI so I don’t have to break my back over it.

Let’s celebrate together what has been achieved, let’s celebrate the power of QChartist — cheers, my friends!🍸

March 16, 2026

Pandas-TA within QChartist TA, we’ve done it!

Filed under: Computers,Programming,Trading — admin @ 12:08 pm

That’s it, we have done it! QChartist TA build 327 can now load most of the indicators available in Pandas-TA python.


change log:

  • New (python) tens of indicators: python_indis_main (main canvas) and python_indi (separate canvas)

In the properties of the indicators you can choose between these python indicators:

— pandas-ta-classic (215) —
aberration, above, above_value, accbands, ad, adosc, adx, alma, amat, ao, aobv,
apo, argmax, argmin, aroon, atr, av, bbands, below, below_value, bias, bop, brar
, cagr, calmar_ratio, candle_color, category_files, cci, cdl, cdl_doji, cdl_insi
de, cdl_pattern, cdl_z, cfo, cg, chop, cksp, cmf, cmo, combination, coppock, cro
ss, cross_value, cti, dataclass, decay, decreasing, dema, df_dates, df_error_ana
lysis, df_month_to_date, df_quarter_to_date, df_year_to_date, dm, donchian, down
side_deviation, dpo, drawdown, ebsw, efi, ema, entropy, eom, er, erf, eri, fibon
acci, field, final_time, find_spec, fisher, fwma, geometric_mean, get_distributi
on, get_drift, get_offset, get_time, ha, high_low_range, hilo, hl2, hlc3, hma, h
wc, hwma, ichimoku, increasing, inertia, is_datetime64_any_dtype, is_datetime_or
dered, is_percent, jensens_alpha, jma, kama, kc, kdj, kst, kurtosis, kvo, linear
_regression, linreg, log_geometric_mean, log_max_drawdown, log_return, long_run,
 ma, macd, mad, massi, max_drawdown, mcgd, median, mfi, midpoint, midprice, mom,
 mtd, natr, non_zero_range, npAll, npAppend, npCorrcoef, npDot, npSum, nvi, obv,
 ohlc4, ones, optimal_leverage, pascals_triangle, pdist, percent_return, pgo, pp
o, psar, psl, pure_profit_score, pvi, pvo, pvol, pvr, pvt, pwma, qqe, qstick, qt
d, quantile, real_body, recent_maximum_index, recent_minimum_index, rma, roc, rs
i, rsx, rvgi, rvi, seterr, sharpe_ratio, short_run, signals, signed_series, simp
lefilter, sinwma, skew, slope, sma, smi, sortino_ratio, squeeze, squeeze_pro, ss
f, stc, stdev, stoch, stochrsi, supertrend, swma, symmetric_triangle, t3, tal_ma
, td_seq, tema, thermo, to_utc, tos_stdevall, total_time, trima, triu, trix, tru
e_range, tsi, tsignals, ttm_trend, ui, unsigned_differences, uo, variance, verif
y_series, vhf, vidya, volatility, vortex, vp, vwap, vwma, wcp, weights, willr, w
ma, xsignals, yf, ytd, zero, zlma, zscore

Enjoy!

  • build 327

March 15, 2026

QChartist can now interact with Pandas (TA): 130 new Indicators and Utility functions available

Filed under: Computers,Programming,Trading — admin @ 3:26 pm

For the build 326 of QChartist TA:

  • i installed theses python modules:
    python -m pip install numpy==1.24.3
    python -m pip install pandas==2.0.3
    python -m pip install pandas-ta-classic
  • i added example4.py
    i tried example4.py : error…
    python -m pip uninstall numpy pandas pandas-ta-classic
    python -m pip install numpy==1.19.5
    python -m pip install pandas==1.1.5
    python -m pip install pandas-ta-classic –no-deps
    python -m pip install python-dateutil pytz
    python -m pip list
    python -m pip install mplfinance –no-deps
    python -m pip install matplotlib==3.3.4
    python -m pip install taleb –no-deps
    In your code, you just use import taleb as talib and it works the same way.
    python -m pip install scipy==1.9.1 –no-deps
  • now i tried : python example4.py “YHOO1440.csv” “2014-01-01 00:00” “2
    015-06-01 16:00″ yes
    and yes it works, i managed to use pandas_ta on python 32-bit ! Chart saved as custom_chart.bmp and custom_chart.png

What is example4.py (which needs pandas):
This script is a command-line financial analysis tool designed to process stock/forex data from a CSV file, apply various technical indicators from two different libraries, and generate a visual candlestick chart saved as a high-compatibility image (.bmp).

Globally, the script operates in four distinct phases:

  1. Data Initialization and Filtering

The script starts by taking four command-line arguments: a CSV filename, a start date, an end date, and a toggle for volume.

It loads the CSV into a Pandas DataFrame.

It standardizes the columns to Open, High, Low, Close, and Volume.

It filters the data to only include the date range you specified in the terminal.
  1. Indicator Discovery

The script performs a “deep scan” of your installed libraries to see what tools are available:

pandas-ta-classic: It uses the inspect module to find every available function inside the library.

taleb (TA-Lib): It similarly scans for all uppercase built-in functions (standard for TA-Lib indicators like RSI, MACD, etc.).

It then prints a massive list of all combined indicators found so you know what you can choose from.
  1. Interactive Configuration

This is the “human-in-the-loop” part of the script:

Selection: It prompts you to type which indicators you want (e.g., sma, rsi, bbands).

Parameters: For every indicator you pick, it displays the help documentation for that specific function and asks you for parameters (like length=20).

Calculation: It runs the math and appends the new data (the indicator values) as new columns in your main DataFrame.
  1. Smart Visualization (Mplfinance)

The final phase is the most complex part of the code logic:

Panel Management: It automatically decides where to draw the indicators.

    Overlays: Indicators like Moving Averages or Bollinger Bands are drawn directly on top of the price candles (Panel 0).

    Oscillators: Indicators like RSI or MACD are given their own separate "panels" below the price chart so they don't clutter the main view.

Image Export: Instead of just popping up a window (which can be difficult in a Wine environment), it generates a plot, saves it as a .png, and then converts it to a .bmp. This is likely done for compatibility with older Windows image viewers or specific legacy software.

Pandas-TA is a popular and comprehensive Technical Analysis Library in Python 3 that leverages numba and numpy for accuracy and performance, and pandas for simplicity and bulk processing. The library contains more than 150 indicators and utilities as well as 60 Candlestick Patterns when TA Lib is installed.

Now thats a very good news that example4.py script works because we’ll be able to add and use all 130 Indicators and Utility functions from pandas ta to QChartist and much more !
More info here: https://github.com/Data-Analisis/Technical-Analysis-Indicators—Pandas

  • build 326

March 14, 2026

New professional grade perspectives for QChartist TA in build 325

Filed under: Computers,Programming,Trading — admin @ 2:43 pm

QChartist TA becomes more and more professional thanks to its interaction with python scripts dedicated to traders.

For the build 325:

  • I upgraded python to version 25.0.1 and added some useful python scripts for traders
    c:\QChartist\Python38-32>python -m pip install –upgrade pip
  • i installed some modules :
    modules
    pycoingecko
    binance
    typing_extensions
    cryptography
    pip install –force-reinstall cryptography==3.4.8
    aiohttp
    binance.client
    python -m pip uninstall python-binance binance -y
    python -m pip install python-binance
    pybit
    screeninfo
  • i tried :
    c:\QChartist\Python38-32>python example10.py YHOO1440.csv “2015-09-01 00:00” “20
    16-02-01 00:00″
    Saved chart to: full_chart.ps
    To convert to PNG, use:
    gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -r144 -sOutputFile=full_chart.p
    ng full_chart.ps
    to obtain a 1h chart: use python pcgeck.py with command line arguments –interval 5min –days 33 then use period converter of 12 in qchartist
    to obtain a 4h chart : use python pcgeck.py with command line arguments –interval 15min –days 90 then use period converter of 16 in qchartist
    to obtain a daily chart : use the obtained 4h chart and use period converter of 6 in qchartist

pcgeck.py :
This script is a Python tool designed to fetch historical market data for a specific cryptocurrency from the CoinGecko API and convert it into a structured OHLCV (Open, High, Low, Close, Volume) format saved as a CSV file.

example10.py :
This script is a data visualization tool that generates a stock or cryptocurrency chart from a CSV file. It not only plots the primary price data but also calculates and overlays common technical analysis indicators.

binancevol.py :
This script is a data acquisition tool that connects to the Binance Futures API to download historical market data for a specific trading pair.
This Script (binancevol.py) acts as a specialized data collector specifically for Binance Futures, providing a more granular view of order flow (Buy vs. Sell pressure) which isn’t present in your general CoinGecko data.

binancefetch.py :
The script binancefetch.py is a specialized data acquisition tool designed to fetch historical OHLCV (Open, High, Low, Close, Volume) market data from the Binance REST API and save it to a CSV file.
Volume Split: A core feature of this script is the calculation of Buy Volume and Sell Volume. It takes the total volume and the “Taker buy base asset volume” provided by the API to separate trading activity into distinct buying and selling pressure metrics.

okx.py
This script (okx.py) is a data-collection and aggregation tool designed to analyze recent trading activity for a cryptocurrency pair on the OKX exchange.
Global Functionality
Globally, the script fetches raw individual trade data, organizes it into 1-minute intervals, and calculates buying versus selling pressure to identify market trends.

All these python script will be useful to implement and integrate new professional grade functionalities to QChartist TA software for the future releases, for example tick data and trades data information, order book and order flow analysis, volume footprint charts and much more !

  • build 325

March 12, 2026

The Power of Cumulative Volume Delta (CVD)

Filed under: Computers,Programming,Trading — admin @ 7:04 am

The Cumulative Volume Delta (CVD) is an absolutely fundamental tool for many professional traders, especially those specializing in Day Trading or Scalping in high-liquidity markets (Futures, Crypto, Forex).

Unlike lagging indicators based on price (such as RSI or MACD), CVD gets to the root of market movement: Order Flow.


Why do professionals use it?

CVD measures the net difference between aggressive buying volume (market orders) and aggressive selling volume. While price shows where the market is, CVD shows who is in control.

  • Identifying Absorption: This is its most powerful use. If the price is dropping while the CVD is rising, it means large “passive” buyers are absorbing all the aggressive selling. This is often a sign of an imminent reversal.
  • Confirming Trend Strength: In a healthy trend, price and CVD move up together. If the price climbs but the CVD flattens or drops, the trend is losing steam—buyers are no longer “hitting the tape” aggressively.
  • Spotting Divergences: Pros track divergences between price peaks and CVD peaks to anticipate false breakouts (bull traps/bear traps).

Who specifically uses it?

  1. Footprint Traders: They use CVD alongside Footprint charts to see the cumulative pressure over an entire session.
  2. Futures Traders (Indices/Gold/Oil): On these centralized exchanges, volume data is precise, making the CVD extremely reliable.
  3. Crypto Traders: Given the volatility and the heavy impact of market orders and liquidations in crypto, CVD has become an industry standard.

Limitations to keep in mind

While powerful, CVD is not a magic formula. It does not account for limit orders (passive liquidity) that have not yet been executed. A CVD exploding to the upside can still crash against a “wall” of hidden sell orders that are only visible on an Order Book or a Heatmap.

Pro Tip: CVD is most effective on lower timeframes (Intraday). On longer horizons (Weekly/Monthly), its utility diminishes as the delta tends to mean-revert or wash out over time.

Good news: QChartist now integrates order flow indicator CVD in build 324 !
Change Log:
2026-02-12:

  • New indicator for separate canvas: CVD (Cumulative Volume Delta)
    To make the indicator work, please first put the value of “counted bars:” (cntbarsedit)
    from 1000 to 3000 ; then you have to load your symbol on
    3 timeframes : Daily TF,1 Minute TF and 1 Hour TF (we visualize it on 1H)
    Dont forget to put counted bars back to 1000 after using this indicator
    I made this indicator greatly with the help of AI chat bot and it made me save
    a lot of time.
    On small caps cryptos, CVD should be >100k/<-100k before expecting a significant reversal
  • Recommended trading system improved in the trading_system.zip file
  • build 323

2026-03-11:

  • Fixed the CVD indicator, now it displays correct values
    To make the indicator work, please first put the value of “counted bars:” (cntbarsedit)
    from 1000 to 3000 ; then you have to load your symbol on
    3 timeframes : Daily TF,1 Minute TF and 1 Hour TF (we visualize it on 1H)
    Dont forget to put counted bars back to 1000 after using this indicator
    On small caps cryptos, CVD should be >100k/<-100k before expecting a significant reversal
  • Recommended trading system improved in the trading_system.zip file
  • Decreased tfintervalh1 value to 17280000 in QChartist.ini the way latest bars are
    correctly downloaded on 1H charts
    (please note that you’ll have to save and restore your data source api keys in a safe place
    for this update)
  • build 324

The approximation of CVD indicator in QChartist assumes that the Conviction of a candle represents the Delta of that period. It typically uses the lowest timeframe available (M1) to build the data for higher timeframes (like H1 or D1).

Why Approximation is “Good Enough”

While it isn’t “True Delta” (which requires a Centralized Exchange like the CME), approximation is highly effective because of Arbitrage.
Because high-frequency trading bots link the Spot FX or crypto market (which you trade) to the Futures market (where real Delta happens), the price movement on your QChartist chart almost perfectly mirrors the aggressive buying/selling on the exchange. Therefore, a green M1 candle on QChartist is a very reliable signal that aggressive buying occurred on the Futures exchange.

Since you know the M1 candle is a proxy for aggressive orders:

  • CVD Rising + Price Rising: Healthy trend (Aggressors are pushing and succeeding).
  • CVD Falling + Price Rising: Exhaustion (Aggressors are stopping, price is moving on low liquidity).
  • CVD Flat + Price Moving: Low conviction (The “Big Money” isn’t participating in the move).

January 3, 2026

Happy new year

After more than 15 years of hard work, 2026 was a pivotal year for me, where i turned from looser to winner.

Cheers🥂

Older Posts »

Powered by WordPress