無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

Breakout Strategy with Prop Firm Helper Functions - MetaTrader 5のためのエキスパート

ビュー:
72
評価:
(14)
パブリッシュ済み:
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

皆さん、こんにちは、

これは「シンプルで効果的なブレイクアウト戦略」のアップデートです。このコードでは、プロップファーム・チャレンジのためのヘルパー関数をいくつか追加しました。

一般的に、プロップファーム・チャレンジをパスするには、3つの主な基準を満たす必要がある:

  • 目標利益
  • 1日の最大損失に違反していないこと
  • 最大損失に違反していない

このコードでは、「目標利益」と「1日の最大損失に抵触しそう」をチェックする2つの関数を組み込み、すべてのポジションを自動的に決済し、保留中の注文をすべて削除しています。最大損失」については、あなたのストラテジーとリスク管理次第なので、このMQL5スクリプトでは触れません。

//+------------------------------------------------------------------+
| プロップ・ファームのヘルパー機能|
//+------------------------------------------------------------------+

// すべての未決注文を削除し、すべてのポジションを決済する。
void ClearAll(string message)
{
   Comment(message);
   for (int i = OrdersTotal() - 1; i >= 0; i--)
   {
      ulong orderTicket = OrderGetTicket(i);
      if (OrderSelect(orderTicket)) 
      {
         trade.OrderDelete(orderTicket);
      }
   }

   for (int i = PositionsTotal() - 1; i >= 0; i--)
   {
      ulong posTicket = PositionGetTicket(i);
      trade.PositionClose(posTicket);
   }
}

// 利益目標を達成したかどうかをチェックする
bool isPassed()
{
   return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA;
}

// 1日の最大損失額を超えるかどうかをチェックする
bool isDailyLimit()
{
   MqlDateTime date_time;
   TimeToStruct(TimeCurrent(), date_time);
   int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year;
   
   // 現在の残高
   double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);
   
   // 今日の決済済み取引を取得 PL
   HistorySelect(0, TimeCurrent());
   int orders = HistoryDealsTotal();
   
   double PL = 0.0;
   for (int i = orders - 1; i >= 0; i--)
   {
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
      {
         Print("HistoryDealGetTicket failed, no trade history");
         break;
      }
      double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT);
      if (profit != 0)
      {
         // 取引日時を取得する
         MqlDateTime deal_time;
         TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);
         // ディールタイムをチェックする
         if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year)
         {
            PL += profit;
         }
         else
            break;
      }
   }
   double starting_balance = current_balance - PL;
   double current_equity   = AccountInfoDouble(ACCOUNT_EQUITY);
   return current_equity < starting_balance - DAILY_LOSS_LIMIT;
}

指定するパラメータは以下の通りです:

input string dd = "-------------PROP FIRM CHALLENGE-----------------";
input bool   isChallenge = false;
input double PASS_CRITERIA = 110100.;
input double DAILY_LOSS_LIMIT = 4500.;

このスクリプトにある値が見つかるといいですね。


MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/49713

確率論FXエキスパートアドバイザー 確率論FXエキスパートアドバイザー

確率論アドバイザー

Babi Ngepet Babi Ngepet

エキスパートアドバイザーBabi ngepetのコードを共有します。

Click on the market chart to create a price alert Click on the market chart to create a price alert

これはMetaTrader 5では初めてのことです。チャートをクリックして価格アラートを作成できます。

Count consecutive no. of bull or bear bars Count consecutive no. of bull or bear bars

強気または弱気バーの連続数をカウントするサンプルコード。