システムトレード

MetaTrader 5での最後のクローズトレードを確認する方法
MetaTrader5
MetaTrader 5での最後のクローズトレードを確認する方法

今回は、MetaTrader 5で最後にクローズしたトレードのデータをループを使わずに取得する方法をご紹介します。まず、現在の日の開始時間を設定する変数を作成します。(これは必須ではありません。)チャート出力用の他の変数を作成し、他のコードブロックでも使用できるようにします。(これも必須ではありません。)このコードをOnTick();関数内で使用すると、毎回のティックで結果が表示されます。また、バーごとに設定することも可能です。// 変数の定義 string DayStart = "00:00"; // 日の開始時間 double LastClosed_Profit; // 最後のクローズしたトレードの利益 string TradeSymbol, TradeType; // エキスパートの初期化-------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // エキスパートの非初期化------------------- void OnDeinit(const int reason)   {   } // エキスパートのOnTick-------------------------- void OnTick()   { // 最後のクローズしたトレードをチェック。    CheckLastClosed();   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ void CheckLastClosed()   {    datetime HistoryTime = StringToTime(DayStart); // "日の始まりから現在までの履歴を取得    if(HistorySelect(HistoryTime,TimeCurrent()))      {       int Total = HistoryDealsTotal();       // 最後の取引チケット番号を取得し、選択します。       ulong Ticket = HistoryDealGetTicket(Total -1);       // 必要な情報を取得します。       LastClosed_Profit = NormalizeDouble(HistoryDealGetDouble(Ticket,DEAL_PROFIT),2);       TradeSymbol      = HistoryOrderGetString(Ticket,ORDER_SYMBOL);       // 売りトレードを特定します。       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_BUY)         {          TradeType = "売りトレード";         }       // 買いトレードを特定します       if(HistoryDealGetInteger(Ticket,DEAL_TYPE) == DEAL_TYPE_SELL)         {          TradeType = "買いトレード";         }       // チャート出力。       Comment("\n","取引総数 - :  ", Total,               "\n","最後の取引チケット - :  ", Ticket,               "\n", "最後のクローズ利益 -:  ", LastClosed_Profit,               "\n", "最後の取引は -:  ", TradeType);      }   } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ 全トレード履歴(アカウントの最初から)を取得するには、HistorySelect();関数を以下のように使います。// 全履歴を取得 HistorySelect(0,TimeCurrent());

2024.04.22
MetaTrader 5用トレーリングEAの使い方と機能解説
MetaTrader5
MetaTrader 5用トレーリングEAの使い方と機能解説

皆さん、こんにちは!今日はMetaTrader 5用のトレーリングEAについてお話しします。このEAは、以前のバージョンを改良したもので、取引をよりスムーズに行えるようになっています。 使い方: このEAを任意のシンボルに追加してください。 テイクプロフィット(TP)、ストップロス(SL)、トレーリング、クローズする条件、利益や損失の閾値を設定します。 このEAは特定のマジックナンバーに基づいていないため、モバイルデバイスで注文を出すと、EAが自動的にSL、TP、トレーリングを調整します。 このEAの主な機能は以下の通りです: 5つのボタンで操作が可能です。 「CLOSE IF PROFIT-xxxx」パラメータに設定した値に基づいて、利益が達成された場合に全ての注文を自動的にクローズします。例:100.0を入力すると、利益が$100に達した時に全ての注文が自動的にクローズされます。0.0を入力するとこの機能は無効になります。 「CLOSE IF LOSS-xxxx」パラメータに設定した値に基づいて、損失が達成された場合に全ての注文を自動的にクローズします。例:-70.0を入力すると、損失が-$70に達した時に全ての注文が自動的にクローズされます。0.0を入力するとこの機能は無効になります。 良いトレードをお祈りします! 更新履歴: クローズBUYボタンを追加 クローズSELLボタンを追加 未使用のパラメータ「Lots」を削除

