初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1268

 
Alexey Viktorov:

オブジェクトの名前を変更した後、まだそのオブジェクトにアクセスできない可能性が非常に高いです。リネームの後にChartRedrawを入れてみるとよいでしょう。それがうまくいかない場合は、別の方法でシーケンスを構築する必要があります。

ps; もう一つの方法は、まずスパラム名で再塗装し、その後リネームすることです。

本当にありがとうございました!!あなたがいなかったら、私はどうすればいいのでしょう?)

 
Vladimir Karputov:

フィボナッチRR コードでの例-。

例を挙げていただきありがとうございます。しかし、これはあくまで取引レベルを設定するものです。0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8% などのフィボナッチ・レベルの設定に興味があるのですが・・・。

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

このインジケータは、デフォルトで、標準的なフィボレベルで描画します。ターミナルにFiboツールのソースコードがあるはずで、そこから変更したりコピーしたりできるはずなのですが...。見つからないのですが、ご存知の方、ヒントをお願いします。

また、カスタムインジケータに0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8%... という レベルを追加するにはどうすればよいのでしょうか。

   ObjectCreate(chart_id,name,OBJ_EXPANSION,nwin,time1,price1,time2,price2,time3,price3);
   ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
   ObjectSetInteger(chart_id,name,OBJPROP_STYLE,style);
   ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,width);

   if(ray>0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,true);
   if(ray<0)ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,true);

   if(ray==0)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_RIGHT,false);
      ObjectSetInteger(chart_id,name,OBJPROP_RAY_LEFT,false);
     }

   ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
   ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);

   for(int numb=0; numb<10; numb++)
     {
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELCOLOR,numb,Color);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELSTYLE,numb,style);
      ObjectSetInteger(chart_id,name,OBJPROP_LEVELWIDTH,numb,width);
     }

アドバイスお願いします

 
Kira27:

本当にありがとうございました!!あなたがいなかったら、私はどうすればいいのでしょう?)

論理的な思考を身につけることができるかも)))

 
VVT:

例を挙げていただきありがとうございます。しかし、これはあくまで取引レベルを設定するものです。0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8% などのフィボナッチ・レベルの設定に興味があるのですが・・・。

https://www.metatrader5.com/ru/terminal/help/objects/fibo/fibo_retracement

オートインジケータは、デフォルトで、標準的なフィボレベルで描画します。ターミナルにFiboツールのソースコードがあるはずで、そこから変更したりコピーしたりできるはずなのですが...。見つからないのですが、ご存知の方、ヒントをお願いします。

また、カスタムインジケータに0.0%, 23.6%, 38.2%, 50%, 61.8%, 100%, 161.8%, 261.8%... という レベルを追加するにはどうすればよいのでしょうか。

アドバイスお願いします

この例では、レベルを設定するだけです。と聞かれたら、コードを開いて確認していただけませんか?

 
Vladimir Karputov:

上に例を挙げましたが、レベルの設定があるだけです。と聞かれたら、わざわざコードを開いて確認する。

ありがとうございます、そうなんです、ちょっとわかりにくいですが、理解しようと思っています)ありがとうございます。

 

Mql5ではどのようなコードになるのか


extern int    StartHour   = 12;    //Час начала торговли(терминальное время)

int start()
{
if  (Hour()==StartHour)
    {
     OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Ask-StopLoss*Point,Bid+TakeProfit*Point,"советник",MAGIC,expiration,Blue);
    }  
return(0);
}
 
Dmitriywelcome:

Mql5ではどのようなコードになるのでしょうか?

   MqlDateTime tm;
   TimeCurrent(tm);
   if(tm.hour==12) {
    ...
   }

mql4で表示されるのと全く同じです。


ちょっとだけお手伝い

MqlDateTime

日付構造体は、int 型の 8 つのフィールドを含む。

structMqlDateTime
{
intyear;// 年
intmon;// 月
intday;// day
inthour;// 時間; // 時間
intmin;// 分
intsec;// 秒
intday_of_week;// 曜日 (0-Sunday, 1-Monday, ...)...,6-土)
intday_of_year;// 年内の通し番号(1月1日は0番)
};

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
 
Vladimir Karputov:

上にあげた例は、レベルが設定されているところです。という方は、コードを開いて確認してみてください。

様々なオブジェクト、レベル、時間枠を持つ素晴らしい自動描画装置 です。

 
int OnInit()
  {
//---
   ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

/***********************OnChartEvent function************************/
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {
   if(id == CHARTEVENT_OBJECT_CREATE)
     {
      //----------------------------------------------------------------------------------------
      double   Level_0= ObjectGetDouble(
                           0,          // идентификатор графика
                           sparam,              // имя объекта
                           OBJPROP_PRICE,           // идентификатор свойства
                           0     // модификатор свойства
                        );


      double   Level_1= ObjectGetDouble(
                           0,          // идентификатор графика
                           sparam,              // имя объекта
                           OBJPROP_PRICE,           // идентификатор свойства
                           1     // модификатор свойства
                        );
      //------------------------------------------------------------------------------------------------------
      if(Level_0 > Level_1)
         ObjectSetInteger(0,sparam,OBJPROP_COLOR,clrDeepSkyBlue);
      else
         ObjectSetInteger(0,sparam,OBJPROP_COLOR,clrYellow);
      //+------------------------------------------------------------------+
      ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); //  получим время создания объекта
      string newName = "fibka"+string(timeCreate); //  сформируем новое имя объекта
      ObjectSetString(0, sparam, OBJPROP_NAME, newName);  //  переименуем объект
     }
  }/******************************************************************/

