MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1533

 
Алексей КоКоКо:

一般的なドキュメントの見方を教えてください。テキストのような簡単なグラフィカルオブジェクトの例でさえ、たくさんのコードが書かれたサンプルを目の前にして、どのパラメータが必須でどれがそうでないか、どこにも書かれていないのが本当に心配です。 つまり、テキストを書いたりトレンドを設定したり、あるいはインディケータのバッファを理解するために、最低限入力すべきパラメータがわからず、コードをコピーアウトしてペーストしなければならないんです。

こんにちは、テキストの必須パラメータは、ウィンドウインデックス、座標参照、テキスト本体で、その他は任意です。

OBJ_LABELとOBJ_TEXTという2種類のオブジェクトがあり、前者はウィンドウピクセルに、後者はチャート上の時間や価格にバインドされていることを念頭に置く必要があります。

例えば、ピクセルにリンクしたテキストラベルが必要だとすると、次のようにします。

   ObjectCreate(0,name,OBJ_LABEL,0,0,0); // создаём объект в текущем (нулевом окне)
   ObjectSetString(0,name,OBJPROP_TEXT,text); // указываем какой текст должен в нём отображаться
   ObjectSetString(0,name,OBJPROP_FONT,fontname); // назначаем шрифт например Verdana или Tahoma
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,fontsize); // назначаем размер шрифта
   ObjectSetInteger(0,name,OBJPROP_COLOR, text_color); // назначаем цвет шрифта
   ObjectSetInteger(0,name,OBJPROP_CORNER,text_corner); // указываем от какого угла окна отсчитывать пиксели
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,text_anchor); // указываем как должен быть выровнен текст по центру или какому-то краю
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,XOFFSET); // указываем координату по горизонтали
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,YOFFSET); // указываем координату по вертикали
   ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); // указываем можно ли выделять и двигать метку мышкой или нельзя

これは、テキストラベルを描画するためのほぼ最小限のコードです。

は、OBJ_TEXT オブジェクトと同じですが、価格と時間のプロパティも指定する必要があります。

   ObjectSetDouble(0,name,OBJPROP_PRICE,0,price);
   ObjectSetInteger(0,name,OBJPROP_TIME,0,time);



text_corner は定数値のいずれかでなければならない。

ID

商品説明

コーナーレフトアッパー

チャート左上隅の座標中心

コーナー左下

チャート左下隅の座標の中心値

コーナーライトロワー

チャート右下の座標の中心値

コーナーライト・アッパー

チャート右上の座標の中心値


詳細はこちら: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner#enum_base_corner




text_corner は定数値のいずれかでなければならない。

識別子

商品説明

アンカー左上

左上隅のアンカーポイント

ANCHOR_LEFT

中央左側のアンカーポイント

アンカー左下

左下隅のアンカーポイント

ANCHOR_LOWER

中心より下のアンカーポイント

アンカー右下

右下隅のアンカーポイント

ANCHOR_RIGHT

中央右寄りのアンカーポイント

アンカーライトアッパー

右上隅のアンカーポイント

ANCHOR_UPPER

中央上部のアンカーポイント

ANCHOR_CENTER

オブジェクトのちょうど中心にアンカーポイント


詳細はこちら: https://www.mql5.com/ru/docs/constants/objectconstants/enum_basecorner



標準ライブラリに接続して、#include <ChartObjects</ChartObject.mqh> とそのクラスを使用することもできますが、私の意見では、これは生活を複雑にするだけです。

 
transcendreamer:

ご挨拶、テキストの必須パラメータはウィンドウインデックス、座標バインディング、テキスト本体で、その他は任意です。

OBJ_LABELとOBJ_TEXTという2種類のオブジェクトがあり、前者はウィンドウピクセルに、後者はチャート上の時間や価格にバインドされていることに留意してください。

例えば、ピクセルにリンクしたテキストラベルが必要だとすると、次のようにします。

