ポジションの平均pipsを計算するサブルーチン

スポンサーリンク

おはようございます。キリンです。
実は愛用のノーパソが壊れちゃいまして、
一年以内なので保障修理に出すのですが外部に漏れたらまずいデータの消去とか
バックアップとかが大変でした。
情報扱う商売というのはこういうところ神経質にならないといけないですよね><
さて、今日のお題です。
最近こんなコメントをいただきました。

先日、平均取得金額を求める方法を聞いた者ですけど、自分で作ったものでは煩雑過ぎて訳が判らなくなりそうです。ちゃんと動くか心配です。そこで関数を記事にしてもらいたいです。
作っているEAはやはりナンピン+マーチンで、決済方法を模索中です。
なので、マジックナンバーがbuyなら全部同じでロット数が全て違うポジションになってしまいます。
ポジション数を入れると平均取得金額が取り出せる関数を伝授していただきたいです。
具体的にはマーチンゲールでナンピンしていき決済は平均価格+αにしたいのです。
今は最後に取得したポジションからの+αなので、例えば相場が下げに転換してしまった場合は+αを小さくして早めに撤退したいのですが、実際の平均価格が判らないので場合によってはマイナス決済になります。(initの段階で警告が出るようにはしたのですが・・)
一応、平均価格を取れるようにも作ったのですが、ナンピンの回数を制限して一つずつのポジションをパラメーターを基に仮に計算するというプログラムらしからぬグチャグチャでヤボったい形式になっています。
なので、実際と異なる場合も想定されます。
ナンピンの回数を制限しなくても、というかif文や何かしらの関数を使ってスマートに出来ないものか?という事です。

僕の理解度の問題だと思うんですが、全ポジションの平均損益pipsさえ求めれれば問題が解決するということで大丈夫でしょうか。
ということでサブルーチンとして作ってみました。

double AvePips(int magic = -1){   double avePips=0;   double lotsTotal=0;   int ordersTotal = OrdersTotal();      for(int i=0; i<ordersTotal; i++)   {      if(OrderSelect(i, SELECT_BY_POS) == false) break;      if(OrderSymbol() != Symbol()) continue;      if(OrderMagicNumber() != magic && magic!=-1)continue;            int type = OrderType();      int mult;      double lots = OrderLots();      double POINT=Point;       if(Digits==3 || Digits==5)POINT=Point*10;            if(type == OP_BUY)mult=1;      else if(type == OP_SELL)mult=-1;      else continue;            double openPrice = OrderOpenPrice();      double closePrice = OrderClosePrice();            double diffPips = mult*(closePrice - openPrice)/POINT;            lotsTotal += lots;      avePips += diffPips*lots;   }   avePips /= lotsTotal;         return(avePips);}

引数を初期のまま用いれば、全ポジションの平均pipsを返してくれます。
それがマイナスならば、そのマイナス分をプラスにしたところにOrderModifyで指値を入れればいいと思います。
おやっさんさん、こんな内容で大丈夫でしょうか。。。。ちょっと心配ですが。
今日もお読みいただきまして、ありがとうございます。

コメント

  1. FX masa より:

    SECRET: 0
    PASS:
    10Pipsの設定ですかね( ̄∇ ̄+)
    自動もそろそろ学ぼうと思います。
    取引は手動で行いますが・・・・・
    自動で取引を行っている方にも
    ブログで記事が書ければと思いますので
    (`・ω・´)ゞ
    また、遊びに来ますね。
    (○・`ω´・)ノsёё чoμ☆゙

  2. SECRET: 0
    PASS:
    >FX masaさん
    10pips?何の話でしょうか^^;

  3. おやっさん より:

    SECRET: 0
    PASS:
    大変参考になりました。
    本当に記事にしてくれるなんて感激です。
    こういう方法も有ったんですね。
    気が付きませんでした。
    何か案が思いついたらEAを作ってテストするという事自体が一つの趣味になりそうです。
    ところで10Pipsの設定って何ですかね?

タイトルとURLをコピーしました