2024.04.21
MetaTrader 5専用のQuickTradeKeys123 EAで迅速な取引を実現
MetaTrader5
MetaTrader 5専用のQuickTradeKeys123 EAで迅速な取引を実現

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5で使える「QuickTradeKeys 123 EA」についてお話しします。このEAは、素早い市場反応をサポートするために設計されていて、キーボード一つでチャートから直接取引ができるのが特徴です。 QuickTradeKeys 123 EAの機能概要 このEAの主な機能を簡単にまとめると、以下の通りです: キー '1': 事前に設定したロットサイズで買いポジションをオープン キー '2': 事前に設定したロットサイズで売りポジションをオープン キー '3': 指定したマジックナンバーに基づいてEAがオープンしたすべてのポジションをクローズ このEAは使いやすく、初心者から経験豊富なトレーダーまで、キーボードを使って効率的に取引管理ができます。 適用範囲 QuickTradeKeys 123 EAは、すべての通貨ペアやタイムフレームに対応しています。最適なパフォーマンスと迅速な実行のために、低スプレッドでスムーズな市場アクセスを推奨します。 インストール方法 EAを使用するには、チャートにドラッグ&ドロップするだけでOKです。MetaTraderで自動取引が有効になっていることを確認し、EAが取引を実行するための権限を持っているか確認してください。必要に応じて、入力設定でマジックナンバーを設定します。 注意事項 このEAは、ユーザーがその基本概念と関連リスクを十分に理解した上で、ライブ取引口座での使用を検討してください。まずはデモ口座でEAの動作を確認することをおすすめします。

2024.04.20
メタトレーダー4でのトレーリングストップの使い方 - クラシックとバーチャルの違い
MetaTrader4
メタトレーダー4でのトレーリングストップの使い方 - クラシックとバーチャルの違い

クラシックトレーリングとバーチャルトレーリングの違い トレードを行う上で、ストップロスの設定は非常に重要です。特に、トレーリングストップを使うことで、利益を最大限に引き上げることができます。ここでは、メタトレーダー4におけるクラシックトレーリングとバーチャルトレーリングの違いについて詳しく解説します。 クラシックトレーリング クラシックトレーリングでは、ストップロスを使って価格を追いかけます。この方法の特徴は、あなたのブローカーサーバーに実際に反映される点です。つまり、価格が動くたびに自動的にストップロスが更新され、利益を守ることができます。 バーチャルトレーリング 一方、バーチャルトレーリングはストップロスを利用せず、ブローカーサーバーには反映されません。この方法では、ポジションを維持しながら、実際の価格の動きに対して柔軟に対応できます。 トレーリングギャップとトレーリングスタート トレーリングギャップ: ビッド/アスク価格の差。 トレーリングスタート: オーダーエントリープライスからトレーリングを開始する距離。 これらの設定を理解することで、より効果的にトレーリングストップを活用し、リスク管理を行うことができます。トレードの成功を願っています!

2024.04.19
MetaTrader 5での「カウント」機能の実装方法
MetaTrader5
MetaTrader 5での「カウント」機能の実装方法

