コーディングのヘルプ - ページ 785

 

私はコードがボックスを描画し、ろうそくパターンが閉じた検出された後に一度だけテキストを印刷するために必要なものを知ることができますか?

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---code start   
   int counted_bars=IndicatorCounted();
//---check for possible errors   
   if (counted_bars<0) return(-1);
//---last counted bar will be recounted   
   if (counted_bars>0) counted_bars--;    
   int limit=Bars-counted_bars;
   for(int i = limit-1; i >= 0; i--)
   {
      if (i >= MathMin(Maxbars-1, rates_total-1-50)) continue;
     
      double high1  = High[i];
      double low1   = Low[i];
      double open1  = Open[i];
      double close1 = Close[i];             
      double high2  = High[i+1];
      double low2   = Low[i+1];
              
      Bar1[i] = EMPTY;
      Bar2[i] = EMPTY;
      Bar3[i] = EMPTY;
      Bar4[i] = EMPTY;
      int sigtf=0;
      if(_Period==1440 || _Period==43200){sigtf=6;}
      else{sigtf=5;}
      int sigbox=0;
      //double   priceopen = iOpen(NULL,0,1);
      //double   priceclose = iClose(NULL,0,1);
      if (high1>high2 && low1<low2 && close1>open1)
      {
         Bar1[i] = High[i];      
         Bar2[i] = Low[i];  
         Bar3[i] = Open[i];      
         Bar4[i] = Close[i];
         sigbox = 1;
         Print("test 1");
      }
           
      if(sigbox==1)
      {
         sigbox=0;
         DrawBox("Area",i,Time[i],Bar1[i],Time[i]+((_Period*sigtf)*60),Bar2[i],clrGainsboro);
      }
      else
      {
         sigbox=0;
      }      
   }
   ChartRedraw(0);
//---code end
   return(rates_total);
  }
 
void DrawBox(string bxname, int i, datetime time1, double price1,  datetime time2, double price2, color bxcolor)
{   
   string objname = objref+bxname+(string)i;   
   ObjectDelete(objname);
   ObjectCreate(0,objname,OBJ_RECTANGLE,0,time1,price1,time2,price2);
   ObjectSet(objname, OBJPROP_COLOR, bxcolor);
   ObjectSet(objname, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(objname, OBJPROP_WIDTH, 0);
   ObjectSet(objname, OBJPROP_FILL, true);
   ObjectSet(objname, OBJPROP_BACK, false);
   ObjectSet(objname, OBJPROP_SELECTABLE, false);
   ObjectSet(objname, OBJPROP_HIDDEN, true);
}


ファイル:
 

mq4の水平線を 自分の値で作る方法。

 
#region  Using declarations
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    /// <summary>
    /// Enter the description of your new custom indicator here
    /// </summary>
    [Description("Enter the description of your new custom indicator here")]
    public class NPSqueeze : Indicator
    {
        #region  Variables
        // Wizard generated variables
            private int length = 20; // Default setting for Length
            private double bBDev = 2; // Default setting for BBDev
            private double kCDev = 1.5; // Default setting for KCDev
        // User defined variables (add any user defined variables below)
        #endregion

        /// <summary>
        /// This method is used to configure the indicator and is called once before any bar data is loaded.
        /// </summary>
        protected override void Initialize()
        {
            Add(new Plot(Color.FromKnownColor(KnownColor.Orange), PlotStyle.Bar, "Squeeze"));
            Overlay                             = false;
        }

        /// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        protected override void OnBarUpdate()
        {
            // Use this method for calculating your indicator values. Assign a value to each
            // plot below by replacing 'Close[0]' with your own formula.
                        double value = Bollinger(bBDev,length).Upper[0]-KeltnerChannel(kCDev,length).Upper[0] ;
            Squeeze.Set(value);
        }

        #region  Properties
        [Browsable(false)]      // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
        [XmlIgnore()]           // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
        public DataSeries Squeeze
        {
            get { return Values[0]; }
        }

        [Description("BB and KC average length")]
        [GridCategory("Parameters")]
        public int Length
        {
            get { return length; }
            set { length = Math.Max(1, value); }
        }

        [Description("BB deviations")]
        [GridCategory("Parameters")]
        public double BBDev
        {
            get { return bBDev; }
            set { bBDev = Math.Max(0, value); }
        }

        [Description("KC deviation in ATR's")]
        [GridCategory("Parameters")]
        public double KCDev
        {
            get { return kCDev; }
            set { kCDev = Math.Max(0, value); }
        }
        #endregion
    }
}

