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

 

OnTimer()という関数が あるのですが、これは一日の始まりに実行され、その結果EAがスリープ状態になるものです。OnTimer()関数の次の実行時間を翌日の頭に設定し、その後にEAが同じ瞬間(例えば-1秒)までスリープする場合、タイムカウンターはまだ動いていて、1秒後にスリープから復帰した後に関数が実行されるのでしょうか。


P.S.もうひとつ、少し心配なのは、どうしてこんな安っぽい文体でドキュメントが書かれているのか、ということです。コードスペースや括弧の演出のことですが、「プログラミング実習の小学生」と「mqlで書いている人」以外で、こんなものを作っている人を見たことがありません。

for(int x=0;x<10;x++)

{

}


このサイトでは何とか修正しています。括弧についてですが、括弧は表組みで配置される、つまり、括弧の位置を直感的に縦になぞることはできない、という意味です。

 
ukrop1203:

OnTimer()という関数が あるのですが、これは一日の始まりに実行され、その結果EAがスリープ状態になるものです。OnTimer()関数の次の実行時間を翌日の頭に設定し、その後にEAが同じ瞬間(例えば-1秒)までスリープする場合、タイムカウンターはまだ動いていて、1秒後にスリープから復帰した後に関数が実行されるのでしょうか。


P.S.もうひとつ、少し心配なのは、どうしてこんな安っぽい文体でドキュメントが書かれているのか、ということです。コードスペースや括弧の演出のことですが、「プログラミング実習の小学生」と「mqlで書いている人」以外で、こんなものを作っている人を見たことがありません。

for(int x=0;x<10;x++)

{

}


括弧については、表組みで括弧が置かれる、つまり、括弧が縦にどこに行くのか直感的に追えないという意味です。

括弧が入るところを縦になぞることができないので、どこに入るのかがわからなくなります。5分間スリープさせ、10秒ごとにPrintをOnTimerに入れることができます。これで疑問が解けるはずです。他のどの機能でも、メインアルゴリズムのモードを決定するキーを変更するだけで良いのなら、なぜスリープにするのでしょうか?

 

みなさん、こんにちは。


MT5でQUESTION。テキストマーク(数字)は、薄いグレーのバーとして表示されます。ドットは、私の頭の中でMT5のブループを視覚化するためのコントロールバッファです...。


OBJ_TEXTの Documentationと比較すると、同じように見えますが・・・。

//| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText(const long  chart_ID=0,
             string      name="Text", 
             string      text="text", // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime    time=0, 
             double      price=0,
             int         fontsizes=0,
             color       clr=0)
  {
  if(ObjectFind(chart_ID,name)!=0)
     {
   ObjectCreate(chart_ID,name,OBJ_TEXT,0,0,0);
   ObjectSetInteger(chart_ID,name,OBJPROP_TIME,time);
   ObjectSetDouble(chart_ID,name,OBJPROP_PRICE,price);
//--- установим угол наклона текста 
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,0.0); 
//--- установим способ привязки 
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,ANCHOR_LEFT); 
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
   ObjectSetString(chart_ID,name,OBJPROP_FONT,"Arial");
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,true);
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2:

みなさん、こんにちは。


MT5でQUESTION。テキストマーク(数字)は、薄いグレーのバーとして表示されます。ドットは、私の頭の中でMT5のブループを視覚化するためのコントロールバッファです...。


OBJ_TEXTの Documentationと比較すると、同じように見えますが・・・。


fontsizes パラメータに渡すものを見る

 
Artyom Trishkin:

fontsizes パラメータに渡すものを見る

ありがとうございます! グローバル変数 からフォントサイズを入れました。 void LabText 関数で設定します。うまくいった...。


 

テンプレートを適用すると描画されたラインが全て削除されてしまうので、スクリプトでチャート上にインジケーターを 追加・削除したいのですが、どうすればよいでしょうか?


#property indicator_label1  "MA8"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1


int indicator_handle;