01. "X"回カウントしてから処理を進める ステップ01 - カウント制限を設定するための変数を作成します。この変数は、入力パラメータとしても利用でき、コードの最適化にも役立ちます。 ステップ02 - カウントした回数を保持するための別の変数を作成します。 ステップ03 - カウンターと設定したカウント制限が等しくなった場合、指定したコードブロックを実行するタイミングです。 ステップ04 - コードが実行されたら、必ずカウンターをリセットしてください。リセットしないと、無限にカウントし続けます。 カウンターブロックにはフィルタ条件を設定することもできます。例えば、>> "この条件が真なら、1回カウントする。" のように。 input int count = 50; // カウント制限を入力として設定 int Counter; // カウンター変数 // エキスパート初期化-------------------- int OnInit() { return(INIT_SUCCEEDED); } // エキスパート非初期化------------------- void OnDeinit(const int reason) { } // エキスパートOnTick-------------------------- void OnTick() { Counter ++; // 各ティックでカウンターに1を加算 Comment("現在のカウント -:", Counter); if(Counter == count) // "X"回カウントして処理を進める | このブロックは各カウントごとに1回だけ実行されます。 {      // ここにあなたのコードを書いてください...... Alert(count,"回カウントしました"); Counter = 0; // コードブロックの最後でカウンターをリセットします。これは必須です。 } } // OnTick終了---------------------- 02. "X"回処理してから"X"回待機してから処理を進める この方法は、待機してから処理を進めたり、処理を進めてから待機したりすることができます。 ステップ01 - カウント制限と待機制限を設定するための変数を作成します。これらも入力パラメータとして利用できます。 ステップ02 - カウントした回数と待機した回数を保持するための変数を作成します。 ステップ03 - カウンターとカウント制限が等しくなった場合、指定したコードブロックを実行するタイミングです。 ステップ04 - 待機変数と待機制限が等しくなった場合、しばらく待機するタイミングです。 ステップ05 - 待機制限に達したら、カウンターと待機変数をリセットしてください。リセットしないと正常に動作しなくなります。 カウンターブロックと待機ブロックにもフィルタ条件を設定できます。例えば、>> "この条件が真なら、少し待機する" のように。 input int count = 50; // カウント制限を入力として設定 input int wait = 50; // 待機制限を入力として設定 int Counter; // カウンター変数のデフォルト値は"0" int Waiter; // 待機変数のデフォルト値は"0" // エキスパート初期化-------------------- int OnInit()   {    return(INIT_SUCCEEDED);   } // エキスパート非初期化------------------- void OnDeinit(const int reason)   {   } // エキスパートOnTick-------------------------- void OnTick()   {    Comment("カウントしたティック -: ", Counter, "\n", "待機したティック -: ", Waiter);    if(Counter < count) // "X"回処理を進める      {       Counter++; // カウンターを更新       // ここにあなたのコードを書いてください。      }    else       if(Waiter < wait) // "X"回待機する         {          Waiter++; // 待機変数を更新          // ここにあなたのコードを書いてください。         }    if(Waiter == wait) // 待機制限に達した      {       Counter = 0; // カウンターをリセット       Waiter = 0; // 待機変数をリセット      }   } // OnTick終了---------------------- //+------------------------------------------------------------------+ 特別なお知らせ -: 上記のコードを修正し、待機コードブロックを削除することで、「X回処理して停止する」機能を実装できます。特定の回数カウントした後は、カウンターがリセットされるまで動作を停止します。これらの変数をグローバルスコープで作成すれば、コードのどこでもリセットできます。

2024.04.14
MetaTrader 5で新しいバーを検知する軽量コード
MetaTrader5
MetaTrader 5で新しいバーを検知する軽量コード

皆さん、こんにちは!今回は、MetaTrader 5で新しいバーを検知するためのコードを紹介します。以前は時間を使ってバーを検知していましたが、今回はバーのカウントを使って、新しいバーを検知する方法を見ていきましょう。この方法は、時間を使うよりも軽量で高速です。 整数型の変数を宣言して、バーのカウントを保存します。 初期化時に、「BarsTotal_OnInt」にバーのカウントを割り当てます。 iBars();関数を使って、ライブチャートの「BarsTotal_OnTick」変数にバーのカウントを割り当てます。この変数はすべてのティックで更新されます。 コードの正確性を確認するために、コメントとアラートを使用します。 int BarsTotal_OnInt; int BarsTotal_OnTick; //+------------------------------------------------------------------+ //| Expert initialization function                                   | //+------------------------------------------------------------------+ int OnInit()   {      BarsTotal_OnInt = iBars(NULL,PERIOD_CURRENT); // 初期化時にバーの合計を割り当て    return(INIT_SUCCEEDED);   }    void OnTick() // OnTick関数   {      BarsTotal_OnTick = iBars(NULL,PERIOD_CURRENT); // 最新の数を保存       if(BarsTotal_OnTick > BarsTotal_OnInt) // 新しいバーが来た    {     BarsTotal_OnInt = BarsTotal_OnTick; // 履歴を更新     Alert("新しいバーが来ました!");     Comment("履歴のバー数 -: ", BarsTotal_OnInt, "\n", "ライブのバー数 -: ", BarsTotal_OnTick); // ここにあなたのコードを書く。-------------------------- // 後で使うために「フラグ」や変数を更新できます。    }   }

