倍マーチンアルゴリズムと条件分岐

例えば、持ってるポジションから逆方向に0.6%以上動いたら、倍マーチンを打つと仮定しよう。

ポジション:109.958円
現在値:109.327円


# 手持ち資金が50万円とする
$cash = 500000;
$leverage = 25;

$lot = 200000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;
# 現在価格
$current = 109.327;

if(abs($current – $dollyen)/$current > 0.006){
echo “倍マーチン”;
} else {
echo “ポジション:” . $dollyen.”円
“;
echo “ロット:”. $lot. “
“;
$sum = $dollyen * $lot * $long;
$multi = $sum / $cash;
if($multi < 25){ echo "投資額:" .$sum. "円
“;
echo “

現在値:” . $current . “円

“;
$total = $current * $lot * $long;
$deposit = $cash + ($total – $sum);
echo “口座残高:” . $deposit . “円

“;
$rmargin = $total * 0.04;
echo “必要証拠金:” .$rmargin . “円
“;
$mrate = ($cash + ($total – $sum)) / $rmargin;
echo “証拠金維持率:” .$mrate * 100 . “%
“;

if ($mrate < 0.5){ echo "ロスカットが発生しました"; } else { echo "※証拠金維持率が50%を割とロスカットとなります。ロスカットに注意してください。"; } } else { echo "レバレッジを25倍以下に抑えてください"; } } [/php]

例えばこれ、連続3回までの倍マーチン自動アルゴリズムと考えると、
1 + 2 + 4 + 8 = 15 だから、
初回のエントリーは、現在資産 * 25 / 15 = 1.6
手持ちが50万だったら、1ロットってことになる。
つまり、ドル円で考えるなら、種が60万くらいないと、連続3回の倍マーチンが成立しないってことだ。
1ロットで0.6%なら6000円くらい。手持ち50万で6000円の勝ち負けなら、許容範囲というか、妥当なところだろう。

倍マーチンはとりあえず0.6%としておこう。
考えなければいけないのは、
初回のエントリーのタイミングと、利確のタイミング。
倍マーチンのラインが0.6%なら、損切の2倍ルールを応用すると、1.2%で利確、となる。しかし、0.6の1.2%だとドル円だと厳しいな。。あんまりチャリンチャリンしなさそうだ。
エントリーのタイミングは、フィボナッチ、移動平均線など議論しつくされているからな~ ただ、自動売買のエントリーとなると話がちょっと違うか。イメージとしては標準偏差を使うイメージなんだが。。

マーチンゲールのアルゴリズムを考える

マーチンゲールとは?

追加のエントリーをする際、枚数(ロット)を増やしていく手法です。

例
1枚(1ロット) ↓
↓
2枚(2ロット) ↓
↓
4枚(4ロット) ↓
↓
8枚(8ロット) ↓
↓

というように、エントリーごとに枚数を「倍、倍」にしていきます。

100円で最初のポジションを持った後に下落し、
98円でポジションを持つ際に倍の2枚でエントリーします。

そうすることで、
100円 + 98円 + 98円 = 平均98.67円
というところまで、利益となるボーダーラインが下がってきます。
先ほどの「ナンピン」は99円でしたので、より早く利益確定を狙うことができます。

よって、一回ポジションを持ったら、利益になるまで諦めない手法と言えるでしょう。

つまり、(1)ポジションと逆にいった場合に、エントリーをするということだ。
よって、どれくらい逆にいった場合にエントリーするか、を設定する必要がある。
ナンピンの場合は、単純にエントリーだが、マーチンゲールの場合は、エントリーのロットが増える。よって、(2)最初のエントリーの倍のロットでエントリーする必要がある。

この(1)、(2)をコードに反映させる必要がある。
うむ。。。これ、以外と頭使うなー。

レバレッジを考慮したFXロジックを考える

# 手持ち資金が50万円とする
$cash = 500000;

# レバレッジ25倍とする
$leverage = 25;

$lot = 200000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;

# 現在価格
$current = 108.937;

echo "ポジション:" . $dollyen."円
"; echo "ロット:". $lot. "
"; $sum = $dollyen * $lot * $long; $multi = $sum / $cash; if($multi < 25){ echo "投資額:" .$sum. "円
"; echo "
現在値:" . $current . "円
"; $total = $current * $lot * $long; $deposit = $cash + ($total - $sum); echo "口座残高:" . $deposit . "円

