無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
スクリプトを気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 38
- 評価:
- パブリッシュ済み:
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
#property copyright "Samson Mwita 2025" #property link "Samson Mwita 2025" #property version "1.00" #property description "Advanced price action-based dynamic exit strategy" #property description "Monitors Fibonacci, market structure, candlestick patterns" #property description "and behavioral patterns for optimal exit timing" //--- 入力パラメータ input double ProfitActivationPercent = 70.0; // 取引がTPまでX%になったら監視を開始する。 input bool UseRSIReversal = true; // 逆転検知にRSIを使う input int RSIPeriod = 14; // RSI期間 input double RSIOverbought = 70.0; // RSI 買われすぎレベル input double RSI_Oversold = 30.0; // RSI 売り越しレベル input bool UseCandlestickPatterns = true; // ローソク足のパターンを使う input bool UseMovingAverageCross = false; // 確認にはMAクロスを使用 input int FastMA_Period = 5; // 高速MA期間 input int SlowMA_Period = 10; // スローMA期間 input int CheckEveryXSeconds = 10; // チェックする頻度(秒) //+------------------------------------------------------------------+ //| スクリプト・プログラム開始機能| //+------------------------------------------------------------------+ void OnStart() { //--- スクリプト開始メッセージを表示する Print("Dynamic Exit Protector Started - Monitoring Trades..."); //--- 連続監視用のタイマーを作成する EventSetTimer(CheckEveryXSeconds); } //+------------------------------------------------------------------+ //| タイマ機能 - X秒ごとに実行される。 //+------------------------------------------------------------------+ void OnTimer() { CheckAndProtectTrades(); } //+------------------------------------------------------------------+ //| トレードをチェックし、保護するためのメイン機能。 //+------------------------------------------------------------------+ void CheckAndProtectTrades() { int total = PositionsTotal(); for(int i = total-1; i >= 0; i--) { ulong ticket = PositionGetTicket(i); if(ticket > 0) { string symbol = PositionGetString(POSITION_SYMBOL); double volume = PositionGetDouble(POSITION_VOLUME); double openPrice = PositionGetDouble(POSITION_PRICE_OPEN); double currentProfit = PositionGetDouble(POSITION_PROFIT); ulong type = PositionGetInteger(POSITION_TYPE); double sl = PositionGetDouble(POSITION_SL); double tp = PositionGetDouble(POSITION_TP); //--- テイクプロフィットが設定されていない場合はスキップする。 if(tp == 0) continue; double currentPrice = (type == POSITION_TYPE_BUY) ? SymbolInfoDouble(symbol, SYMBOL_BID) : SymbolInfoDouble(symbol, SYMBOL_ASK); //--- TPにどれだけ近づいているかを計算する(パーセンテージで)。 double distanceToTP = 0; double progressToTP = 0; if(type == POSITION_TYPE_BUY) { distanceToTP = tp - openPrice; progressToTP = (currentPrice - openPrice) / distanceToTP * 100; } else // 売りポジション { distanceToTP = openPrice - tp; progressToTP = (openPrice - currentPrice) / distanceToTP * 100; } //--- TPに近づいたら、反転をチェックする。 if(progressToTP >= ProfitActivationPercent) { bool shouldClose = false; string reason = ""; //--- RSIリバーサルをチェックする(有効な場合) if(UseRSIReversal && CheckRSI_Reversal(symbol, type)) { shouldClose = true; reason = "RSI Reversal Signal"; } //--- ローソク足パターンをチェックする(有効な場合) if(UseCandlestickPatterns && CheckCandlestickReversal(symbol, type)) { shouldClose = true; reason = "Candlestick Reversal Pattern"; } //--- MAクロスをチェックする(有効な場合) if(UseMovingAverageCross && CheckMA_Cross(symbol)) { shouldClose = true; reason = "Moving Average Cross"; } //--- 追加の安全性:利益が著しく減少し始めた場合 if(IsProfitDecreasing(symbol, ticket, currentProfit)) { shouldClose = true; reason = "Profit Retracement Detected"; } //--- 逆転条件が満たされたら取引をクローズする。 if(shouldClose) { if(ClosePosition(ticket, symbol, volume, type)) { Print("Position #", ticket, " closed. Reason: ", reason, " | Progress to TP: ", DoubleToString(progressToTP, 1), "%", " | Final Profit: ", DoubleToString(currentProfit, 2)); } } } } } } //+------------------------------------------------------------------+ | RSIで反転シグナルをチェックする| //+------------------------------------------------------------------+ bool CheckRSI_Reversal(string symbol, ulong positionType) { double rsi[]; ArraySetAsSeries(rsi, true); int handle = iRSI(symbol, PERIOD_CURRENT, RSIPeriod, PRICE_CLOSE); if(CopyBuffer(handle, 0, 0, 3, rsi) > 0) { // 買いポジションの場合:RSIが買われ過ぎに転じ、下降に転じるかどうか。 if(positionType == POSITION_TYPE_BUY) { if(rsi[0] < rsi[1] && rsi[1] > RSIOverbought) return true; } // 売りポジションの場合:RSIが売られ過ぎに転じ、上昇に転じるか注目する。 else { if(rsi[0] > rsi[1] && rsi[1] < RSI_Oversold) return true; } } return false; } //+------------------------------------------------------------------+ //| ローソク足の反転パターンをチェックする。 //+------------------------------------------------------------------+ bool CheckCandlestickReversal(string symbol, ulong positionType) { MqlRates rates[]; ArraySetAsSeries(rates, true); if(CopyRates(symbol, PERIOD_CURRENT, 0, 3, rates) > 0) { // 買いポジションのための単純な弱気反転パターン if(positionType == POSITION_TYPE_BUY) { // 弱気の巻き込みや流れ星をチェックする if((rates[1].close > rates[1].open && rates[0].close < rates[0].open && rates[0].close < rates[1].open) || // 弱気の巻き込み (rates[0].high - MathMax(rates[0].open, rates[0].close) > MathAbs(rates[0].close - rates[0].open) * 2)) // 流れ星 return true; } // 売りポジションのための単純な強気反転パターン else { // 強気の巻き込みまたはハンマーをチェックする if((rates[1].close < rates[1].open && rates[0].close > rates[0].open && rates[0].close > rates[1].open) || // 強気の巻き込み (MathMin(rates[0].open, rates[0].close) - rates[0].low > MathAbs(rates[0].close - rates[0].open) * 2)) // ハンマー return true; } } return false; } //+------------------------------------------------------------------+ //| 移動平均のクロスチェック| //+------------------------------------------------------------------+ bool CheckMA_Cross(string symbol) { double fastMA[], slowMA[]; ArraySetAsSeries(fastMA, true); ArraySetAsSeries(slowMA, true); int fast_handle = iMA(symbol, PERIOD_CURRENT, FastMA_Period, 0, MODE_SMA, PRICE_CLOSE); int slow_handle = iMA(symbol, PERIOD_CURRENT, SlowMA_Period, 0, MODE_SMA, PRICE_CLOSE); if(CopyBuffer(fast_handle, 0, 0, 2, fastMA) > 0 && CopyBuffer(slow_handle, 0, 0, 2, slowMA) > 0) { // 弱気のクロス(高速MAが低速MAを下回る)をチェックする if(fastMA[1] > slowMA[1] && fastMA[0] < slowMA[0]) return true; } return false; } //+------------------------------------------------------------------+ //| 利益が著しく減少しているかどうかをチェックする。 //+------------------------------------------------------------------+ bool IsProfitDecreasing(string symbol, ulong ticket, double currentProfit) { // 実際の実装では、利益履歴を追跡したいかもしれない。 // これは単純化したもので、以前の利益値を保存することもできる。 // 利益が一定の割合で減少したかどうかを比較する。 // 今のところ、価格の動きに基づく単純なアプローチを使うことにする。 static double lastProfit = 0; static ulong lastTicket = 0; if(lastTicket != ticket) { lastProfit = currentProfit; lastTicket = ticket; return false; } // 利益がピーク時から20%以上減少した場合 if(currentProfit < lastProfit * 0.8 && currentProfit > 0) { return true; } // 現在の利益の方が大きい場合、最後の利益を更新する if(currentProfit > lastProfit) { lastProfit = currentProfit; } return false; } //+------------------------------------------------------------------+ //| クローズポジション機能| //+------------------------------------------------------------------+ bool ClosePosition(ulong ticket, string symbol, double volume, ulong type) { MqlTradeRequest request = {1}; MqlTradeResult result = {0}; request.action = TRADE_ACTION_DEAL; request.position = ticket; request.symbol = symbol; request.volume = volume; request.deviation = 10; request.comment = "Dynamic Exit"; if(type == POSITION_TYPE_BUY) { request.type = ORDER_TYPE_SELL; request.price = SymbolInfoDouble(symbol, SYMBOL_BID); } else { request.type = ORDER_TYPE_BUY; request.price = SymbolInfoDouble(symbol, SYMBOL_ASK); } return OrderSend(request, result); } //+------------------------------------------------------------------+ |初期化解除関数| //+------------------------------------------------------------------+ //+------------------------------------------------------------------+
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/66130
VR Locker Lite - ポジティブロックに基づく取引戦略
ポジティブロックを使用して動作し、取引ロボットが1つのポジティブロックを作成し、トレーダー自身がその処理方法を決定します。
取引戦略の頭または尾 (Heads or Tails)
信号ブロックコードの分析を伴う頭または尾の取引戦略(頭または尾)の古典的なバージョン。
iCrosshair - Real-Time Candle Metrics on Hover
任意のローソク足にカーソルを合わせると、MT5で表示されないものが表示されます:レンジサイズ、ボディパーセンテージ、芯の比率。スマート、高速、カスタマイズ可能。
Accelerator Oscillator (AC)
アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。
