システムトレード

AK-47スキャルパーEAの設定と使い方 - MetaTrader 4用
MetaTrader4
AK-47スキャルパーEAの設定と使い方 - MetaTrader 4用

1. 入力パラメータ #define ExtBotName "AK-47スキャルパーEA" //ボット名 #define  Version "1.00" //--- 入力パラメータ --- extern string  EASettings        = "---------------------------------------------"; //-------- <EA設定> -------- input int      InpMagicNumber    = 124656;   //マジックナンバー extern string  TradingSettings   = "---------------------------------------------"; //-------- <取引設定> -------- input double   Inpuser_lot       = 0.01;     //ロット数 input double   InpSL_Pips        = 3.5      //ストップロス(ピップ数) input double   InpMax_spread     = 0.5      //最大許容スプレッド(ピップ数) (0 = フローティング) extern string  MoneySettings     = "---------------------------------------------"; //-------- <資金設定> -------- input bool     isVolume_Percent  = true;     //ボリュームのパーセントを許可 input double   InpRisk           = 3        //残高のリスクパーセント(%) input string   TimeSettings      = "---------------------------------------------"; //-------- <取引時間設定> -------- input bool     InpTimeFilter     = true      //取引時間フィルター input int      InpStartHour      = 2         //開始時間 input int      InpStartMinute    = 30        //開始分 input int      InpEndHour        = 21        //終了時間 input int      InpEndMinute      = 0         //終了分 2. ローカル変数の初期化 //--- 変数 --- int      Pips2Points;               // スリッページ  3ピップ    3=ポイント    30=ポイント double   Pips2Double;               // ストップロス 15ピップ    0.015      0.0150 int      InpMax_slippage   = 3;     // 最大スリッページ許可. bool     isOrder           = false; // 1オーダーのみオープン int      slippage; string   strComment        = ""; 3. メインコード a/ EA初期化関数 int OnInit()   { //---      //3または5桁の検出    //ピップとポイント    if (Digits % 2 == 1)    {       Pips2Double  = _Point*10;       Pips2Points  = 10;       slippage = 10* InpMax_slippage;    }    else    {           Pips2Double  = _Point;       Pips2Points  =  1;       slippage = InpMax_slippage;    }    //---    return(INIT_SUCCEEDED);   } b/ EAティック関数 void OnTick()   { //---      if(IsTradeAllowed() == false)      {       Comment("AK-47 EA 取引が許可されていません。");       return;      }             MqlDateTime structTime;        TimeCurrent(structTime);        structTime.sec = 0;               //開始時間の設定        structTime.hour = InpStartHour;        structTime.min = InpStartMinute;              datetime timeStart = StructToTime(structTime);               //終了時間の設定        structTime.hour = InpEndHour;        structTime.min = InpEndMinute;        datetime timeEnd = StructToTime(structTime);               double acSpread = MarketInfo(Symbol(), MODE_SPREAD);        StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);              strComment = " " + ExtBotName + " - v." + (string)Version;       strComment += " GMT時間 = " + TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS);       strComment += " 取引時間 = [" + (string)InpStartHour + "h" + (string)InpStartMinute + " --> " +  (string)InpEndHour + "h" + (string)InpEndMinute + "]";              strComment += " 現在のスプレッド = " + (string)acSpread + " ポイント";       strComment += " 現在のストップレベル = " + (string)StopLevel + " ポイント";              Comment(strComment);          //値の更新       UpdateOrders();              TrailingStop();              //取引時間の確認       if(InpTimeFilter)       {          if(TimeCurrent() >= timeStart && TimeCurrent() < timeEnd)          {             if(!isOrder) OpenOrder();          }       }       else       {          if(!isOrder) OpenOrder();       }   } 3.1 注文を送信するための信号を計算 void OpenOrder(){       //int OrdType = OP_SELL;//-1;    double TP = 0;    double SL = 0;    string comment = ExtBotName;    //ロット数の計算    double lot1 = CalculateVolume();       //if(OrdType == OP_SELL){       double OpenPrice = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);       SL = NormalizeDouble(Ask + StopLevel * _Point + InpSL_Pips/2 * Pips2Double, Digits);                if(CheckSpreadAllow())                                    //スプレッドを確認       {          if(!OrderSend(_Symbol, OP_SELLSTOP, lot1, OpenPrice, slippage, SL, TP, comment, InpMagicNumber, 0, clrRed))          Print(__FUNCTION__,"--> 注文送信エラー ",GetLastError());       }    //} } 3.2 ボリュームの計算 double CalculateVolume()   {    double LotSize = 0;    if(isVolume_Percent == false)      {       LotSize = Inpuser_lot;      }    else      {       LotSize = (InpRisk) * AccountFreeMargin();       LotSize = LotSize /100000;       double n = MathFloor(LotSize/Inpuser_lot);       //Comment((string)n);       LotSize = n * Inpuser_lot;       if(LotSize < Inpuser_lot)          LotSize = Inpuser_lot;       if(LotSize > MarketInfo(Symbol(),MODE_MAXLOT))          LotSize = MarketInfo(Symbol(),MODE_MAXLOT);       if(LotSize < MarketInfo(Symbol(),MODE_MINLOT))          LotSize = MarketInfo(Symbol(),MODE_MINLOT);      }    return(LotSize);   } 3.3 EAは「トレーリングストップ」機能を持つ。 価格が変動するたびにSLが変わる void TrailingStop()   {    for(int i = OrdersTotal() - 1; i >= 0; i--)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() == Symbol()))   //_Symbol))            {             //売り注文の場合             if(OrderType() == OP_SELL)               {                   //価格が変わるとSLを計算                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                   if(SL_in_Pip > InpSL_Pips){                         double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + InpSL_Pips * Pips2Double, Digits);                         if(!OrderModify(OrderTicket(), OrderOpenPrice(), newSL, OrderTakeProfit(), 0, clrRed))                         {                            Print(__FUNCTION__,"--> 注文修正エラー ",GetLastError());                         {                          continue;                           }                     }           }       }          //売りストップ注文の場合             else if(OrderType() == OP_SELLSTOP)               {                   double SL_in_Pip = NormalizeDouble(OrderStopLoss() - (StopLevel * _Point) - Ask, Digits) / Pips2Double;                                      if(SL_in_Pip < InpSL_Pips/2){                      double newOP = NormalizeDouble(Bid - (StopLevel * _Point) - (InpSL_Pips/2) * Pips2Double, Digits);                      double newSL = NormalizeDouble(Ask + (StopLevel * _Point) + (InpSL_Pips/2) * Pips2Double, Digits);                                           if(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(), 0, clrRed))                      {                         Print(__FUNCTION__,"--> 保留注文修正エラー!", GetLastError());                         continue                            }                         }                         }               }            }      }   }