#region  NinjaScript generated code. Neither change nor remove.
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    public partial class Indicator : IndicatorBase
    {
        private NPSqueeze[] cacheNPSqueeze = null;

        private static NPSqueeze checkNPSqueeze = new NPSqueeze();

        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        public NPSqueeze NPSqueeze(double bBDev, double kCDev, int length)
        {
            return NPSqueeze(Input, bBDev, kCDev, length);
        }

        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        public NPSqueeze NPSqueeze(Data.IDataSeries input, double bBDev, double kCDev, int length)
        {
            if (cacheNPSqueeze != null)
                for (int idx = 0; idx < cacheNPSqueeze.Length; idx++)
                    if (Math.Abs(cacheNPSqueeze[idx].BBDev - bBDev) <= double.Epsilon && Math.Abs(cacheNPSqueeze[idx].KCDev - kCDev) <= double.Epsilon && cacheNPSqueeze[idx].Length == length && cacheNPSqueeze[idx].EqualsInput(input))
                        return cacheNPSqueeze[idx];

            lock (checkNPSqueeze)
            {
                checkNPSqueeze.BBDev = bBDev;
                bBDev = checkNPSqueeze.BBDev;
                checkNPSqueeze.KCDev = kCDev;
                kCDev = checkNPSqueeze.KCDev;
                checkNPSqueeze.Length = length;
                length = checkNPSqueeze.Length;

                if (cacheNPSqueeze != null)
                    for (int idx = 0; idx < cacheNPSqueeze.Length; idx++)
                        if (Math.Abs(cacheNPSqueeze[idx].BBDev - bBDev) <= double.Epsilon && Math.Abs(cacheNPSqueeze[idx].KCDev - kCDev) <= double.Epsilon && cacheNPSqueeze[idx].Length == length && cacheNPSqueeze[idx].EqualsInput(input))
                            return cacheNPSqueeze[idx];

                NPSqueeze indicator = new NPSqueeze();
                indicator.BarsRequired = BarsRequired;
                indicator.CalculateOnBarClose = CalculateOnBarClose;
#if  NT7
                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;
                indicator.MaximumBarsLookBack = MaximumBarsLookBack;
#endif
                 indicator.Input = input;
                indicator.BBDev = bBDev;
                indicator.KCDev = kCDev;
                indicator.Length = length;
                Indicators.Add(indicator);
                indicator.SetUp();

                NPSqueeze[] tmp = new NPSqueeze[cacheNPSqueeze == null ? 1 : cacheNPSqueeze.Length + 1];
                if (cacheNPSqueeze != null)
                    cacheNPSqueeze.CopyTo(tmp, 0);
                tmp[tmp.Length - 1] = indicator;
                cacheNPSqueeze = tmp;
                return indicator;
            }
        }
    }
}

// This namespace holds all market analyzer column definitions and is required. Do not change it.
namespace NinjaTrader.MarketAnalyzer
{
    public partial class Column : ColumnBase
    {
        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        [Gui.Design.WizardCondition("Indicator")]
        public Indicator.NPSqueeze NPSqueeze(double bBDev, double kCDev, int length)
        {
            return _indicator.NPSqueeze(Input, bBDev, kCDev, length);
        }

        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        public Indicator.NPSqueeze NPSqueeze(Data.IDataSeries input, double bBDev, double kCDev, int length)
        {
            return _indicator.NPSqueeze(input, bBDev, kCDev, length);
        }
    }
}

// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
    public partial class Strategy : StrategyBase
    {
        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        [Gui.Design.WizardCondition("Indicator")]
        public Indicator.NPSqueeze NPSqueeze(double bBDev, double kCDev, int length)
        {
            return _indicator.NPSqueeze(Input, bBDev, kCDev, length);
        }

        /// <summary>
        /// Enter the description of your new custom indicator here
        /// </summary>
        /// <returns></returns>
        public Indicator.NPSqueeze NPSqueeze(Data.IDataSeries input, double bBDev, double kCDev, int length)
        {
            if (InInitialize && input == null)
                throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");

            return _indicator.NPSqueeze(input, bBDev, kCDev, length);
        }
    }
}

NinjaのインジケータをMQL4, MT4に変換するのを手伝ってください。

Rgds

 
Afghan123 #:
OK
コードを要求する
 
更新ありがとうございます
 
Pls どのように私は私のインジケータ4を得ることができます。
 

コーダーの皆さん、こんにちは。

私は、翌日の外国為替ペアの価格を予測するためのMATLABコードを開発しました。今、私は、日付、時間、シンボル、シグナル(買い=1、売り=1、0=何もしない)を含む.csvファイルを読み取ることができるmql4の専門家が必要です。

私はあなたが私のためにそれを提供する場合、感謝されるでしょう。

ありがとう、マリアム。

 
こんにちは。一つ質問があるのですが、助けてください。私は、エントリー/エグジット/TP/SLなどのいくつかの指標に基づいてEAを作りました。私の問題は、それがあまりにも多くの取引を開くことです。私が言いたいのは:私は2本線のクロスインジケーターを取引開始の条件の1つとして持っています。もし、クロスアップ+他の条件があれば買い、クロスダウン+他の条件があれば売りとなります。そこで、そのインジケータが上に交差し、他のすべての条件が満たされ、取引が開始されたとします。数本のローソク足の後、TPがヒットし、取引は終了します。しかし、インジケータはまだ反対方向に反転していないため、別の取引が開始されます。これは、ある特定の条件下で停止させたいものです。私が言いたいのは、例えば、トレンドが形成され、私のすべてのインジケータが取引を開始することに同意し、取引が開始され、4-5本のローソク足の後にTPがヒットされることである。そして、別の注文が開始されますが、おそらくトレンドはほぼ終了しており、私は底に近いところでエントリーしています。これを変えたいのです。もし、私のインジケータがローソク足の7本前に反転したら、取引を開始しないような条件を作成することです。
 
Daniel cioca #: こんにちは、皆さん。一つ質問があります

二重投稿は やめましょうすでに別のスレッドを開いていたんですね。

フォーラムの一般的なルールとベストプラクティス。- 一般 - MQL5プログラミングフォーラム (2017)
 
こんにちは、私は自分の指標の1つにバッファを追加し、SMAでそれを移入する必要があります(私が修正する必要がある問題のために私がすべきであると誰かが示唆したように)。問題は、これを行う方法があまりわからないことです。誰か助けてください。