ご訪問ありがとうございます。
元スーパー店員で不労所得生活を目論むひろしです。
前回
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
TrimPipsプロトになんと
pips表示されるようになります。
逆に、知らないと
いつまで立っても、pips表示されない
ただのエントリーと決済ができる「だけ」
のツール止まりです。
自分用メモです。
変数名も適当です。
pips表示するまで
表示領域
1 2 |
CLabel m_labelPips0; CLabel m_labelCurrentPips; |
座標 y軸
0,20,40
表示するタイミング
OnTick()
※これは、違うような気がする。表示するまでにちょっとタイムラグあり
OnTick()のソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
void OnTick() { if(OrdersTotal() == 0) { AppWindow.m_labelPips0.Text("No Entry"); AppWindow.m_labelCurrentPips.Text("No Entry"); } else { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; m_OOP = OrderOpenPrice(); //選択した注文の注文価格 m_OP = OrderProfit(); m_OC = OrderCommission(); if(OrderType() == OP_BUY) { d_pips0 = MarketInfo(OrderSymbol(), MODE_BID) - m_OOP ; } else { d_pips0 = m_OOP - MarketInfo(OrderSymbol(), MODE_ASK) ; } DigitsValue = MathPow(10, MarketInfo(OrderSymbol(), MODE_DIGITS) - 1); //小数点以下の桁数 // Comment("pair="+OrderSymbol() + " Ask="+Ask+ "MODE_ASK= "+ MarketInfo(OrderSymbol(),MODE_ASK) +" Bid="+Bid+ "OOP=" + m_OOP); //+ m_OOP + "m_OP="+m_OP+" Ask " + Ask + " Bid " + Bid ); d_pips0 *= DigitsValue; if(OrderSymbol() == Symbol()) //現在のチャートと同じ通貨の場合 { bcurrent = true; m_labelCurrentPips += d_pips0; //足し込む } m_totalpips += d_pips0; } if(bcurrent) { AppWindow.m_labelCurrentPips.Text(m_labelCurrentPips + "pip"); if(m_labelCurrentPips < 0) { AppWindow.m_labelCurrentPips.Color(clrRed); } else { AppWindow.m_labelCurrentPips.Color(clrBlue); } } else { AppWindow.m_labelCurrentPips.Text("No Entry"); } // AppWindow.m_labelCurrentPips.Color(clrYellow); // gLabel.Color(clrCyan); AppWindow.m_labelPips0.Text(m_totalpips + "pip"); if(m_totalpips < 0) { AppWindow.m_labelPips0.Color(clrRed); } else { AppWindow.m_labelPips0.Color(clrBlue); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 |
if(OrdersTotal() == 0) { AppWindow.m_labelPips0.Text("No Entry"); AppWindow.m_labelCurrentPips.Text("No Entry"); } //オーダーがなければ、"No Entry"を表示する m_labelPips0が全体のpips m_labelCurrentPips が現チャートのpips |
1 2 |
for(int i = OrdersTotal() - 1; i >= 0; i--) 現在のエントリー数文ループする |
ループ内でOrderSelect()をやったあと
Orderxxxxx()で、該当するオーダーの情報を取得できる
if(OrderType() == OP_BUY)
ロングとショートで計算が異なるので分ける
MarketInfo(OrderSymbol(), MODE_BID) 該当する通貨ペアのBIDを取得
pips取得のため該当する通貨ペアの小数点以下の桁数を取得する
//+——————————————————————+
DigitsValue = MathPow(10, MarketInfo(OrderSymbol(), MODE_DIGITS) – 1); //小数点以下の桁数
今後の課題
・pips表示の前にキャプション(「All」「Current」)を付加する
・ソース整理
※日本語表示(できれば)
・チャート上にエントリー毎にpips表示する
こんなやつ
—–2020/06/19 追記———
pips表示に
Total,Currentを表示
今後の課題
よく考えたら、Currentよりそのチャートの通貨名
を表示したほうがいいので、
Current→”現通貨名”に変更する。
日本語表示は、断念しました。
つぎはこちら
コメント