2024.04.11
メタトレーダー4でのバーチャルSL・TP管理の新技術
MetaTrader4
メタトレーダー4でのバーチャルSL・TP管理の新技術

皆さん、こんにちは!今日は、メタトレーダー4用の「Virtual_SL_TP_Pending_with_SL_Trailing.mq4」についてお話しします。このスクリプトは、仮想のストップロスとテイクプロフィットの設定、そしてトレーリングストップ機能を備えた仮想の保留注文を管理するために設計されています。 スクリプトの概要 以下に、このスクリプトの主な機能をまとめました: 著作権とリンク: 著作権情報と作成者のウェブサイトへのリンクが記載されています。 バージョン: スクリプトのバージョンが示されています。 説明: スクリプトの内容や作成者のメールアドレス、知的財産に関する情報、ソフトウェア使用時の注意が記載されています。 入力パラメーター: ユーザーがEAの動作をカスタマイズできる外部変数が含まれています。具体的には: StopLossPoints : 初期ストップロスのポイント数。 TakeProfitPoints : 初期テイクプロフィットのポイント数。 SpreadThreshold : 仮想ストップロス/テイクプロフィットのスプレッド閾値。 TrailingStopPoints : 保留注文のためのトレーリングストップのポイント数。 EnableTrailing : トレーリングストップを有効または無効にするオプション。 グローバル変数: スクリプト全体で使用される変数で、初期スプレッド、仮想ストップロス、仮想テイクプロフィット、保留注文価格を格納します。 初期化関数 (OnInit): チャートにEAが接続された際に初期化され、入力パラメーターに基づいて初期の仮想ストップロス、テイクプロフィット、保留注文価格を計算します。 ティック関数 (OnTick): 価格のティックごとに呼び出され、スプレッドが閾値を超えた場合に仮想ストップロス、テイクプロフィット、保留注文価格を調整します。また、価格が仮想ストップロスまたはテイクプロフィットに達した場合にポジションをクローズします。さらに、トレーリングストップが有効な場合、価格が保留注文価格に達した際にトレーリングストップ付きの仮想保留注文を出します。 ポジションクローズ関数 (ClosePosition): 価格が仮想ストップロスまたはテイクプロフィットに達した際にポジションをクローズします。 保留注文関数 (PlacePendingOrder): トレーリングストップが有効な場合、トレーリングストップ付きの仮想保留注文を出します。 このEAは、仮想レベルとトレーリングストップ機能を使用してトレードを管理する柔軟な方法を提供し、トレーダーがメタトレーダー4でのトレード管理プロセスを自動化できるようにします。

2024.04.10
通貨ペアを一括閉じる!MetaTrader 4用スクリプト『Close Basket Pairs v1』のご紹介
MetaTrader4
通貨ペアを一括閉じる!MetaTrader 4用スクリプト『Close Basket Pairs v1』のご紹介

皆さん、こんにちは!今日はMetaTrader 4用の便利なスクリプト『Close Basket Pairs v1』についてお話しします。このMQL4スクリプトは、特定の利益や損失の閾値に基づいて、複数の通貨ペアのポジションを一括で閉じるためのものです。 スクリプト名は「CloseBasketPairs.mq4」です。 著作権は2024年にMetaQuotes Software Corp.に所属しています。 MetaQuotesの公式ウェブサイトへのリンクも提供されています。 スクリプトのバージョンは1.01です。 スクリプトの作者は「persinaru@gmail.com」です。 ライセンスは2024年のIPに基づくフリーオープンソースです。 このスクリプトの主な目的は、設定された利益または損失の閾値を満たしたときに、通貨ペアのポジションを閉じることです。 使用は自己責任で、作者は損害や損失について責任を負いません。 このスクリプトでは、バスケット内の通貨ペアとその注文タイプを定義し、利益や損失の閾値を設定します。開いている全ポジションをループして、定義されたバスケットペアに属しているかどうかを確認します。もしポジションが基準を満たしている場合(利益が閾値を超えるか、損失が閾値を超える場合)、そのポジションは閉じられます。 最後に、初期化、非初期化、ティックイベントの処理のための関数が提供されており、PrintStrategyInfo()関数を使って戦略に関する情報を表示します。

2024.04.10
MT4で使えるシンプルなトレンドフォロー戦略の解説
MetaTrader4
MT4で使えるシンプルなトレンドフォロー戦略の解説

今回は、MetaTrader 4(MT4)で使えるシンプルなトレンドフォロー戦略についてお話しします。このスクリプトは、事前に設定した条件に基づいて売買を行う仕組みです。それでは、スクリプトの内容を詳しく見ていきましょう。 初期化: スクリプトが初期化されると、成功メッセージが表示されます。 非初期化: スクリプトが非初期化されると、メッセージが表示されます。 OnTick関数: この関数は、市場に新しいティック(価格変動)が発生するたびに実行されます。 a. ポジション追跡変数のリセット: スクリプトは、オープンの買いと売りのポジションを追跡する変数をリセットします。 b. オープンオーダーの確認: すべてのオープンオーダーをループして、既存の買いまたは売りポジションがあるかを確認します。 c. 買いポジションのオープン: オープンな買いポジションがなく、「OpenBuyPosition」フラグがtrueに設定されている場合、現在の市場のビッド価格に基づいて買いポジションをオープンしようとします。ストップロスとテイクプロフィットも設定します。 d. 売りポジションのオープン: オープンな売りポジションがなく、「OpenSellPosition」フラグがtrueに設定されている場合、現在の市場のアスク価格に基づいて売りポジションをオープンしようとします。こちらもストップロスとテイクプロフィットを設定します。 e. クローズオーダーの確認: クローズされたオーダーを確認し、利益が出た買いまたは売りオーダーがあれば、対応するポジションフラグをリセットします。 入力パラメータ: スクリプトはロットサイズ、ストップロス、テイクプロフィット、買いまたは売りポジションをオープンするかどうかを制御するフラグのための入力パラメータを提供します。 免責事項: スクリプトには、使用は自己責任で行うようにとの警告が含まれており、作成者は潜在的な損害や損失に対して責任を負わないことが明記されています。 このスクリプトは、トレンドフォロー戦略に基づいて売買を自動化し、ユーザーがロットサイズや取引方向などのパラメータをカスタマイズできるように設計されています。ただし、実際の取引環境で使用する前には十分なテストを行うことをお勧めします。

2024.04.10
現在の市場価格に基づくトレーリングストップのコードブロック - MetaTrader 5用
MetaTrader5
現在の市場価格に基づくトレーリングストップのコードブロック - MetaTrader 5用

