負け越し数を計算する
以下のタイミングで過去の負け越し数を計算する
①EA投入時(過去3か月間を指定)
②取引成立時
int MagicNumber_bid = 1111; // bidマジックナンバー
int MagicNumber_ask = 1112; // askマジックナンバー
datetime Last_lose_check_time = 0; //前回の負け越しチェック時間
int global_excessive_lossed = 0; // 負け越し数
OnInit()
Excessive_losses_calculation();
OnTrade()
Excessive_losses_calculation();
Excessive_losses_calculation()
//+------------------------------------------------------------------+
//| 負け越し数計算関数 |
//+------------------------------------------------------------------+
void Excessive_losses_calculation()
{
if(Last_lose_check_time < TimeCurrent())
{
// Print("before global_excessive_lossed ", global_excessive_lossed);
int Excessive_losses = global_excessive_lossed; // 負け越し数
//最初は90日間の履歴を選択
if(Last_lose_check_time ==0)
{
// 取引履歴をリクエストする * 直近90日の履歴を取得
HistorySelect(TimeCurrent() - 7776000, TimeCurrent()+1);
Print("チェック対象 : ",TimeCurrent() - 7776000," → ", TimeCurrent()+1);
}
//以降は前回時間までの履歴を選択
else
{
HistorySelect(Last_lose_check_time, TimeCurrent()+1);
Print("チェック対象 : ",Last_lose_check_time," → ", TimeCurrent()+1);
}
Last_lose_check_time = TimeCurrent()+1;
int total = HistoryDealsTotal();
for(int i = 0; i < total; i++)
{
// 約定取引を取得
ulong myticket = HistoryDealGetTicket(i);
if(myticket > 0)
{
// 損益情報を取得する
double Last_WL_amount = HistoryDealGetDouble(myticket, DEAL_PROFIT);
if(HistoryDealGetInteger(myticket,DEAL_MAGIC) == MagicNumber_bid || HistoryDealGetInteger(myticket,DEAL_MAGIC) == MagicNumber_ask)
{
ENUM_DEAL_ENTRY entry = HistoryDealGetInteger(myticket, DEAL_ENTRY); // 約定 / 決済 | EntryIn / Outの確認
if(entry == DEAL_ENTRY_OUT)
{
Print("■ 利益: ", Last_WL_amount);
if(Last_WL_amount > 0)
{
Excessive_losses -= 1;
if(Excessive_losses <= 0)
Excessive_losses = 0;
Print("■ 累積負け越し数 ", global_excessive_lossed, " → ", Excessive_losses);
global_excessive_lossed = Excessive_losses;
}
else
if(Last_WL_amount < 0)
{
Excessive_losses += 1;
Print("■ 累積負け越し数 ", global_excessive_lossed, " → ", Excessive_losses);
global_excessive_lossed = Excessive_losses;
}
}
}
}
}
}
}
MQL5コード一覧はコチラ
この記事が気に入ったらサポートをしてみませんか?