2019年4月11日木曜日

最適化で勝率を表示 無料ソース公開

古来より最適化に勝率を出す方法がいろいろと考えられてきました。
今回は OnTester() 関数を使用して、勝率を表示します。

double OnTester()
{
double cWin=0;
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
if(OrderProfit()>0)cWin++;
}
return cWin/OrdersHistoryTotal()*100;
}

このコードをmql4の最後に付けて最適化をします。

OnTester結果に勝率が出力されました。

【ソース解説】
勝率は 勝った回数(cWIN) ÷ 取引数です。
①勝った回数をいれる変数 cWIN を宣言します。
最後に勝率計算で小数が出ますので double にします。

②for ループで取引回数まわします。
 バックテストのOrdersHistoryTotal()はバックテストだけの取引数が入るので便利です

③オーダーを選択します。
 より厳格にするために失敗した時には敗けたと考えて計算します。
 その為にcontinue にしています。

④利益を確認して cWin を加算します。

⑤最後に returnで戻り値を返します。
 return に()カッコを付けない人はほとんどいませんが、カッコつけなくてもいいじゃん!

※ブログ頑張ってかきますね!

0 件のコメント:

コメントを投稿