web-dev-qa-db-ja.com

Tradingview Pineスクリプト-カスタムボリュームインジケーターを組み込みVolのように動作させるにはどうすればよいですか

カスタムボリュームインジケーターを作成しましたが、グラフに適用した場合、組み込みのインジケーターのように自動スケーリングされず、グラフパネルの下部に自動的に貼り付けられません。側部。

これらすべてを行う方法はありますか?

元のインジケーターコードにも助けが見つかりませんでした。例えば。 format.volumeを適用しようとすると、コンパイルがまったく拒否されました。

以下は私のコードです、オリジナルはその下にあります:

//This inddicator will show volume inversely. So if you are looking at an Altcoin, it will show volume in BTC, if you are looking at for example BTC/USD it will show volume in USD and so on. Works with all altcoins and fiat pairs.
//I find this most useful when shopping for alts to quickly get an idea of their liquidity.

//title the indicator and dont use decimals. (Otherwise when viewing fiat volume you get unreadably large numbers) you can change this in the settings dialog tho if you want.
study("Vol in Base asset 20MA", precision=0)

//Make the moving average user configurable
showMA = input(true)

//Get volume for current bar and multiply with vwap
vInverse = volume * vwap

//Plot fiat volume.
plot(vInverse, color = orange, title="VolumeBTC", style=columns, transp=65)

//Plot 20 candle moving average (changable in settings)
plot(showMA ? sma(vInverse,20) : na, color = white, title="Volume MA", style=area, transp=65)

元のコード:

//@version=4
study(title="Volume", shorttitle="Vol", format=format.volume)
showMA = input(true)
barColorsOnPrevClose = input(title="Color bars based on previous close", type=input.bool, defval=false)

palette = barColorsOnPrevClose ? close[1] > close ? color.red : color.green : open > close ? color.red : color.green

plot(volume, color = palette, style=plot.style_columns, title="Volume", transp=65)
plot(showMA ? sma(volume,20) : na, style=plot.style_area, color=color.blue, title="Volume MA", transp=65)
4
user3675185

あなたの質問への短い答えはノーです、現在あなたが望むすべてをすることは不可能です。組み込みのボリュームインディーズが行うことを行うには、次の2つの必要なものが必要です。

  1. チャートにバーが表示される松の可視性(ボリューム列の高さを動的にスケーリングできるようにするため)。
  2. インディケータのスケールを自動スケーリングしながら、チャートの下部にインディーを固定する方法。

このコードは、Michelのscale.noneアイデアも使用しますが、上部に非表示のプロットを追加します。これにより、列自体の値をスケーリングせずに、垂直方向のスペースでの列の最大の高さを決定できるため、正しい読み取りを取得できます。 。 *設定/入力 "を使用すると、次のことができます。

  • 最上位の列を占める垂直スペースの最大パーセンテージを指定します。
  • 列のスケーリングに使用される過去の最大値の決定方法を指定します。つまり、を使用します。
    • 史上最高、または
    • 最後のnバーの最も高い列(n = 400)。この2番目の方法は、最近のチャートコンテキストによりよく適合します。

enter image description here

//This indicator will show volume inversely. So if you are looking at an Altcoin, it will show volume in BTC, if you are looking at for example BTC/USD it will show volume in USD and so on. Works with all altcoins and fiat pairs.
//I find this most useful when shopping for alts to quickly get an idea of their liquidity.

//title the indicator and dont use decimals. (Otherwise when viewing fiat volume you get unreadably large numbers) you can change this in the settings dialog tho if you want.
//@version=4
study("Vol in Base asset 20MA", "", true, format.volume, 0, scale.none)

//Make the moving average user configurable
HIM1 = "1. Historical High"
HIM2 = "2. Highest in last..."
showMA = input(true)
scaleFactor = 100 / input(30, "% of vertical space used", step = 10, maxval = 100)
hiMethod = input(HIM2, "High point method", options = [HIM1, HIM2])
hiMethod2Len = input(400, "  2. Length", minval = 2, step = 100)

//Get volume for current bar and multiply with vwap
vInverse = volume * vwap

//Plot fiat volume.
plot(vInverse, color = color.orange, title="VolumeBTC", style=plot.style_columns, transp=0) //Originally: transp=65

//Plot 20 candle moving average (changable in settings)
plot(showMA ? sma(vInverse,20) : na, color = color.white, title="Volume MA", style=plot.style_area, transp=65)

//Plot high line to scale down the columns.
var histHi = 0.
histHi := max(histHi, nz(vInverse, histHi))
limit = hiMethod == HIM1 ? histHi : highest(vInverse, hiMethod2Len)
plot(limit * scaleFactor, "Historical High", #00000000)

これは次のようなものになります: enter image description here

列のベースをグラフの下部に移動するには2つの方法がありますが、理想的な方法はありません。

  1. グラフのSettings/Appearance/Bottom marginを使用してグラフの下マージンを0%に設定しますが、グラフバーは引き続き列と重なります。
  2. スケールを上下にドラッグして(赤い矢印)、インディーズのスケールを少し圧縮します。次に、グラフの列(緑の矢印)をつかんで下に移動しますが、これによりインディーズのスケールが固定されるため、シンボルを変更したときにボリュームのサイズが変更されず、ボリュームが増減します。

enter image description here

垂直スペースの下部にインジケーターを合わせる機能は、潜在的な改善としてTVによって識別されていますが、ETAはまだありません。

1
PineCoders-LucF

あなたが見逃したいくつかの追加のものがそこにあります。

まず、使用済みの松のバージョンを入れてください。そのための特別な文字列があります:_//@version=4_文字列が設定されていない場合、コードはformatパラメータを持たないバージョン1と見なされます。

自動スケールをオフにするには、scaleパラメータを_scale.none_に設定する必要があります。 overlay paramがtrueの場合にのみ機能することに注意してください。

バージョン4を使用するには、実際の色の名前の前に_color._の接頭辞を付ける必要があります:_color.orange_、プロットのスタイルの接頭辞を_plot.style__にする必要があります:_plot.style_area_

_// NOTE: THE STRING WITH VERSION BELOW IS IMPORTANT!
//@version=4

// to turn the scale off scale.none is used. Note, that it might be only applied
// if the overlay param is 'true'
study(title="Volume", shorttitle="Vol", format=format.volume, overlay=true, scale=scale.none)

showMA = input(true)

vInverse = volume * vwap

// colors must have the prefix 'color.' before the color names
plot(vInverse, color = color.orange, title="VolumeBTC", style=plot.style_columns, transp=65)
plot(showMA ? sma(vInverse,20) : na, color = color.white, title="Volume MA", style=plot.style_area, transp=65)
_
0
Michel_T.