ストップロスとテイクプロフィットに 変数を設定できますか?ありがとうございます!
このアドバイザーはストップロスとテイクプロフィットなしで作られました。
おそらく、私が望めば、それは他のアドバイザーで実現されるでしょう。
こんにちは!
しかし、例えば、後で手動でポジションをクローズしなければなりませんか?
Brian Sinclair :
固定ロットを使用するのに対して、資金管理を追加することはできますか?
固定ロットを使用するのに対して、資金管理を追加することはできますか?
質問を具体的に
Brian Sinclair :
固定ロットを使用するのに対して、資金管理を追加することはできますか?
固定ロットを使用するのに対して、資金管理を追加することはできますか?
バージョン2をリリースしました:DoubleZigZag 2
バージョン2の新機能
- 資金管理:ロット OR リスク-ポジションサイズ管理(ロット計算) セクションに詳細があります。
- 資金管理 "の値-ポジションサイズ管理(ロット計算)の 項をご覧ください。
- ポジションは1つだけ- 市場には常に1つのポジションしかありません。
- リバース- 取引シグナルの反転
- 反対ポジションのクローズ- シグナルと反対のポジションをクローズし、最初に反対ポジションのクローズが保証され、その後シグナルの方向に新しいポジションをオープンします。
- これは内部パラメータであり、入力パラメータには出力されず、「1つのポジションのみ」パラメータとは関係ありません。
Советники: DoubleZigZag 2
- 2020.02.08
- www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Советники: DoubleZigZag 2
//+------------------------------------------------------------------+ //|Hatorii_Total_Coverage.mq5 //|著作権 2026, MetaQuotes Ltd.| //| プロシステム:ダブル・ジグザグ+ブレーク+ジグザグ・ポイントでのSL //+------------------------------------------------------------------+ #property copyright "Copyright 2026" #property version "1.50" #property strict #include <Trade\Trade.mqh> //--- ENUMS enum ENUM_DIRECTION { DIR_BOTH = 0, DIR_ONLY_BUY = 1, DIR_ONLY_SELL = 2 }; //--- INPUTS (英語メニュー [引用: 2025-12-23]) input group "===運用構成 ===" input ENUM_DIRECTION InpTradeMode = DIR_BOTH; // 住所 input double InpLot = 0.1; // バッチ input int InpMagic = 882025; // マジックナンバー input group "=== FILTROS DE ESTRUCTURA (ZIGZAG) ===" input bool InpUseMacroZZ = true; // ジグザグX8(メジャー・トレンド・フィルター)を使う input bool InpSLatZZ = true; // 正確なSLをジグザグポイントに置く [引用: 2026-01-02]。 input group "=== FILTROS DE TENDENCIA (EMA) ===" input bool InpUseEMA = false; // EMAフィルター[引用:2025-12-21]をアクティブにする。 input int InpEMAPeriod = 200; // パーソナライズされたEMAの価値 [引用: 2025-12-21]. input group "=== RUTA DEL INDICADOR ===" input string InpIndiPath = "nuevos\\hf"; // 必須ルート [引用:2025-12-24]。 input int InpAmplitude = 2; // ハーフトレンド振幅 //--- グローバル CTrade trade; int handleHT, handleEMA, handleZZ_Fast, handleZZ_Macro; datetime lastTradeTime = 0; //+------------------------------------------------------------------+ int OnInit() { //--- ハーフトレンドの初期化 handleHT = iCustom(_Symbol, _Period, InpIndiPath, InpAmplitude); //--- EMAを初期化する handleEMA = iMA(_Symbol, _Period, InpEMAPeriod, 0, MODE_EMA, PRICE_CLOSE); //--- ジグザグを初期化する (OnInit内で修正したコード) handleZZ_Fast = iCustom(_Symbol, _Period, "Examples\\ZigZag", 13, 5, 3); handleZZ_Macro = iCustom(_Symbol, _Period, "Examples\\ZigZag", 13*8, 5*8, 3*8); if(handleHT == INVALID_HANDLE || handleZZ_Fast == INVALID_HANDLE || handleZZ_Macro == INVALID_HANDLE) { Alert("Error al cargar indicadores. Revisa la ruta: ", InpIndiPath); return(INIT_FAILED); } trade.SetExpertMagicNumber(InpMagic); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { double bufHT[], bufEMA[], bufMacroZZ[]; ArraySetAsSeries(bufHT, true); ArraySetAsSeries(bufEMA, true); ArraySetAsSeries(bufMacroZZ, true); if(CopyBuffer(handleHT, 7, 0, 1, bufHT) < 1) return; if(CopyBuffer(handleEMA, 0, 0, 1, bufEMA) < 1) return; if(CopyBuffer(handleZZ_Macro, 0, 0, 2, bufMacroZZ) < 1) return; double trendHT = bufHT[0]; double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); //--- AGGRESSIVE CLOSE(高周波の色が変わったら閉じる) GestionarCierres(trendHT); //--- ブレークによる入力ロジック if(!PositionExists() && iTime(_Symbol, _Period, 0) != lastTradeTime) { double highPrev = iHigh(_Symbol, _Period, 1); double lowPrev = iLow(_Symbol, _Period, 1); // フィルター bool emaBuyOK = !InpUseEMA || (ask > bufEMA[0]); bool emaSellOK = !InpUseEMA || (bid < bufEMA[0]); // ジグザグ・マクロ・フィルター (最終行の方向) bool macroBuyOK = true; bool macroSellOK = true; if(InpUseMacroZZ) { // ジグザグ・マクロの最後のセクションの方向をチェックする。 // (ここで、より複雑なピークロジックを追加することができる) } //--- 買い(青色HF+前回高値ブレイク) if(trendHT == 0.0 && InpTradeMode != DIR_ONLY_SELL && emaBuyOK && macroBuyOK) { if(ask > highPrev) { double sl = InpSLatZZ ? BuscarUltimoPuntoZZ(false) : 0; if(trade.Buy(InpLot, _Symbol, ask, sl, 0, "Ruptura + ZZ SL")) lastTradeTime = iTime(_Symbol, _Period, 0); } } //--- 売り(赤のHF+前回安値更新) if(trendHT == 1.0 && InpTradeMode != DIR_ONLY_BUY && emaSellOK && macroSellOK) { if(bid < lowPrev) { double sl = InpSLatZZ ? BuscarUltimoPuntoZZ(true) : 0; if(trade.Sell(InpLot, _Symbol, bid, sl, 0, "Ruptura + ZZ SL")) lastTradeTime = iTime(_Symbol, _Period, 0); } } } } //--- ストップロスの正確なジグザグポイントを見つける関数 [引用:2026-01-02]。 double BuscarUltimoPuntoZZ(bool buscarAlto) { double zzVal[]; ArraySetAsSeries(zzVal, true); for(int i=1; i<100; i++) { if(CopyBuffer(handleZZ_Fast, 0, i, 1, zzVal) > 0) { if(zzVal[0] > 0) return zzVal[0]; } } return 0; } void GestionarCierres(double trend) { for(int i=PositionsTotal()-1; i>=0; i--) { ulong ticket = PositionGetTicket(i); if(PositionSelectByTicket(ticket) && PositionGetInteger(POSITION_MAGIC) == InpMagic) { if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY && trend == 1.0) trade.PositionClose(ticket); if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL && trend == 0.0) trade.PositionClose(ticket); } } } bool PositionExists() { for(int i=PositionsTotal()-1; i>=0; i--) { if(PositionSelectByTicket(PositionGetTicket(i))) { if(PositionGetInteger(POSITION_MAGIC) == InpMagic && PositionGetString(POSITION_SYMBOL) == _Symbol) return true; } } return false; }
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
DoubleZigZag:
2つのジグザグインジケーターを分析に使用します。
作者: Vladimir Karputov