これは、テキストラベルを描画するためのほぼ最小限のコードです。

はOBJ_TEXTオブジェクトと同じですが、価格と時間のプロパティを設定するだけです。


God bless you )文字だけでなく、インジケーターのバッファまで色々なものがありますね。カートの中身を取り出すと...)

 
Алексей КоКоКо:

God bless you )テキストだけでなく、インジケーターバッファーまで色々です。なぜトロッコから削除されるのですか?)

妄想でいつも通りトロッコから削除したらチェキ派に見つからなかった😀どうしたらいいのか全くわからない。

 
Artyom Trishkin:

そして、正しい選択肢は、まあ、とてもシンプルなのですが......。

そして、それは何なのか?書いてみたらどうだ?

 
あるEAでstarhourとstophourを挿入して、特定の時間に注文を出すようにしたのですが、例えば22:00に出した注文がstophour(23:00)に決済されないということは考えていませんでした。
私は、23:00の前にポジションを閉じる ための指標の信号を持っていないそれは、任意の決定を行うことが禁止されています。

ストップ高(23:00)以降に建てたポジションを決済できるEAを作るにはどうしたらいいか教えてください。
あるいは、徹夜にならないように、23時にすべてのポジションをクローズすればよい。


ありがとうございました。
 
Eugen8519:
しかし、例えば22:00にオープンした注文がstophour(23:00)にクローズしないことを考慮に入れていませんでした。
以前はポジションを閉じる ためのシグナル表示がなく、23時以降は一切の判断が禁止されていたためです。

ストップ高(23:00)以降に建てたポジションを決済できるEAを作るにはどうしたらいいか教えてください。
あるいは、徹夜にならないように、23時にすべてのポジションをクローズすればよい。


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

スターアワーとストップアワーはオープンオーダーにのみ適用されます。

 
MakarFX:

スターアワー・ストップアワーのみを発注する

それが問題で、starthour->stophourのオーダーを開いたり閉じたりしているだけです
また、オープンオーダーは、ストップアワー後にクローズされません。

ストップアワー後の取引はできません。



グローバルパラメーターが設定されている

bool           UseTimeLimit = true;
int            startHour    = 15;
int            stopHour     = 23;
bool           YesStop=false;
input          ENUM_TIMEFRAMES Timeframe = PERIOD_CURRENT;



また、OnTickにおいて

if(UseTimeLimit)
  {
    YesStop=true;
    MqlDateTime str1;
    TimeToStruct(TimeCurrent() , str1);
    if(str1.hour > startHour && str1.hour < stopHour)
       YesStop=false;
       if (YesStop)
       return;
  }
 
Eugen8519:
それが問題で、starthour->stophourのオーダーを開いたり閉じたりしているだけです
また、オープンオーダーは、ストップアワー後にクローズされることはありません。
クローズオーダーの表示機能
 
Eugen8519:
それが問題で、starthour->stophourのオーダーを開いたり閉じたりしているだけです
また、オープンオーダーは、ストップアワー後にクローズされることはありません。

斯くあるべし

if(UseTimeLimit)
  {
    YesStop=true;
    MqlDateTime str1;
    TimeToStruct(TimeCurrent() , str1);
    if(str1.hour > startHour && str1.hour < stopHour)
       YesStop=false;
       if (YesStop)
       return;
  }
....
if(YesStop==false)
  {
   условие для открытия ордеров
  }
 
MakarFX:

斯くあるべし

このように注文が終了します



(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+1]>WMA0[m_bar_current+1]) //Buy
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Sell");
     }
//if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
   if(EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+1]<WMA0[m_bar_current+1]) //Sell
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Buy");
     }


void CLOSEORDER(string ord)
  {
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY && ord=="Buy")
               m_trade.PositionClose(m_position.Ticket());  // Close Buy
            if(m_position.PositionType()==POSITION_TYPE_SELL && ord=="Sell")
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }