// EAの状態を表示アレンジ // EAの状態を表示 bool Pass = true; int CT = 0; int ChartWarning; // この変数は、チャート表示やチャートコメント表示と連動 // OnInit()内 if (IsTesting() == false) { EA_test(); EventSetTimer(60); } // OnDeinit()内 EventKillTimer(); ObjectDelete("EA_label"); // OnTick()内 if (IsTesting() == false) { CT++; EA_test(); } //+------------------------------------------------------------------+ //| EAの状態を表示(英語表記) | //+------------------------------------------------------------------+ void OnTimer() { if (VisualMode) { EA_test(); if (CT == 0) { EA_label ("Updating...", clrYellow); ChartWarning = 1; // この変数は、チャート表示やチャートコメント表示と連動 ChartSet2(); CT = 0; } } } void EA_test() { string label1 = "EA is running"; string label2 = "Authentication Failed"; string label3 = "No trade allowed"; string label4 = "Network Errors"; string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; if (Pass == false) { EA_label (label2, clrOrangeRed); ChartWarning = 2; ChartSet2(); } else if (IsTradeAllowed() == false) { EA_label (label3, clrOrangeRed); ChartWarning = 3; ChartSet2(); } else if (IsConnected() == false) { EA_label (label4, clrOrangeRed); ChartWarning = 4; ChartSet2(); } else { EA_label (label1, clrLime); ChartWarning = 0; ChartSet2(); } } void EA_label(string text, color clr) { int x = (int)NormalizeDouble(26 * DPIAdjust, 0); // 別途DPI換算コードで調整 int y = (int)NormalizeDouble(18 * DPIAdjust, 0); // 別途DPI換算コードで調整 ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, x); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, y); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 10); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } // 状態によるチャート配色変更 void ChartSet2() { color ChartWar1 = ChartWarning >= 2? clrDarkGray : clrWhite; color ChartWar2 = ChartWarning >= 2? clrDimGray : clrOlive; color ChartWar3 = ChartWarning >= 2? clrSilver : clrBeige; if (!IsTesting()) { ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrBlack); ChartSetInteger(0, CHART_COLOR_FOREGROUND, ChartWar1); ChartSetInteger(0, CHART_COLOR_GRID, clrLightSlateGray); ChartSetInteger(0, CHART_COLOR_CHART_UP, ChartWar2); ChartSetInteger(0, CHART_COLOR_CHART_DOWN, ChartWar2); ChartSetInteger(0, CHART_COLOR_CANDLE_BULL, clrBlack); ChartSetInteger(0, CHART_COLOR_CANDLE_BEAR, ChartWar3); ChartSetInteger(0, CHART_COLOR_CHART_LINE, ChartWar2); ChartSetInteger(0, CHART_COLOR_VOLUME, ChartWar2); ChartSetInteger(0, CHART_COLOR_ASK, clrRed); ChartSetInteger(0, CHART_COLOR_STOP_LEVEL, clrRed); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| EAの状態を表示 右上・チャートやチャートコメントと連動 | //+------------------------------------------------------------------+ void OnTimer() { EA_test(); if (CT == 0) EA_label ("更新待機中", clrYellow); ChartWarning = 1; // この変数は、チャート表示やチャートコメント表示と連動 ChartSet2(); CT = 0; } void EA_test() { string label1 = "EA稼働中"; string label2 = "口座認証失敗"; string label3 = "トレード不許可"; string label4 = "通信エラー"; string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; if (Pass == false) { EA_label (label2, clrOrangeRed); ChartWarning = 2; ChartSet2(); } else if (IsTradeAllowed() == false) { EA_label (label3, clrOrangeRed); ChartWarning = 3; ChartSet2(); } else if (IsConnected() == false) { EA_label (label4, clrOrangeRed); ChartWarning = 4; ChartSet2(); } else { EA_label (label1, clrLime); ChartWarning = 0; ChartSet2(); } } void EA_label(string text, color clr) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, 6); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 24); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } // 状態によるチャート配色変更 void ChartSet2() { color ChartWar1 = ChartWarning >= 2? clrDarkGray : clrWhite; color ChartWar2 = ChartWarning >= 2? clrDimGray : clrOlive; color ChartWar3 = ChartWarning >= 2? clrSilver : clrBeige; if (!IsTesting()) { ChartSetInteger(0, CHART_COLOR_BACKGROUND, clrBlack); ChartSetInteger(0, CHART_COLOR_FOREGROUND, ChartWar1); ChartSetInteger(0, CHART_COLOR_GRID, clrLightSlateGray); ChartSetInteger(0, CHART_COLOR_CHART_UP, ChartWar2); ChartSetInteger(0, CHART_COLOR_CHART_DOWN, ChartWar2); ChartSetInteger(0, CHART_COLOR_CANDLE_BULL, clrBlack); ChartSetInteger(0, CHART_COLOR_CANDLE_BEAR, ChartWar3); ChartSetInteger(0, CHART_COLOR_CHART_LINE, ChartWar2); ChartSetInteger(0, CHART_COLOR_VOLUME, ChartWar2); ChartSetInteger(0, CHART_COLOR_ASK, clrRed); ChartSetInteger(0, CHART_COLOR_STOP_LEVEL, clrRed); ChartSetInteger(0, CHART_SHIFT, true); //ChartSetDouble(0, CHART_SHIFT_SIZE, ShiftPer); ChartSetInteger(0, CHART_AUTOSCROLL, true); //ChartSetInteger(0, CHART_SHOW_DATE_SCALE, true); // これを入れるとなぜか表示範囲が狭くなる //ChartSetInteger(0, CHART_SHOW_PRICE_SCALE, true); // これを入れるとなぜか表示範囲が狭くなる ChartSetInteger(0, CHART_FOREGROUND, false); ChartSetInteger(0, CHART_SHOW_GRID, false); ChartSetInteger(0, CHART_SHOW_ONE_CLICK, false); ChartSetInteger(0, CHART_SHOW_OHLC, false); ChartSetInteger(0, CHART_SHOW_PERIOD_SEP, true); ChartSetInteger(0, CHART_SHOW_ASK_LINE, true); ChartSetInteger(0, CHART_SCALE, 3); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| EAの状態を表示 右上シンプルバージョン | //+------------------------------------------------------------------+ void OnTimer() { EA_test(); if (CT == 0) EA_label ("更新待機中", clrYellow); CT = 0; } void EA_test() { string label1 = "EA稼働中"; string label2 = "口座認証失敗"; string label3 = "トレード不許可"; string label4 = "通信エラー"; string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; EA_label (label1, clrLime); if (Pass == false) EA_label (label2, clrOrangeRed); else if (IsTradeAllowed() == false) EA_label (label3, clrOrangeRed); else if (IsConnected() == false) EA_label (label4, clrOrangeRed); } void EA_label(string text, color clr) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, 6); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 24); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| EAの状態を表示(右上Ver) ※EA_name()とセットで使用 | //+------------------------------------------------------------------+ void OnTimer() { EA_test(); if (CT == 0) EA_label ("更新待機中 " + WindowExpertName(), clrYellow, 26); CT = 0; } void EA_test() { string label1 = "自動売買中 " + WindowExpertName(); string label2 = "口座認証エラー " + WindowExpertName(); string label3 = "自動売買エラー " + WindowExpertName(); string label4 = "サーバー通信エラー " + WindowExpertName(); //string label5 = "資金不足 " + WindowExpertName(); string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; //else if ((AccountBalance() + AccountCredit()) <= 0) labelx = label5; EA_label (label1, clrAqua, 26); if (Pass == false) EA_label (label2, clrRed, 26); else if (IsTradeAllowed() == false) EA_label (label3, clrRed, 26); else if (IsConnected() == false) EA_label (label4, clrRed, 26); //else if ((AccountBalance() + AccountCredit()) <= 0) //EA_label (label5, clrRed, x); } void EA_label(string text, color clr, int pos_x) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, pos_x); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 2); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } //+------------------------------------------------------------------+ //| EAの状態を表示(センターVer) | //+------------------------------------------------------------------+ void OnTimer() { EA_test(); int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS), textWidth = 0, po_x = 0; if (CT == 0) chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); textWidth = StringLen(WindowExpertName() + " 更新待機中") * 8 / 2; // テキストの幅の計算 po_x = (chartWidth - textWidth) / 2 + (textWidth) / 2; EA_label (WindowExpertName() + " 更新待機中", clrYellow, po_x); // " Is Connecting..." CT = 0; } void EA_test() { string label1 = WindowExpertName() + " 自動売買中"; // " Is up and running."; string label2 = WindowExpertName() + " 口座認証エラー"; // " Not allowed account!"; string label3 = WindowExpertName() + " 自動売買エラー"; // " Is not Trade Allowed!"; string label4 = WindowExpertName() + " サーバー通信エラー"; // " Network Error!"; //string label5 = WindowExpertName() + " 資金不足"; string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; //else if ((AccountBalance() + AccountCredit()) <= 0) labelx = label5; int FontSize = 8; int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); int textWidth = StringLen(labelx) * FontSize / 2; // テキストの幅の計算 // テキストの中心からの座標を計算 int x = (chartWidth - textWidth) / 2 + (textWidth) / 2; EA_label (label1, clrAqua, x); if (Pass == false) EA_label (label2, clrRed, x); else if (IsTradeAllowed() == false) EA_label (label3, clrRed, x); else if (IsConnected() == false) EA_label (label4, clrRed, x); //else if ((AccountBalance() + AccountCredit()) <= 0) //EA_label (label5, clrRed, x); } void EA_label(string text, color clr, int pos_x) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, pos_x); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 12); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_CENTER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } //+------------------------------------------------------------------+ //| EAの状態を表示 (センター・コメントバリエーション) | //+------------------------------------------------------------------+ void OnTimer() { EA_test(); int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS), textWidth = 0, po_x = 0; if (CT == 0) chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); textWidth = StringLen("システム スキャンモード(更新待機中)") * 8 / 2; // テキストの幅の計算 po_x = (chartWidth - textWidth) / 2 + (textWidth) / 2; EA_label ("システム スキャンモード(更新待機中)", clrYellow, po_x); CT = 0; } void EA_test() { string label1 = "メインシステム 戦闘モード起動(EA稼働中)"; string label2 = "パイロットデータの認証ができません(口座認証失敗)"; string label3 = "お前への援助は打ち切る。(トレード不許可)"; string label4 = "AMSから、光が逆流する…!(通信エラー)"; //string label5 = WindowExpertName() + " 資金不足"; string labelx = label1; if (Pass == false) labelx = label2; else if (IsTradeAllowed() == false) labelx = label3; else if (IsConnected() == false) labelx = label4; //else if ((AccountBalance() + AccountCredit()) <= 0) labelx = label5; int FontSize = 8; int chartWidth = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS); int textWidth = StringLen(labelx) * FontSize / 2; // テキストの幅の計算 // テキストの中心からの座標を計算 int x = (chartWidth - textWidth) / 2 + (textWidth) / 2; EA_label (label1, clrLime, x); if (Pass == false) EA_label (label2, clrOrangeRed, x); else if (IsTradeAllowed() == false) EA_label (label3, clrOrangeRed, x); else if (IsConnected() == false) EA_label (label4, clrOrangeRed, x); //else if ((AccountBalance() + AccountCredit()) <= 0) //EA_label (label5, clrRed, x); } void EA_label(string text, color clr, int pos_x) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, pos_x); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 12); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "Segoe UI"); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_CENTER); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); } //+------------------------------------------------------------------+ //Eaの状態を表示するコード(原本) bool Pass = true; int CT = 0; int OnInit() { if(IsTesting() == false) { EA_test(); EventSetTimer(60); } return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); ObjectDelete("EA_label"); } void OnTick() { if(IsTesting() == false) { CT++; EA_test(); } } void OnTimer() { EA_test(); if(CT == 0) EA_label("更新待機中", clrYellow); CT = 0; } void EA_test() { EA_label("自動売買中", clrAqua); if(Pass == false) EA_label("口座認証エラー", clrRed); else if(IsTradeAllowed() == false) EA_label("自動売買エラー", clrRed); else if(IsConnected() == false) EA_label("サーバー通信エラー", clrRed); } void EA_label(string text, color clr) { ObjectCreate(0, "EA_label", OBJ_LABEL, 0, 0, 0); ObjectSetString(0, "EA_label", OBJPROP_TEXT, text); ObjectSetInteger(0, "EA_label", OBJPROP_COLOR, clr); ObjectSetInteger(0, "EA_label", OBJPROP_SELECTABLE, false); ObjectSetInteger(0, "EA_label", OBJPROP_HIDDEN, true); ObjectSetString(0, "EA_label", OBJPROP_FONT, "MS 明朝"); ObjectSetInteger(0, "EA_label", OBJPROP_FONTSIZE, 7); ObjectSetInteger(0, "EA_label", OBJPROP_CORNER, 1); ObjectSetInteger(0, "EA_label", OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, "EA_label", OBJPROP_XDISTANCE, 2); ObjectSetInteger(0, "EA_label", OBJPROP_YDISTANCE, 16); ObjectSetInteger(0, "EA_label", OBJPROP_BACK, false); }