FXでポジションを建てて、逆行したら建玉を増やす。無敵の手法が「ナンピンマーチン」だ。
ナンピンとマーチンゲール法を組み合わせて絶対に損を出さない必勝法(資金が無尽蔵なら)
例えば、ドル円140.00円で1枚ロングしたら、次は139.90でロング、139.80でロング・・・・・とポジションが損を抱えていたらさらにポジションを建てて無限に平均取得単価を下げていく。
平均取得単価、例えばこんな感じでポジションを1枚づつ建てていくとしたなら
140.00 1枚
139.90 1枚
139.80 1枚
139.70 1枚
139.60 1枚
ポジション平均取得単価 139.8 5枚
計算式 (A + B + C + D + E)/ 5
※ ポジションABCDE、計5ポジを持つとき
平均取得単価、例えばこんな感じでポジションを2倍で建てていくとしたなら
140.00 1枚
139.90 2枚
139.80 4枚
139.70 8枚
139.60 16枚
ポジション平均取得単価 139.68 31枚
計算式 (A*1 + B*2 + C*4 + D*8 + E*16)/ 31
※ ポジションABCDE、計5ポジを持つとき
※ 31はポジションの総枚数
ナンピンのみなら穏やかにポジション総数が増える。
ナンピンマーチンゲールなら爆発的にポジション総数が増える。
ナンピンマーチンなら140.0で買いはじめても常に10PIPS上げればポジションが含み益に変わるのです。
ナンピンマーチンを使えば含み益をほとんど無効にできるぞ!
Table of Contents
粉飾決算とは?
粉飾決算とは「赤字決算を黒字決算であるかのよう見せかけること」です。
ナンピンマーチンも同じなんだ😭
その手法に優位性があるなしにかかわらず、ぱっと見めちゃくちゃ強そうにみえる。
初心者をはめ込むにはもってこいの手法です。
ためしに適当なストラテジーを粉飾決算させてみましょうw
移動平均線のゴールデンクロスストラテジーをつくる
手法はなんでもいい。
エントリールール
- 移動平均線のゴールデンクロスでロング
決済ルール
獲得PIPSで利食い損切り
- 利食い 5PIPS
- 損切 5PIPS
USDJPY 5分足 (移動平均線14、28のゴールデンクロスでロング、デッドクロスでショート)
トレーディングビューの空のストラテジーを作りました。獲得PIPSに改変します。
エントリールールをつくる
エントリールールは移動平均線のゴールデンクロスでロング
- 名前の変更「マイストラテジー」→「移動平均線ゴールデンクロス」
- BUY条件を is_buy に変更
- ショートを削除
1 2 3 4 5 6 |
//@version=5 strategy("移動平均線ゴールデンクロス", overlay=true) is_buy = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (is_buy) strategy.entry("BUY", strategy.long) |
これでエントリールールの完成。
次は決済ルール
決済ルールをつくる
決済ルールは±5PIPSで損切利確
計算結果を 静的変数 entry_price に代入している。
現在のローソク足の終値(close)を entry_price 変数に代入しています。
データの保存メモリー
プログラムは0と1の数字の世界なのでデータは数字、変形する数字なので変数(へんすう)
英語ではvariable(ヴァリアブル)と呼びます。この言葉はスプラトゥーンでしか聞かないのではないでしょうか?
変数の=とプログラミングの=は意味が違います。
算数的な = はプログラミングでは、 == イコールイコールと書きます。
Pine Script のvar は静的な変数です。
Pine Script はローソク足が切り替わると変数の中身はすべてリセットされます。
データが更新された時でも「状態を維持する」ことができます。
var をつけるとローソク足が切り替わっても変数の中身をそのまま保存できます。
もしもポジション数が0のときは、エントリー価格の変数の値を更新する
Pine Scriptではstrategy.position_sizeにロング保有状態なら正の小数、ショート保有状態なら負の小数が入ってる
Pine Scriptではトレードの機能を呼び出す場合はstrategy.を使う
Pine Scriptでは条件分岐にはif ~ と改行してスペース4個つけると条件分岐式を書ける
Pine Scriptの静的変数に再代入(値の更新)をする場合は「:=」コロンイコールをつかう
5PIPで損切利確
現在のシンボルの最小ティック値です。
移動平均線ゴールデンクロスナンピンマーチン無し
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//@version=5 strategy("移動平均線ゴールデンクロス", overlay=true) is_buy = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (is_buy) strategy.entry("BUY", strategy.long) var entry_price = close if strategy.position_size == 0 entry_price := close if strategy.position_size > 0 if entry_price + syminfo.mintick * 50 < close strategy.close_all() if entry_price - syminfo.mintick * 50 > close strategy.close_all() |
ドル円 5分足 (移動平均線14、28のクロスでロングエントリー ±5PIPSで決済)
今まで黙っていたけど
じつはゴールデンクロスは優位性が無い
ググれば論文も見つかるので詳しくは調べてみよう。
優位性がなくてもナンピンマーチンならどうなるかやってみよう。
まずは決済ルールからマイナス5PIPSで決済ルールを削除します。(これで理論的に勝ちのみになる)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//@version=5 strategy("移動平均線ゴールデンクロス", overlay=true) is_buy = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (is_buy) strategy.entry("BUY", strategy.long) var entry_price = close if strategy.position_size == 0 entry_price := close if strategy.position_size > 0 if entry_price + syminfo.mintick * 50 < close strategy.close_all() |
ドル円 5分足 (移動平均線14、28のクロスでロングエントリー +5PIPSで決済)
移動平均線ゴールデンクロスナンピンバージョン
最大ポジション数を20に設定
エントリー価格から平均取得単価へ変更。
最後のエントリー価格から10PIPS逆行でポジションを追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//@version=5 strategy("移動平均線ゴールデンクロス", overlay=true,pyramiding = 20) is_buy = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (is_buy) strategy.entry("BUY", strategy.long) var entry_price = close if strategy.position_size == 0 entry_price := close if strategy.position_size > 0 if strategy.position_avg_price + syminfo.mintick * 50 < close strategy.close_all() if entry_price - syminfo.mintick * 100 > close strategy.entry("BUY", strategy.long) entry_price := close |
ドル円 5分足 (移動平均線14、28のクロスでロングエントリー 平均取得単価+5PIPSで決済 10PIPS逆行でポジションを追加)
移動平均線ゴールデンクロスナンピンマーチンバージョン
最大5段目で32LOTS追加
1 |
lots = strategy.position_size == 1? 1:strategy.position_size <= 2?2:strategy.position_size <= 4?4:strategy.position_size <= 8?8:strategy.position_size <= 16?16:32 |
注文数量を現在のロット数の2倍に設定
ソースコード全文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//@version=5 strategy("移動平均線ゴールデンクロス", overlay=true,pyramiding = 50) is_buy = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if strategy.position_size == 0 if (is_buy) strategy.entry("BUY", strategy.long) var entry_price = close if strategy.position_size == 0 entry_price := close lots = strategy.position_size == 1? 1:strategy.position_size <= 2?2:strategy.position_size <= 4?4:strategy.position_size <= 8?8:strategy.position_size <= 16?16:32 if strategy.position_size > 0 if strategy.position_avg_price + syminfo.mintick * 50 < close strategy.close_all() if entry_price - syminfo.mintick * 100 > close strategy.entry("BUY", strategy.long,qty = lots) entry_price := close |
ドル円 5分足 (移動平均線14、28のクロスでロングエントリー 平均取得単価+5PIPSで決済 10PIPS逆行でポジションを2倍追加)
ナンピンマーチンなしナンピンマーチンあり比較
ソースコードでごちゃごちゃしているので再度比較
ナンピンマーチンなし
ナンピンあり
ナンピンマーチン
どんなロジックでも最強変換
”ナンピンマーチンぱっと見最強”
単ポジでのリターンがマイナスの移動平均線ゴールデンクロスがリターンプラスに粉飾できた。
最後のリスクを十分しのげる証拠金があれば絶対に勝てる。
逆に、リスクをしのげる十分な証拠金がないとまるで使いものにならない。
友達に勝てるかどうかを聞かれたら
まあたぶん勝てるけど、おすすめしないよ
重要なのはボラティリティの予測、通貨ペア、執行コスト
ボラティリティの予測
予測した値幅に収まるレンジ相場なら勝てる。だけどこのボラティリティの予測ってギャンブルだよね。人によってナンピンマーチンで勝てたり負けたりするのはこのボラティリティの予測の精度。
通貨ペアの選択
今回はドル円でやってみたけどGOLDのナンピンマーチンが人気。
執行コスト
ナンピンマーチン自体は悪くはない。
しかし執行コストを考えると
目に見えないマイナス期待値がどんどん積み上がる
最悪の結果になるのはすぐに予想できる。
執行コストとはポジションを追加、ポジションを決済するときの手数料です。
例)
スプレッド
スリッページ
外部手数料
期待値が単ポジでもプラスなら?
もしも1ポジ目、2ポジ目、3ポジ目の合計のリターンが見込まれるならロジックならありですね。
個人的に、リスクが高すぎるので使うことはないですが、ナンピンマーチンが好きな人はありです。
優位性があるロジックにナンピンマーチンを組み合わせたらどうなるかを次回の記事でやってみたいと思います。
まとめ
ナンピンマーチンを検証してみたらなんとも言えない結果になった。
実際にナンピンマーチンを追加すると、
利益が増えた
でもその代わりに
リスクがでかくなった
使い方次第の諸刃の剣です。
次回は下の記事です。
RSI逆張り+ダブルモメンタムフィルターでナンピンマーチンを作ります。
BybitがGoogleのIPアドレス規制をしているためです。国内のVPSなら使…
自分のbotで使ってるAPIキーを使用しているんですが、 You have br…
pybit 最新版にコードを変更しました。コードとrequirements.tx…
お返事ありがとうございます。はい。pybit==2.3.0になっております。
コードはあっていると思います。rewuirements.txtは「pybit==…