このコードは、ストップロスを使用する場合も、使用しない場合も機能します。必要な条件ポジションや注文を扱うためのCTradeクラスにアクセスするために、"Trade.mqh"を含める必要があります。#include <Trade\Trade.mqh> // <<------------------------------------------ この"Trade.mqh"を含めてCTradeクラスにアクセスしますトレーリング距離を調整するための入力パラメータを設定する必要があります。これは必須ではありませんが、便利です。input double Traling_Step = 3.0;CTradeクラスのインスタンスを定義する必要があります。名前は任意ですが、OnInitイベントハンドラの後に定義するのが良いでしょう。 次に、現在実行中のポジションがあるかどうかを確認するためのif文を作成する必要があります。この文は、Check_TrailingStop();関数を毎ティックごとに呼び出します。これは、EAがスムーズかつシャープにトレイルするために重要です。この文をOnTickイベントハンドラの最上部に配置することを忘れないでください。//+------------------------------------------------------------------+ //| エキスパート初期化関数                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- タイマーを作成    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } CTrade trade; // <<------------------------------------------ "CTrade"クラスを宣言します。名前は任意ですvoid OnTick()   {       if(PositionsTotal() > 0) // 実行中のポジションがあれば、毎ティックでトレーリングストップ関数を呼び出します。      {       Check_TralingStop();      }               }カスタム関数として、Check_TrailingStop();(この場合)を宣言する必要があります。任意の名前を使用できます。カスタム関数は、すべてのオープンポジションをループして、指定した距離でトレイルします。void Check_TralingStop()   {    int totalPositions = PositionsTotal();    for(int count =0; count < totalPositions; count++)      {       ulong TicketNo = PositionGetTicket(count); // インデックスを使用してポジションのチケット番号を取得します。       if(PositionSelectByTicket(TicketNo)) // チケット番号を使用してポジションを選択します(すでにチケット番号を取得しています)         {          if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY) // ポジションの種類をチェックします。            {             double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);             double stopLoss  = PositionGetDouble(POSITION_SL);       // <<-------------------現在のストップロスを取得             double takeProfit = PositionGetDouble(POSITION_TP);             double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);             ulong ticket = PositionGetTicket(count);             double trailingLevel = NormalizeDouble(bidPrice - (Traling_Step * Point()),_Digits);             if(stopLoss < openPrice) // ストップロスが設定されていない場合。               {                if(bidPrice > openPrice && trailingLevel > openPrice) // 各ポジションで一度のみ実行。最初のSLを設定します。                   trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade"を使用してトレーリングストップを修正します               }             if(bidPrice > openPrice && trailingLevel > stopLoss) // トレーリングレベルが前のレベルを上回っているか確認します。               {                trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade"を使用してトレーリングストップを修正します               }            }          if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)            {             double openPrice = PositionGetDouble(POSITION_PRICE_OPEN);             double stopLoss  = PositionGetDouble(POSITION_SL);             double takeProfit = PositionGetDouble(POSITION_TP);             double bidPrice  = SymbolInfoDouble(_Symbol,SYMBOL_BID);             double askPrice  = SymbolInfoDouble(_Symbol,SYMBOL_ASK);             ulong ticket = PositionGetTicket(count);             double trailingLevel = NormalizeDouble(askPrice + (Traling_Step * Point()),_Digits);             if(stopLoss < openPrice) // ストップロスが設定されていない場合。               {                if(askPrice < openPrice && trailingLevel < openPrice) // 各ポジションで一度のみ実行。最初のSLを設定します。                   trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade"を使用してトレーリングストップを修正します               }             if(askPrice < openPrice && trailingLevel < stopLoss) // トレーリングレベルが前のレベルを上回っているか確認します。               {                trade.PositionModify(ticket,trailingLevel,takeProfit); // "CTrade.trade"を使用してトレーリングストップを修正します               }          }       }    }   }

2024.04.05
MetaTrader 5で新しいバーを検出するシンプルなコード
MetaTrader5
MetaTrader 5で新しいバーを検出するシンプルなコード

今回は、MetaTrader 5を使って新しいバー(キャンドル)を検出するためのシンプルなコードをご紹介します。このコードは、前のバーの時間を記録し、一定の時間(例えば1分)を加算して現在のバーのクローズ時間を取得します。 基本的な流れは以下の通りです: 前のバーの時間を取得し、60秒を加算して現在のバーのクローズ時間を計算します。 現在の時間がクローズ時間と一致する場合、新しいバーが受信されたと判断します。 このコードは、バーごとに一度だけ実行されるようにフラグを使って制御します。 以下が実際のコード例です。コード内のコメントを参考にしながらカスタマイズしてみてください。 //+------------------------------------------------------------------+ //|                                                  新しいバー検出.mq5 | //|                                          作成者: H A T Lakmal | //+------------------------------------------------------------------+ bool NewBarRecived = false; // フラグの初期化 //+------------------------------------------------------------------+ //| エキスパート初期化関数 | //+------------------------------------------------------------------+ int OnInit()   { //--- タイマーをセット    EventSetTimer(60); //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ //| エキスパート非初期化関数 | //+------------------------------------------------------------------+ void OnDeinit(const int reason)   { //--- タイマーを解除    EventKillTimer();   } //+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick()   {    datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);    datetime TimeCurrentClose = TimePreviousBar + 60; // 現在のバーのクローズ時間    datetime Time_Current = TimeCurrent();    if(Time_Current == TimeCurrentClose && NewBarRecived == false)      {       PlaySound("ok.wav");   // コードの動作確認用       NewBarRecived = true; // フラグを更新         // あなたのコードをここに記述 ----- (何か処理を行う)      }    else       if(Time_Current > TimeCurrentClose)         {          NewBarRecived = false; // 次のバーのオープンのためにフラグをリセット          // あなたのコードをここに記述 ----- (何か処理を行う)     }    Comment(" " +  " " +  "現在のバーの時間 -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +          " " + "現在のクローズ時間 -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +          " " + "現在の時間 -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + " " +" " + "新しいバーが受信されました -: " + NewBarRecived); // 計算を確認するため   } //+------------------------------------------------------------------+ //| タイマー関数 | //+------------------------------------------------------------------+ void OnTimer()   { //---   } //+------------------------------------------------------------------+ //| トレード関数 | //+------------------------------------------------------------------+ void OnTrade()   { //---   } //+------------------------------------------------------------------+ //| チャートイベント関数 | //+------------------------------------------------------------------+ void OnChartEvent(const int id,                   const long &lparam,                   const double &dparam,                   const string &sparam)   { //---   } //+------------------------------------------------------------------+ このコードを使うことで、新しいバーの到着を簡単に検出できます。ぜひ試してみてください!

