
Le but de cette stratégie est de tester si les différentes variables d’entrée, telles que la couleur de la ligne K, le volume de transaction et la méthode aléatoire, peuvent être utilisées pour prédire les variations de prix sous forme d’ondes positives. La stratégie convertit ces variables en une forme d’ondes positives, et prend une décision d’achat ou de vente lorsque le sommet ou la vallée d’une onde atteint un certain nombre de fois.
La stratégie est divisée en trois parties, la première partie détecte les changements de couleur des lignes K. Lorsque plusieurs lignes K de la même couleur sont de couleur différente, les ondes de synchronisation se transforment. La deuxième partie détecte si le trafic est supérieur ou inférieur à la moyenne, et lorsque la moyenne est dépassée, les ondes se transforment.
Le code contrôle le fonctionnement des ondes en suivant la direction actuelle des trois ondes, le pic et la position de la ligne K supérieure. Lorsque le pic atteint le paramètre défini, le changement de direction est effectué. Le fonctionnement des ondes synchrones est simulé par ce cycle.
Cette théorie des ondes de syntonie semble logique, et les ondes simulées ont un lien avec le marché réel. Cependant, les tests de cette stratégie montrent que ce sont en fait des résultats aléatoires. La combinaison de variables qui ressemblent le plus aux ondes n’améliore pas les résultats des transactions.
L’un des avantages de cette stratégie est donc de réfuter l’idée fausse selon laquelle les marchés de l’or peuvent prédire le prix de l’or. Les variables sur le marché influencent effectivement les prix, mais elles sont imprévisibles et les décisions prises au hasard peuvent donner des résultats similaires.
Le plus grand risque de cette stratégie est qu’il est difficile de déterminer les gains et les pertes dans les transactions aléatoires. Il est également difficile de prédire les résultats avec différents paramètres et il est impossible de déterminer à l’avance s’il est rentable ou non.
De plus, la théorie de la prévision des ondes de syntonie est fausse en soi. Les variations du marché sont trop complexes pour être simulées par des simulations périodiques simples. La stratégie ne peut donc pas vraiment être appliquée aux transactions en bourse.
Pour réduire le risque, une analyse plus approfondie des résultats aléatoires est nécessaire pour déterminer la portée des paramètres; ou en combinaison avec d’autres méthodes d’analyse pour vérifier les signaux de transaction.
Cette stratégie peut être optimisée dans les directions suivantes:
Cette stratégie montre la nature imprévisible du marché en testant différentes ondes de syntonie. Elle réfute également la théorie erronée selon laquelle les cycles d’ondes sont utilisés pour prédire.
L’étape suivante consiste à augmenter la disponibilité de la stratégie sur le terrain en ajoutant des variables, en combinant des ondes, en définissant des paramètres de stop loss et d’optimisation. Cependant, il est essentiel de comprendre que les changements du marché sont complexes et variables, et qu’ils ne sont pas faciles à prévoir. Ce que nous voulons faire, c’est réduire le risque de hasard, pas de prévoir le marché.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Gentleman-Goat
//@version=5
strategy("Sine Wave Theory",overlay=false, precision = 2, initial_capital = 1000,shorttitle = "SINE_W_T")
var bar_change_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Bar Change")
bar_change_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Bar Change")
bar_change_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Bar Change")
bar_change_trade = input.bool(defval=true,title="Trade",group="Bar Change")
var volume_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Volume")
avg_volume_length = input.int(7,title="Lookback Length",group="Volume")
volume_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Volume")
volume_sine_wave_res = input.timeframe(defval="D",title="Resolution",group="Volume")
volume_trade = input.bool(defval=false,title="Trade",group="Volume")
var coin_flip_wave_direction = input.int(defval=1,title="Starting Wave Direction",group="Coin Flip")
coin_flip_sine_wave_number = input.int(defval=28,title="Sine Wave #",group="Coin Flip")
coin_flip_seed = input.int(defval=1,title="Seed #",group="Coin Flip")
coin_flip_trade = input.bool(defval=false,title="Trade",group="Coin Flip")
avg_volume = ta.sma(volume,avg_volume_length)
//Green or Red Candle
bar_color = close>open ? color.green : color.red
bar_color_time_adj = request.security(syminfo.tickerid, bar_change_sine_wave_res, bar_color)
//Above or Below Average
volume_state = (volume>avg_volume) ? color.blue : color.purple
volume_state_time_adj = request.security(syminfo.tickerid, volume_sine_wave_res, volume_state)
//Coinflip
coin_flip = math.random(0,100,coin_flip_seed)>=50 ? color.teal : color.yellow
var bar_change_wave_count = 0
var volume_wave_count = 0
var coin_flip_wave_count = 0
//Wave Counters
if(volume_state_time_adj[1] != volume_state_time_adj)
volume_wave_count := volume_wave_count + volume_wave_direction
if(bar_color_time_adj[1] != bar_color_time_adj)
bar_change_wave_count := bar_change_wave_count + bar_change_wave_direction
if(coin_flip[1] != coin_flip)
coin_flip_wave_count := coin_flip_wave_count + coin_flip_wave_direction
//Direction changers
if(math.abs(bar_change_wave_count) == bar_change_sine_wave_number and bar_color_time_adj[1] != bar_color_time_adj)
bar_change_wave_direction := bar_change_wave_direction * -1
if(math.abs(volume_wave_count) == volume_sine_wave_number and volume_state_time_adj[1] != volume_state_time_adj)
volume_wave_direction := volume_wave_direction * -1
if(math.abs(coin_flip_wave_count) == coin_flip_sine_wave_number and coin_flip[1] != coin_flip)
coin_flip_wave_direction := coin_flip_wave_direction * -1
//Entry positions
if(bar_change_wave_count==bar_change_sine_wave_number and bar_change_trade==true)
strategy.entry(id="short",direction=strategy.short)
if(bar_change_wave_count==bar_change_sine_wave_number*-1 and bar_change_trade==true)
strategy.entry(id="long",direction=strategy.long)
if(volume_wave_count==volume_sine_wave_number and volume_trade==true)
strategy.entry(id="short-volume",direction=strategy.short)
if(volume_wave_count==volume_sine_wave_number*-1 and volume_trade==true)
strategy.entry(id="long-volume",direction=strategy.long)
if(coin_flip_wave_count==coin_flip_sine_wave_number and coin_flip_trade==true)
strategy.entry(id="short-coinflip",direction=strategy.short)
if(coin_flip_wave_count==coin_flip_sine_wave_number*-1 and coin_flip_trade==true)
strategy.entry(id="long-coinflip",direction=strategy.long)
hline(0, title='Center', color=color.white, linestyle=hline.style_dashed, linewidth=1)
plot(bar_change_wave_count,title="Bar Change", color=bar_color, linewidth=2)
plot(volume_wave_count,title="Volume Average Change", color=volume_state, linewidth=2)
plot(coin_flip_wave_count,title="Coin Flip Change", color=coin_flip, linewidth=2)