//+------------------------------------------------------------------+
Alexey Viktorov
:

論理的な思考が身につくかも))))。

教えていただいた中で、できる限りのことを試し、ひねり出したのですが、MT5ではすべて同じ色の線です。 MT4では、何の遅れもなく、普通に色が変わっています。

 

ある指標でポイントを取り、それを別のバッファに転送するアルゴリズムをどのように構成するか。

- トレンドラインを描くために(写真のように)

点のスナップショット

-----------------------------------------

直感でいろいろ試してみたが、描かれてはいるが、変なところに描かれている。

//---
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);
//---
   z=Z_;
   for(i=limit; i>=0; i--)
     {
      if(!CalculatePivot())
         return(0);
      if(rates_total!=prev_calculated && i==0)
         Z_=z;
      //---
      DnArrowiCustom[i]=0.0;
      UpArrowiCustom[i]=0.0;
      CoralDn=((Inpyna && BufferC[i]<BufferC[i+1]) || (Inpdoy && BufferCcop[i]<BufferCcop[i+1]) ||
               (Inptrei && BufferC[i]<BufferCcop[i]) || (Inppatry && BufferCcop[i]<BufferC[i]) ||
               (Inpcinc && close[i]<m_Coral_price) || (Inpshase && close[i]<BufferC[i]) || (Inpshapt && close[i]<m_p_price));
      CoralUp=((Inpyna && BufferC[i]>BufferC[i+1]) || (Inpdoy && BufferCcop[i]>BufferCcop[i+1]) ||
               (Inptrei && BufferC[i]>BufferCcop[i]) || (Inppatry && BufferCcop[i]>BufferC[i]) ||
               (Inpcinc && close[i]>m_Coral_price) || (Inpshase && close[i]>BufferC[i]) || (Inpshapt && close[i]>m_p_price));
      if(CoralDn)
         z = 1;
      if(CoralUp)
         z = 2;
      if(CoralDn && (z==1 || z==0))
        {
         if(((InpFiltryP && close[i]<m_p_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryC && close[i]<m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryM && close[i]<m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)))
            if(OldTrend>0)
               UpArrowiCustom[i]=high[i];
         if(i!=0)
            OldTrend=-1;
         //if(FractalUpBuffer[i]==UpArrowiCustom[i])
           // return(rates_total);
        }
      if(CoralUp && (z==2 || z==0))
        {
         if(((InpFiltryP && close[i]>m_p_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryC && close[i]>m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)) ||
            ((InpFiltryM && close[i]>m_Coral_price) || (!InpFiltryP && !InpFiltryM && !InpFiltryC)))
            if(OldTrend<0)
               DnArrowiCustom[i]=low[i];
         if(i!=0)
            OldTrend=+1;
        // if(FractalDownBuffer[i]==DnArrowiCustom[i])
           // return(rates_total);
        }
     }
   m_left_Ctime=time[rates_total-2];
//---
   /*if(prev_calculated==0)
     {
      //---
      for(int u=rates_total-4; u>=10; u--)
        {
         if(FractalUpBuffer[u]!=0.0 && FractalUpBuffer[u]!=EMPTY_VALUE)
           {
            if(upper_left==0.0)
              {
               upper_left=FractalUpBuffer[u];
               upper_left_date=time[u];
              }
            else
               if(upper_right==0.0)
                 {
                  upper_right=FractalUpBuffer[u];
                  upper_right_date=time[u];
                 }
           }
         if(FractalDownBuffer[u]!=0.0 && FractalDownBuffer[u]!=EMPTY_VALUE)
           {
            if(lower_left==0.0)
              {
               lower_left=FractalDownBuffer[u];
               lower_left_date=time[u];
              }
            else
               if(lower_right==0.0)
                 {
                  lower_right=FractalDownBuffer[u];
                  lower_right_date=time[u];
                 }
           }
         if(upper_left!=0.0 && upper_right!=0.0 && lower_left!=0.0 && lower_right!=0.0)
            break;
        }
      if(upper_left==0.0 || upper_right==0.0 || lower_left==0.0 || lower_right==0.0)
         return(rates_total);
      //---
      TrendPointChange(0,m_Upper_line,0,upper_right_date,upper_right);
      TrendPointChange(0,m_Upper_line,1,upper_left_date,upper_left);
      TrendPointChange(0,m_Lower_line,0,lower_right_date,lower_right);
      TrendPointChange(0,m_Lower_line,1,lower_left_date,lower_left);
      //---
      return(rates_total);
     }*/
//---

-----------------------------------------------------------------------------------------------------

インジケータを添付しました-動作します-が、これらのラインを調整することはできません。

ファイル:
1.mq5  82 kb