"; $rmargin = $total * 0.04; echo "必要証拠金:" .$rmargin . "円
"; $mrate = ($cash + ($total - $sum)) / $rmargin; echo "証拠金維持率:" .$mrate * 100 . "%
"; if ($mrate < 0.5){ echo "ロスカットが発生しました"; } else { echo "※証拠金維持率が50%を割とロスカットとなります。ロスカットに注意してください。"; } } else { echo "レバレッジを25倍以下に抑えてください"; }

なるほどー
次はナンピン・マーチンゲールをプログラミングで考えたい

FX証拠金維持率のロジック

続けて書いていきます。


# 手持ち資金が50万円とする
$cash = 500000;

# レバレッジ25倍とする
$leverage = 25;

# 1ロット1万通貨
$lot = 10000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;

# 現在価格
$current = 109.937;

echo “ポジション:” . $dollyen.”円
“;
echo “ロット:”. $lot. “
“;
$sum = $dollyen * $lot * $long;
echo “投資額:” .$sum. “円
“;
echo “

現在値:” . $current . “円

“;
$total = $current * $lot * $long;
$deposit = $cash + ($total – $sum);
echo “口座残高:” . $deposit . “円

“;
$rmargin = $total * 0.04;
echo “必要証拠金:” .$rmargin . “円
“;
$mrate = ($cash + ($total – $sum)) / $rmargin;
echo “証拠金維持率:” .$mrate * 100 . “%
“;

if ($mrate < 0.5){ echo "ロスカットが発生しました"; } else { echo "※証拠金維持率が50%を割とロスカットとなります。ロスカットに注意してください。"; } [/code]

10万通貨買って、1円値下がりだとすると、

なるほど、10万通貨で1円値下がりってことは、10万円動くってことか。
これにレバレッジの概念を追加する。

$multi = $sum / $cash;
echo $multi;

-> 21.9916
50万円、10ロットでレバレッジ21倍だから、
100万円で20ロットぐらいか。なるほどー

PHPでFXを考えよう

まず適当に考えます。手持ち50万として、ドル円が109.958円の時、1ロットは

# 手持ち資金が50万円とする
$margin = 500000;

# レバレッジ25倍とする
$leverage = 25;

# 1ロット1万通貨
$lot = 10000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;

$total = $dollyen * $lot * $long;
echo $total;

->1099580
当然、109万9580円です。ここから必要証拠金を考えます。

取引単位は1ロットからで、4万円とあります。

よって、requried marginを4%と置きます。

$lot = 10000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;

$total = $dollyen * $lot * $long;
echo $total. "<br>";
$rmargin = $total * 0.04;
echo $rmargin;

-> 43983.2
必要証拠金は43,983円

証拠金維持率は、手持ちの金額から必要証拠金を割ったものだから、

$total = $dollyen * $lot * $long;
echo $total. "<br>";
$rmargin = $total * 0.04;
echo $rmargin . "<br>";
$mrate = $cash / $rmargin;
echo $mrate * 100;

1099580
43983.2
1136.7976863893
証拠金維持率は1136.79%
つまり、50万もってて、ドル円109.958を1ロット、ロングでもったら、証拠金維持率は1136.79%になるということだ。

>金融商品取引業等に関する内閣府令の「FX証拠金規制」により、個人のお客様からの外国為替証拠金取引においては、取引金額の4%以上の証拠金をお預け入れいただくことが義務付けられております。
なるほど、この必要証拠金4%ってのは、金商法の規制ってわけね。

で、肝心のロスカットはというと、

必要証拠金が50%を下回ると、強制ロスカットというわけですね。


# 手持ち資金が50万円とする
$cash = 500000;

# レバレッジ25倍とする
$leverage = 25;

# 1ロット1万通貨
$lot = 10000;
$long = 1;
$short = -1*0;

# ドル円価格
$dollyen = 109.958;

echo “ポジション:” . $dollyen.”円
“;
$total = $dollyen * $lot * $long;
echo “投資額:” .$total. “円
“;
$rmargin = $total * 0.04;
echo “必要証拠金:” .$rmargin . “
“;
$mrate = $cash / $rmargin;
echo “証拠金維持率:” .$mrate * 100 . “%
“;

if ($mrate < 0.5){ echo "ロスカットが発生しました"; } else { echo "ロスカットに注意してください。" } [/php] こうか?? 必要証拠金は、現在の値によって変化するからちょっと違うな。