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

 
私の質問は、私のEAがポンドバックス・チャートにあり、ユーロバックス・チャートの水平線を 見たい場合、これは動作しないのですか?
 
Aleksandr Egorov:
私の質問は、私のEAがGBPチャートにあり、EURチャートから水平線を 見たい場合、これは動作しませんか?

関数の最初のパラメータに注目

string  ObjectName( 
   long  chart_id,           // идентификатор графика 
   int   pos,                // номер в списке объектов 
   int   sub_window=-1,      // номер окна 
   int   type=-1             // тип объекта 
   );

グラフィックオブジェクトを扱うすべての機能に存在するものです。

正しい識別子を使えば、どのチャートからも簡単にオブジェクトのプロパティを取得することができます。

Документация по MQL5: Графические объекты / ObjectName
Документация по MQL5: Графические объекты / ObjectName
  • www.mql5.com
Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду...
 
まあ長いm5など0現在のチャートであり、どのようにSumbolをひも解く?
 
Aleksandr Egorov:
長いM5とTG 0現在のチャートが、文字列sumbol方法です?私はユーロのチャートからポンドにそれを必要とする多分私は理解していない何か

いいえ、タイムフレームはありません - チャートIDが必要です:ChartID

選択肢のひとつは、線のあるチャートでスクリプトを実行し、ChartIDを 表示させ、別のチャートから線のプロパティにアクセスできるようにすることです。例えば、水平線であれば、ObjectGetDoubleを通じて

 
Vladimir Karputov:

いいえ、タイムフレームはありません - チャートIDが必要です:ChartID

選択肢の一つ:ラインのあるチャートで、ChartIDを 表示するスクリプトを実行すれば、別のチャートからラインのプロパティにアクセスできる。例えば、水平線であれば、ObjectGetDoublによって、ありがとうございます

しゃい

 
Aleksandr Egorov:

しゃい

グラフオブジェクトの名前と タイプ(すべてのグラフを検索するには名前が必要で、正確なオブジェクトを見つけるにはタイプが必要です)を知っていればよいというオプションもあります ...

 
Aleksandr Egorov:

しゃい

バリエーション2:名前、オブジェクトの種類、どのウィンドウで検索するかを設定します(「0」-メインウィンドウ内)。OnInitで検索を行い、オブジェクトが見つかれば、そのチャート識別子を m_obj_chart_id変数に保存します。

//+------------------------------------------------------------------+
//|                                    Object from another chart.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input string      InpObjName     = "Object Name";  // Object: Name
input ENUM_OBJECT InpObjType     = OBJ_HLINE;      // Object: Type
input int         InpObjSubWindow= 0;              // Object: Window Index
//---
long     m_obj_chart_id=-1;   // Object ChartID
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//--- variables for chart ID
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   Print("ChartFirst =",ChartSymbol(prevChart)," ID =",prevChart);
   while(i<limit)// We have certainly not more than 100 open charts
     {
      currChart=ChartNext(prevChart); // Get the new chart ID by using the previous chart ID
      if(currChart<0)
         break;          // Have reached the end of the chart list
      int total=ObjectsTotal(currChart,InpObjSubWindow,InpObjType);
      for(int j=0; j<total; j++)
         if(ObjectName(currChart,j,InpObjSubWindow,InpObjType)==InpObjName)
           {
            m_obj_chart_id=currChart;
            break;
           }
      prevChart=currChart;// let's save the current chart ID for the ChartNext()
      i++;// Do not forget to increase the counter
     }
//---
   if(m_obj_chart_id==-1)
      return(INIT_FAILED);
   else
      Print("Object Name ",InpObjName," found on chart ",m_obj_chart_id);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

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

  }
//+------------------------------------------------------------------+
ファイル:
 
ストップロスやテイクプロフィットの水準を指定して成行注文(TRADE_ACTION_DEAL)を出した場合、ブローカーがSLやTPを設定することを禁止している場合、注文はキャンセルされたり、SLやTPがゼロに設定されたりするのでしょうか?
 
Vladimir Karputov:

バリエーション2:名前、オブジェクトの種類、どのウィンドウで検索するかを指定します(「0」-メインウィンドウで検索)。OnInitで検索を行い、オブジェクトが見つかれば、そのチャート識別子を m_obj_chart_id変数に保存します。

ありがとうございました。

 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

ウラジミール・カルプトフ 2019.08.31 08:16


そして、あなたの間違いは、スタート価格形成にあります。

//--- start work
   double start_price_ask=m_symbol.Ask()-ExtUpGap;
   double start_price_bid=m_symbol.Bid()+ExtDownGap;

StopとLimitの注文の開始価格を別々にすることをお勧めします。

ウラジミールさん、こんにちは。

以下のスクリプトの開始価格を修正したいので、ご協力をお願いします。

//--- start work


   double start_price_ask=0.0;
   double start_price_bid=0.0;
   if(InpPending==stop)
     {
      start_price_ask=m_symbol.Ask()+ExtUpGap;
      start_price_bid=m_symbol.Bid()-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=m_symbol.Ask()-ExtUpGap;
         start_price_bid=m_symbol.Bid()+ExtDownGap;
        }

スクリプトは、アスクとビッドに基づいてではなく、前のバー(ローソク足)の高値と安値に基づいて保留中の注文を配置する必要があります。

敬具 ウラジミール

理由: