gryps2/UI-code/T-042_EA-Condition.txt
super.admin ae3f0ebf03 convert
2025-05-30 14:58:21 +02:00

551 lines
No EOL
35 KiB
Text

// 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);
}