2024.04.05
MetaTrader 4用EA:アカウント通貨での利益・損失でのクローズ機能
MetaTrader4
MetaTrader 4用EA:アカウント通貨での利益・損失でのクローズ機能

こんにちは、トレーダーの皆さん!今日は、MetaTrader 4で使える新しいエキスパートアドバイザー(EA)についてお話しします。このEAは、アカウント通貨での利益や損失に基づいてトレードをクローズする機能を持っています。 //+------------------------------------------------------------------------------------------------------------------------------+ //|Close_on_PROFIT_or_LOSS_inAccont_Currency_V2の最適化内容: //| エラーハンドリングの追加:注文がクローズまたは削除できない場合のエラーハンドリングが追加されました。 コードの最適化:コードが最適化され、繰り返しを避け、可読性が向上しました。 効率性:不要なループや計算が削除されました。 EAの非初期化時にチャートオブジェクトをクリア:EAが非初期化される際に、全てのチャートオブジェクトをクリアします。 //+------------------------------------------------------------------------------------------------------------------------------+ このEAは、設定が0の場合、何も実行しません。 Positive_Closure_in_Account_Currencyは、現在のエクイティ額よりも高く設定する必要があります。そうでなければ、トレードは即座に実行されます。 例:エクイティが55,000ドルで、Positive_Closure_in_Account_Currencyを55,500ドルに設定すると、500ドルの利益が得られます。 Positive_Closure_in_Account_Currency > 0 && < 55,000ドル = 即時実行 Negative_Closure_in_Account_Currencyは、現在のエクイティ額よりも低く設定する必要があります。そうでなければ、トレードは即座に実行されます。 例:エクイティが55,000ドルで、Negative_Closure_in_Account_Currencyを54,500ドルに設定すると、500ドルの損失が抑えられます。 Negative_Closure_in_Account_Currency > 55,000ドル = 即時実行 スプレッドのスパイクは、スプレッドの数値を減らすことで回避できますが、市場は自分の思うように動くため、高い利益や損失が発生する可能性があります。 また、スプレッドが取引ペアの平均スプレッドよりも低く設定されている場合、そのポジションは実行されません。 警告:このソフトウェアは自己責任で使用してください。外国為替市場は非常に変動が激しいです! #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.01" #property description "persinaru@gmail.com" #property description "IP 2024 - フリーオープンソース" #property description "このEAは、アカウント通貨で計算された利益と損失に基づいて全てのトレードをクローズします。" #property description "警告:このソフトウェアは自己責任で使用してください。" #property description "このスクリプトの作成者は、損害や損失に対して一切責任を負いません。" #property strict #property show_inputs extern string Closures = "EAは、利益または損失が達成されたときに全てのトレードと保留中の注文をクローズします。利益と損失はアカウント通貨で計算されます。"; extern int Positive_Closure_in_Account_Currency = 0; extern int Negative_Closure_in_Account_Currency = 0; extern int Spread = 10;