2023.01.14
MT5向けFXトレードマネージャー - 自動管理で利益を守る
MetaTrader5
MT5向けFXトレードマネージャー - 自動管理で利益を守る

FXトレードマネージャーMT5は、MetaTrader 5でオープンオーダーの管理を簡単にしてくれる便利なツールです。新しいオーダーを開くと、マネージャーが自動的にストップロスとテイクプロフィットを設定してくれます。価格が動くと、プログラムはストップロスをブレイクイーブン(ストップロス = オープン価格)に移動させたり、トレーリングストップで利益を守ることができます。 このFXトレードマネージャーは、現在のシンボル(EAが機能する場所)だけでなく、すべてのオープンオーダーを管理でき、ストップロスやテイクプロフィットをブローカーから隠すことも可能です。手動で開いたトレードを管理するための戦略として、以下の機能を提供しています: トレードのストップロスおよび/またはテイクプロフィットをピップス単位で設定 価格に応じてストップロスを動かすトレーリングストップ機能 選択した距離でストップロスをブレイクイーブンに移動させる機能 ストップロスおよびテイクプロフィットは、ブローカーによって管理される標準的な方法で設定することも、ステルスモード(ブローカーから隠す)で設定することもできます。 パラメーター: 「SLTPパラメーター」 ストップロス - トレードのためのストップロス(ピップス単位) テイクプロフィット - トレードのためのテイクプロフィット(ピップス単位) 「ブレイクイーブン」 UseBreakEven (true/false) - オープンしたトレードに対してブレイクイーブン機能だけを使用するかどうか BEActivation - ブレイクイーブン機能が有効になる際の利益(ピップス単位) BELevel - ブレイクイーブン機能でストップロスが設定される際の追加距離(ピップス単位) 「トレーリングストップ」 UseTrailingStop (true/false) - オープンしたトレードに対してトレーリングストップ機能だけを使用するかどうか TSStart - トレーリングストップ機能が有効になる際の利益(ピップス単位) TSStep - トレーリングストップ機能でストップロスを動かすための新しいストップロスと現在のストップロスの最小差(ピップス単位) TSDistance - トレーリングストップ機能でストップロスが設定される際の現在価格からの距離(ピップス単位) 「動作」 StealthMode (true/false) - ストップロス/テイクプロフィットレベルをブローカーから隠し、EAがプログラム的にそのレベルでトレードをクローズする OnlyCurrentPair (true/false) - 現在のチャートのシンボルからのみトレードを管理するか(true)、すべてのペアから管理するか(false) 情報: すべてのトレードおよび機能のパラメーターは、EAのパラメーターで設定可能です。FXトレードマネージャーは、チャート上に現在のデイリープロフィット/ロスをピップスおよび口座通貨で表示します。

2023.01.10
XP Forex トレードマネージャーグリッド MT5 - MetaTrader 5用のシステムトレード
MetaTrader5
XP Forex トレードマネージャーグリッド MT5 - MetaTrader 5用のシステムトレード

皆さん、こんにちは!今日は、XP Forex トレードマネージャーグリッド MT5についてお話しします。このツールは、オーダーの管理を助け、トレードの目標達成をサポートしてくれます。最初のオーダーをテイクプロフィットと一緒に入れるだけで、EAを稼働させ、希望する利益(pips)をパラメータに設定するだけでOKです。EAがポジションを管理し、指定したpips数を集めてくれます。 このシステムは、現在の通貨ペアで開かれている手動トレードの管理戦略です。戦略は、トレード間の距離を選択し、グリッド管理で現在のトレードにポジションを追加します。最大15トレード(またはそれ以下)を管理します。最初の最大3トレードは個別のテイクプロフィットで管理され、4トレード目以降はEAが全体のグリッドを共通レベル(ブレークイーブン)でクローズします。TPでクローズした後は、再度リニューアルすることも可能です。また、損失が許容リスクバランスの割合を超えた場合、全サイクルがクローズされます。 パラメータ: 追加トレードパラメータ: AddNewTradeAfter – グリッドにトレードを追加するための前のトレードからのpips距離 テイクプロフィット TakeProfit1Total(数値) – 最初のポジションからの合計TPのpipsTakeProfit1Partitive – サイクル内の最初のポジションの初期TPのpipsTakeProfit1Offset – 最初のポジションの最後のクローズからのテイクプロフィットの最小pips距離TakeProfit 2/3 – サイクル内の2番目/3番目のポジションの個別TPのpipsTakeProfit 4/5/6/…15Total – サイクル内の全ポジションからの合計TPのpips(4トレード以上の場合) トレードパラメータ: MaxOrders – グリッド内で許可されている最大トレード数Risk Balance % – アカウントバランスに対する許可される最大損失の割合(全オープンポジションをクローズ)Lots – EAによって開かれるトレードのロットサイズSlippage – 許可されるスリッページのポイント 情報: トレードおよび機能のすべてのパラメータは、EAのパラメータで設定可能です。Forex トレードマネージャーグリッドは、チャート上に現在のサイクルからの利益/損失をpipsとアカウント通貨で表示します。