void OnStart()
  {

   indicator_handle = iMA(0,0,8,0,MODE_EMA,PRICE_CLOSE);

   Print(indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

返信を受け取る

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) cannot load indicator 'Moving Average' [4302]を読み込むことができません。

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


しかし、コードはエラーなしでコンパイルされます。


 
psyman:

テンプレートを適用すると描画されたラインが全て削除されてしまうので、スクリプトでチャート上にインジケーターを 追加・削除したいのですが、どうすればよいでしょうか?


返信を受け取る

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) cannot load indicator 'Moving Average' [4302]を読み込むことができません。

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


コードはエラーなくコンパイルされますが。


err_market_not_selected

4302

MarketWatchでシンボルが選択されていません。


なぜ、シンボル名の代わりに0を入れるのですか?もし、現在のものが欲しければ、NULLか、その名前、例えば "EURUSD "を書かなければならない。

アイエムエー

移動平均インディケータハンドルを返します。バッファは1つだけ。

intiMA(
シンボル, // シンボル名
ENUM_TIMEFRAMESperiod, // 期間
イント ma_period, // 平均化期間
イント ma_shift, // インジケータ水平シフト
ENUM_MA_METHODma_method, // スムージングの種類
ENUM_APPLIED_PRICE applied_price // 価格のタイプまたはハンドル
);

パラメータ

記号

[インジケータを 計算するためにデータが使用される機器のシンボル名。NULLは カレントシンボルを意味する。

時期

[ENUM_TIMEFRAMES 列挙の値のいずれかを指定し、0は現在のタイムフレームを意味する。

マ期間

[移動平均計算の平均化期間。

ma_shift

[価格チャートに対するインジケータの移動量。

ma_method

[中略) 平均化法。ENUM_MA_METHODの 値のいずれかを指定することができます。

適用価格

[中】 使用した価格。ENUM_APPLIED_PRICEの 価格定数のいずれか、または他のインジケーターのハンドルである可能性があります。

戻り値

指定されたテクニカルインジケーターのハンドルを返します IndicatorRelease() 関数は、使用しなくなったインジケータをコンピュータのメモリから解放するために使用されます。

 
こんにちは、MAハンドルの配列が通常の価格を返すようにする方法を教えてください、私は彼らが8ではない、小数点以下5桁を意味します
int OnInit()
  {
 ima1_handle        = iMA (Symbol(),0,14,0,MODE_EMA,PRICE_CLOSE);
 ima2_handle        =  iMA (Symbol(),0,64,0,MODE_EMA,PRICE_CLOSE);               //хендл
 Stoch_handle       = iStochastic (Symbol(),0,20,15,15,MODE_EMA,STO_CLOSECLOSE);//хендл
 ATR_handle         = iATR        (Symbol(),0,21);                              //хендл

   if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);
  }
void OnDeinit(const int reason)
  {

  }

void OnTick()
  { 
    double ima1_massiv [];                                          //динамический массив для быстрой машки
    ArraySetAsSeries(ima1_massiv, true);   
    int ima_count1 = CopyBuffer(ima1_handle,0,0,2,ima1_massiv);    //скопировал данные из 2х буферов быстрой машки
    //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
    string ima1_massiv_str0 = DoubleToString (ima1_massiv[0]);
    string ima1_massiv_str1 = DoubleToString (ima1_massiv[1]);
    printf ("сегодня = "+ ima1_massiv_str0 + " вчера = "+ ima1_massiv_str1);  
    
  }    
mt5言語
 
Sergey Lobzankin:
こんにちは、MAハンドルの配列が通常の価格を返すようにする方法を教えてください。
if(Digits==3 || Digits==5)
     {
      Slippage*=10;
      TrailingStop *= 10;
      TrailingStep *= 10;
     }
   return(0);

冷ややか)

double normalMA=NormalizeDouble(MA,_Digits);    
 

こんにちは、MAハンドルの配列が通常の価格を返すようにする方法を教えてください。

mt5言語

mt5のDoubleToStrはDoubleToString() がないのですが、 それはしょうがないとして
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4