ご訪問ありがとうございます。
元スーパー店員で不労所得生活を目論むひろしです。
前回
TrimPipsプロト 待機(予約)注文を無視する
TrimPipsプロトの一覧 ご訪問ありがとうございます。 元スーパー店員で不労所得生活を目論むひろしです。 前回 今回は、以下のご質問の対応です。 指値注文(待機注文)に対応していませんでした。 確かに予約注文しただけでPIPS表示されて
リオン式をスタディ中です。
残念ながら、ついついエントリー
してしまい、速攻で含み損に
なってしまいます。
そこで、「TrimPipsプロト」に
決済済みを表示するようにしました。
そうすることで、「TrimPipsプロト」
起動後画面に表示されているPIPS表示の
合計がわかるようになります。
決済済み:起動後に決済されたPIPS
現通貨計:起動後に決済されたPIPS+CurrentのPIPS
※「PIPS消去」をクリックすると「決済済み」はクリアされます。
※「TrimPipsプロト」を使用せずに決済した分は、反映されません。
うーーーん、ちょっと仕様的にイマイチなので
リリースは控えます。
TrimPips.mq4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void OnTick() { ・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・ d_exittotal = AppWindow.GetExitTotalPips(); AppWindow.m_labelExitPips.Text("決済済み "+d_exittotal+ Str_Pips); d_currentpips += d_exittotal; AppWindow.m_labelExitTotalPips.Text("現通貨計 " + d_currentpips + Str_Pips); } |
AppWindow.mqh
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 80 81 82 83 84 85 |
CLabel m_labelExitPips; //決済済みPIPS CLabel m_labelExitTotalPips;//総合計PIPS bool CreatelabelExitPips(); bool CreateLabelExitTotalPips(); //--------------------------- // 20 決済済 //--------------------------- // 20 総合計 //--------------------------- bool CPanelDialog::Create(const long chart, const string name, const int subwin, const int x1, const int y1, const int x2, const int y2) { ・・・・・・・・・・・・・・・ if(!CreatelabelExitPips()) return false; if(!CreateLabelExitTotalPips()) return false; return true; } //+------------------------------------------------------------------+ //| 決済済みPIPS | //+------------------------------------------------------------------+ bool CPanelDialog::CreatelabelExitPips() { int x1 = ClientAreaWidth() / 8; int x2 = ClientAreaWidth(); if(!m_labelExitPips.Create(m_chart_id, m_name + "LabelExitPips", m_subwin, x1, m_pips_Exit_y, x2, m_pips_Current_y)) return false; if(!m_labelExitPips.FontSize(13)) return false; if(!m_labelExitPips.Text("")) return false; if(!Add(m_labelExitPips)) return false; return true; } //+------------------------------------------------------------------+ //| 決済済み総合計pips | //+------------------------------------------------------------------+ bool CPanelDialog::CreateLabelExitTotalPips() { int x1 = ClientAreaWidth() / 8; int x2 = ClientAreaWidth(); if(!m_labelExitTotalPips.Create(m_chart_id, m_name + "LabelExitTotalPips", m_subwin, x1, m_pips_Exit_y + m_pips_Current_y, x2, m_pips_Current_y)) return false; if(!m_labelExitTotalPips.FontSize(13)) return false; if(!m_labelExitTotalPips.Text("")) return false; if(!Add(m_labelExitTotalPips)) return false; return true; } //+------------------------------------------------------------------+ //|決算済みPIPSの取得 | //+------------------------------------------------------------------+ double CPanelDialog::GetExitTotalPips(void) { return(ExitCurrency.GetExitTotalPips()); } //+------------------------------------------------------------------+ |
ExitCurrency.mqh
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
public: void ClearExitTotalPips(); //m_ExitTotalPipsをクリアする double GetExitTotalPips(); private: bool CallOrderClose(int ticet, double orderlots, double closeprice,double openprice); double m_ExitTotalPips ; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CExitCurrency::exit() // --- 3 { double m_OOP; double m_OP; double m_OC; double d_pips0; Print("選択した注文の決済価格 :",OrderClosePrice()); if(OrdersTotal() == 0) Alert("not Order"); else { for(int i = OrdersTotal() - 1; i >= 0; i--) { /* if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0)) return false; Sleep(10); */ if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(!CallOrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), OrderOpenPrice())) return false; Sleep(10); } } return true; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool CExitCurrency::exit(string str_symbol) // --- 4 { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol() != str_symbol) continue; // if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0)) if(!CallOrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), OrderOpenPrice())) return false; Sleep(10); } return true; } //+------------------------------------------------------------------+ //|決済する際に決算済みPIPS(m_ExitTotalPips)を足し込む | //+------------------------------------------------------------------+ bool CExitCurrency::CallOrderClose(int ticet, double orderlots, double closeprice,double openprice) { double exitpips; double DigitsValue; if(!OrderClose(ticet, orderlots,closeprice, 0)) return false; if(OrderType() == OP_BUY) { exitpips = closeprice - openprice; } else { exitpips = openprice - closeprice; } DigitsValue = MathPow(10, MarketInfo(OrderSymbol(), MODE_DIGITS) - 1); //小数点以下の桁数 exitpips *= DigitsValue; m_ExitTotalPips += exitpips; Print("決算済みPIPS :" ,m_ExitTotalPips ); return true; } //+------------------------------------------------------------------+ //| 決算済みPIPSのクリア | //+------------------------------------------------------------------+ void CExitCurrency::ClearExitTotalPips(void) { m_ExitTotalPips = 0; } //+------------------------------------------------------------------+ //|決算済みPIPSの取得 | //+------------------------------------------------------------------+ double CExitCurrency::GetExitTotalPips(void) { return(m_ExitTotalPips); } //+------------------------------------------------------------------+ |
最後までご覧いただきありがとうございます。
ダウンロードはこちら→「TrimPipsプロトダウンロード申請」
コメント
こちらの記事を拝見させていただきました。
プロコン改に似た使いやすいものをありがとうございます。
そこでこちらのソースコードをmq5に変換してMT5上でも使えるようにしていただけたら嬉しく思います。
お時間があり、大変でなければぜひお願いしたいです。
よろしくお願いします。
なるほど、たしかにそうですね。
検討します。