2023.01.10
MT4用のFXトレードマネージャー - 効率的な取引管理ツール
MetaTrader4
MT4用のFXトレードマネージャー - 効率的な取引管理ツール

こんにちは、トレーダーの皆さん!今日は、MetaTrader 4(MT4)で使えるFXトレードマネージャーについてお話ししたいと思います。このツールは、オープンオーダーの管理を簡単にしてくれる優れものです。 新しいオーダーを開くと、トレードマネージャーが自動的にストップロス(SL)とテイクプロフィット(TP)を設定してくれます。価格が動くと、プログラムはストップロスをブレイクイーブン(オープン価格と同じ)に移動させたり、トレーリングストップを使って利益を守ることができます。 FXトレードマネージャーは、現在のシンボル(EAが動作するところ)だけでなく、すべてのオープンオーダーを管理することができ、ブローカーからストップロスやテイクプロフィットを隠すことも可能です。以下のように、マニュアルトレードを管理するための戦略を提供しています: トレードのためのストップロスおよび/またはテイクプロフィットをピップスで設定 価格に応じてSLをトレイルするトレーリングストップ機能 選択した距離でSLをブレイクイーブンに移動させる機能 SL/TPは、ブローカーによって管理される標準的な方法でも、ステルスモードで隠すこともできます。 パラメータ: “SLTP パラメータ” ストップロス – トレードごとのストップロスをピップスで設定 テイクプロフィット – トレードごとのテイクプロフィットをピップスで設定 “ブレイクイーブン” UseBreakEven (true/false) – オープントレードに対してブレイクイーブン機能を使うかどうか BEActivation – ブレイクイーブン機能が有効になる際の利益(ピップス) BELevel – ブレイクイーブン機能によって設定されるSLからの追加距離(ピップス) “トレーリングストップ” UseTrailingStop (true/false) – オープントレードに対してトレーリングストップ機能を使うかどうか TSStart – トレーリングストップ機能が有効になる際の利益(ピップス) TSStep – 新しいSLと現在のSLの間の最小差(ピップス) TSDistance – トレーリングストップ機能によってSLが設定される現在の価格からの距離(ピップス) “動作” StealthMode (true/false) – ブローカーからSL/TPレベルを隠し、EAがプログラム的にそのレベルでトレードをクローズするかどうか OnlyCurrentPair (true/false) – 現在のチャートのシンボルのトレードのみ管理するか、すべてのペアを管理するか 情報: すべてのトレード関連のパラメータは、EAの設定で変更可能です。また、FXトレードマネージャーは、チャート上に現在のデイリープロフィット/ロスをピップスとアカウント通貨で表示します。

2023.01.10
MT4用のFXトレードマネージャーグリッドで取引をスマートに管理しよう
MetaTrader4
MT4用のFXトレードマネージャーグリッドで取引をスマートに管理しよう

FXトレードマネージャーグリッドMT4は、あなたの注文を管理し、目標を達成するための強力なツールです。まずは、テイクプロフィットを設定した最初の注文を出し、EAを実行して、獲得したい利益(ピップス)をパラメータに設定するだけでOKです。このEAは、指定されたピップス数を集めながらポジションを管理します。この戦略は、現在の通貨ペアで手動でオープンしたトレードを管理するためのものです。 戦略は、現在オープンしているトレードにピップス間隔をあけてポジションを追加するグリッド管理を行います。最大で15件のトレードまで追加可能です。最初の3つのトレードはそれぞれ個別のテイクプロフィットで管理され、4件目以降は全体のグリッドを共通レベル(ブレイクイーブン)でクローズします。テイクプロフィットでクローズしたトレードは再度更新することが可能です。損失が許可されたリスクバランスの割合を超えた場合は、全体のサイクルをクローズします。 パラメータ: 「追加トレードパラメータ」: AddNewTradeAfter – 最後のトレードからの距離(ピップス)で、トレードがグリッドに追加される距離 「テイクプロフィット」 TakeProfit1Total (数値) – 最初のポジションから必要な総テイクプロフィット(ピップス) TakeProfit1Partitive – サイクル内の最初のポジションに対する初期テイクプロフィット(ピップス) TakeProfit1Offset – 最後にクローズした最初のポジションのテイクプロフィットから再開するために必要な最小距離(ピップス) TakeProfit 2/3 – サイクル内の2番目/3番目のポジションに対する個別のテイクプロフィット(ピップス) TakeProfit 4/5/6/…15Total – サイクル内の全ポジションからの総テイクプロフィット(ピップス)(4件以上のトレードがオープンされている場合) 「トレードパラメータ」: MaxOrders – グリッド内で許可される最大トレード数 Risk Balance % – アカウント残高のパーセンテージとして許可される最大損失(すべてのオープンポジションをクローズ) Lots – EAによってオープンされるトレードのロットサイズ Slippage – 許可されるスリippage(ポイント) 情報: すべてのトレードと機能のパラメータは、EAのパラメータで設定可能です。FXトレードマネージャーグリッドは、現在のサイクルからの利益/損失をピップスとアカウント通貨でチャート上に表示します。

2023.01.10
Lazy Bot MT5 - 毎日ブレイクアウトEAの設定と使い方
MetaTrader5
Lazy Bot MT5 - 毎日ブレイクアウトEAの設定と使い方

こんにちは、トレーダーの皆さん!今日は、MetaTrader 5用の「Lazy Bot MT5」、つまり毎日ブレイクアウトEAの設定方法についてお話しします。このEAは、日々の取引を自動化し、効率的に利益を上げるために設計されています。 1. 設定パラメータ EA設定 // 外部クラスのインポート #include <Trade\PositionInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> #include <Trade\OrderInfo.mqh> //--- コードの可読性のための事前定義変数の紹介 #define Ask    SymbolInfoDouble(_Symbol, SYMBOL_ASK) #define Bid    SymbolInfoDouble(_Symbol, SYMBOL_BID) //--- 入力パラメータ input string  EASettings = "---------------------------------------------"; input int      InpMagicNumber = 123456;   // マジックナンバー input string   InpBotName = "LazyBot_V1"; input double   Inpuser_lot = 0.01;        // ロット数 input double   Inpuser_SL = 5.0;          // ストップロス(ピップス単位) input int      Inpuser_SLippage = 3;      // 最大スリッページ 2. ローカル変数の初期化 // ローカルパラメータ datetime last; int totalBars; double slippage; double acSpread; 3. メインコード このEAは、毎日すべての古いオーダーを削除し、前日のバーの最高値と最低値を見つけて、BUY_STOPとSELL_STOPの2つの保留オーダーを送信します(テイクプロフィットは設定されていません)。 4. EAの初期化関数 int OnInit()   {     ... // ここに初期化処理   } 5. EAのティック関数 void OnTick()   {     ... // ここにティック処理   } このようにLazy Bot MT5を使うことで、トレードの自動化が可能になり、時間を有効に活用できます。ぜひ試してみてください!

2022.12.14
メタトレーダー4用ミーンリバージョンEAの活用法
MetaTrader4
メタトレーダー4用ミーンリバージョンEAの活用法