2024.03.25
MQL5でのアルゴリズムトレーディングに最適なニューラルネットワーク活用法
MetaTrader5
MQL5でのアルゴリズムトレーディングに最適なニューラルネットワーク活用法

「MQL5によるアルゴリズムトレーディングのためのニューラルネットワーク」 この本は、トレーディングにおける機械学習とニューラルネットワークの活用方法を学ぶための必読ガイドです。アルゴリズムトレーダーの皆さんが、先進的な人工知能技術を使ってトレーディング戦略を作成するための手助けをします。 内容の概要 本書は全7章で構成されており、ニューラルネットワークの基礎から始まり、MQL5環境内でのトレーディングロボットへの統合方法まで、必要な情報を網羅しています。わかりやすい説明で、機械学習の基礎を学び、畳み込み型や再帰型モデルを含むさまざまなタイプのニューラルネットワークや、より複雑なアーキテクチャやアテンションメカニズムについても探求します。 実践的な例と手法 これらのソリューションをMQL5のトレーディングロボットに統合するための実践的な例が豊富に提供されています。また、モデルの収束を改善するためのさまざまな手法(バッチ正規化やドロップアウトなど)についても詳しく解説されています。 ニューラルネットワークのトレーニングと活用 さらに、著者はニューラルネットワークをトレーニングし、トレーディング戦略に組み込む方法についても実践的なガイダンスを提供しています。トレーニングされたモデルを新しいデータでテストするためのトレーディングエキスパートアドバイザーを作成する方法を学ぶことで、実際の金融市場におけるその可能性を評価することができます。 まとめ 「MQL5によるアルゴリズムトレーディングのためのニューラルネットワーク」は、単なる本ではなく、トレーディングアルゴリズムに高度な意思決定技術を統合し、財務結果を改善するための便利なガイドです。今日から機械学習の先進的な能力を学び、トレーディングを次のレベルに引き上げましょう。

2024.02.29
初心者向け手動トレードEA「Buy Sell Close」の使い方と特徴
MetaTrader4
初心者向け手動トレードEA「Buy Sell Close」の使い方と特徴

こんにちは、トレーダーの皆さん!今日は、初心者にぴったりの手動トレードEA「Buy Sell Close」についてご紹介します。このEAは、バックテストのビジュアルモードでの使用が可能で、実際のトレードでも活用できます。 自分のトレーディングシステムをバックテストで練習することができます。 「Buy Sell Close」では、EAの手動操作が可能で、バックテストの速度を一時停止したり変更したりすることができるので、手動トレーディングの練習をしやすくなっています。 使い方の紹介: 1. [Lots]ボタン:入力ボックスの後に、ロット数を変更できます。 2. [BUY]ボタン:このボタンを押すと、指定したロット数分の買い注文が追加されます。 3. [SELL]ボタン:このボタンを押すと、指定したロット数分の売り注文が追加されます。 4. [SL Modify TP]ボタン:ストップロスとテイクプロフィットを修正できます。このボタンを押すと、現在の価格に対してストップロスとテイクプロフィットの距離が修正されます。 5. [Close All Buy]ボタン:すべての買い注文を閉じます。 6. [Close All Sell]ボタン:すべての売り注文を閉じます。 7. [Close All Orders]ボタン:すべての注文を閉じます。 8. 画面の右側には、開いている注文や利益などの情報が表示されています。 パラメータの説明: 1. MM:自動的にリスク比率を使ってデフォルトのロットサイズを計算します。 2. Risk:バランスが10,000の場合、0.2ロットとなります。 3. Lots:MMがFALSEの場合、この固定ロット数を使用します。 4. SL:ストップロス:デフォルトは250マイクロポイントです。 5. TP:テイクプロフィット:デフォルトは500マイクロポイントです。 その他のパラメータは、UIに関連しています。 自分のトレーディングシステムを練習できるこのツール、ぜひ試してみてくださいね!みなさんに感謝です!!

2024.02.29
最初 前へ 2 3 4 5 6 7 8 9 10 11 12 次へ 最後