こんにちは、トレーダーの皆さん!今日は、メタトレーダー4で使えるミーンリバージョン戦略についてお話しします。この戦略は、特に日足チャートの主要な為替ペアで効果を発揮します。 まずはデモで試してみよう デモ口座でまず試してみてください。 このEAはオープンキャンドルの価格のみでトレードを行います! トレードで負けた場合にロットサイズを増やしたくない場合は、設定を「IncreaseFactor=0」にしてください。 それでは、具体的な設定について見ていきましょう。 設定項目 Use_TP_In_Money: 利益確定を金額で使用するか (true/false) TP_In_Money: 利益確定金額 (10-100) Use_TP_In_percent: 利益確定をパーセンテージで使用するか (true/false) TP_In_Percent: 利益確定パーセンテージ (10-100) ------------[複数トレードのためのマネートレーリングストップ]---------------------- Enable_Trailing: マネートレーリングを有効にする (true/false) 現在の通貨での利益確定金額 (25-200) 現在の通貨でのロスカット金額 (1-20) -------------------------------------------------------------------------------------- Exit: トレンドが逆行した場合にトレードを閉じる (true/false) BarsToCount: カウントするバーの数 (1-20) Lots: ロットサイズ (0.01-1) Lots size Exponent: (1.01-2) IncreaseFactor: 負けたトレードからロットを増やす量 (0.001-0.1) Stop_Loss: ロスカット (30-500) / 複数トレードの場合は600を設定 MagicNumber: マジックナンバー (1-100000) TakeProfit: 利益確定 (50-200) / 複数トレードの場合は600を設定 FastMA: 短期移動平均 (1-20) SlowMA: 長期移動平均 (50-200) Mom_Sell: モメンタム売りトリガー (0.1-0.9) Mom_Buy: モメンタム買いトリガー (0.1-0.9) ---------------------ドローダウンの管理----------------------------- UseEquityStop: (true/false) TotalEquityRisk: (0.01-20) ------------------------------------------------------------------------------- Max_Trades: (1-12) FractalNum: 高値と安値の数 (1-10) ----------------もし1トレードのみを使用する場合:----------------------- ///////////////////////////////////////////////////////////////////// USETRAILINGSTOP: トレーリングストップを使用するか (true/false) WHENTOTRAIL: トレーリングを開始するタイミング (40-100) TRAILAMOUNT: トレーリング金額 (40-100) Distance From Candle: キャンドルからの距離 (1-100) USECANDELTRAIL: キャンドルトレーリングを使用するか (true/false) X: キャンドルの数 (1-100) USEMOVETOBREAKEVEN: ブレークイーブンを有効にする (true/false) WHENTOMOVETOBE: ブレークイーブンに移動するタイミング (1-30) PIPSTOMOVESL: ストップロスを移動させるpips (1-30) このEAは数ヶ月ごとに最適化することをお勧めします。そして、上記の設定をそのまま使用してください。ヘッジンググリッドEAや単一トレードEAとしても利用可能です。 バックテストの方法については、こちらのリンクを参考にしてください: バックテストの手順

2022.10.26
メタトレーダー5のための固定パラボリックSARによるトレーリングストップ
MetaTrader5
メタトレーダー5のための固定パラボリックSARによるトレーリングストップ

今回は、メタトレーダー5で使用できる固定パラボリックSARを利用したトレーリングストップについてお話しします。これを使えば、トレーディングの戦略をさらに強化することができるでしょう。パラメータ設定トレーリングモード ・・・ なし / 固定トレーリング / 固定パラボリックSARトレーリングここでの計算部分は、パラボリックSARを使用したストップロスの調整が含まれています。以下のコードは、トレーリングストップを設定するための基本的なロジックを示しています。bool CSampleExpert::LongModifiedEx(void) { bool res=false; //--- トレーリングストップのチェック if(m_trailing_max < m_last_bar.high) { double tp=m_position.TakeProfit(); double sl=m_position.StopLoss(); //--- パラボリックSARの計算 m_trailing_max = m_last_bar.high; m_trailing_step = fmin(InpPSAR_Maximum, m_trailing_step + InpPSAR_Step); double sar_stop = sl + (m_trailing_max - sl) * m_trailing_step; sar_stop=NormalizeDouble(sar_stop,m_symbol.Digits()); //--- if((sl==0.0 || sl < sar_stop) && sar_stop < m_symbol.Bid()) { //--- ポジションの修正 if(m_trade.PositionModify(Symbol(),sar_stop,tp)) printf("ロングポジションが%sにより修正されました",Symbol()); else { printf("ポジション修正エラー: %s : '%s'",Symbol(),m_trade.ResultComment()); printf("修正パラメータ : SL=%f,TP=%f",sar_stop,tp); } //--- 修正後はエキスパートから退出 res=true; } } //--- 結果 return(res); }

2022.07.09
最初 前へ 6 7 8 9 10 11 12 13 14 15 16 次へ 最後