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

 

こんにちは、先物の 有効期限を取得したいのですが。

EXPIRATION=(datetime)SymbolInfoInteger(Symbol(,SYMBOL_EXPIRATION_TIME))とする。

1970 01 01 00 00を出します。

 

こんにちは、どなたかEAでチャートのあるポイントをクリック した時にそのポイントで注文を出す方法を教えてください。 スクリプトやEAをインストールすると、NormalizeDouble(WindowPriceOnDropped(),Digits);という関数でクリック時のポイントが定義されます。しかし、問題は、これが稼働中のEAからいつでも行えるということです。そんな可能性があるのでしょうか。

ChartGetInteger(0,CHART_EVENT_MOUSE_MOVE,0,1) という関数がありますね。まだ使い方がよくわからないのですが、マウスポインタがどこに(どのポイントに)向いていたかを判断することは可能でしょうか?

 
Basicprof:

こんにちは、どなたかEAでチャートのあるポイントをクリック した時に、そのポイントで注文を出す方法を教えてください。 スクリプトやEAをインストールすると、NormalizeDouble(WindowPriceOnDropped(),Digits);という関数でマウスクリック時のポイントが定義されます。しかし、問題は、これが稼働中のEAからいつでも行えるということです。そんな可能性があるのでしょうか。

ChartGetInteger(0,CHART_EVENT_MOUSE_MOVE,0,1) という関数がありますね。しかし、まだ使い方がわかっていません。 マウスポインタがどこに(どのポイントに)向いたかを判断することは可能でしょうか。

CHARTEVENT_CLICK "イベントを使用します。

コードの一部はここから 取得できます

 
Vitaly Muzichenko:

クリックイベント "CHARTEVENT_CLICK "を使用します。

コードスニペットはこちらから 入手できます。


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

 

もう一つ質問です。EAからライブラリに関数を移しましたが、EAを実行するとすぐにクラッシュし、ターミナルがライブラリをロードできないというメッセージが表示されます。 Cannot call 'ATP_funkcii.mq4::DrawLABEL', 'ATP_funkcii.mq4' is not loaded.

この問題を解決するにはどうしたらよいですか?

一つ気づいたことがあります!EAのエディタやライブラリは確認できるのですが、パソコンではなぜかプログラムファイルの中に見当たりません。Expert Advisorのファイルのみです。

 
こんにちは、配列の 次の要素のインデックスを知る方法を教えていただけませんか?
 
vikzip:
こんにちは、配列の要素の インデックスを知ることで、次の要素のインデックスを知る方法を教えてください。

配列のインデックスは常に0から始まります。すなわち、配列のサイズが1であれば、このセルのインデックスは0になる。

5という数字を知るには、6という数字を知るにはどうしたらいいのでしょうか?

6という数字を知っていて、8桁しかないことを知りながら、7という数字を知るにはどうしたらいいのでしょうか?

インデックス7がわかっているとき、配列サイズ=8で、次のインデックスをどうやって知るのでしょうか?

 

こんにちは、助けてください。インジケータが更新されないので、1ティック ごとに更新させたいのですが、どうすればいいですか?


//+------------------------------------------------------------------+
//|                                             alx_RSI_BANDS_MA.mq4 |
//|                                                       alx_Babon |
//+------------------------------------------------------------------+
#property copyright "alx_Babon"
#property link      "babon82@gmail.com"

#property indicator_separate_window
#property indicator_buffers 6
#property  indicator_color1 Yellow
#property  indicator_color2 DarkBlue
#property  indicator_color3 White
#property  indicator_color4 White
#property  indicator_color5 White
//---- input parameters
extern int       RSI_Per=8;
extern int       MA_Per=8;
extern int       Bands_Per=20;
extern int       SmoothType=0;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double Sostoyanie;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   string type;
   switch(SmoothType)
   {
   case MODE_EMA: type="EMA";break;
   case MODE_SMMA: type="SMMA";break;
   case MODE_LWMA: type="LWMA";break;
   default: type="LWMA";SmoothType=0;break; // если ни один вариант не подошел
   }

   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);//Свойства RSI
   SetIndexLabel(0,"RSI("+RSI_Per+")");
   SetIndexStyle(1,DRAW_LINE,0,2);
   SetIndexBuffer(1,ExtMapBuffer2);//Свойства MA
   SetIndexLabel(1,"MA ("+MA_Per+"), "+type);
   SetIndexStyle(2,DRAW_LINE,2,1);
   SetIndexBuffer(2,ExtMapBuffer3);//Свойства Bands
   SetIndexLabel(2,"Bands ("+Bands_Per+")");
   SetIndexStyle(3,DRAW_LINE,2,1);
   SetIndexBuffer(3,ExtMapBuffer4);//Свойства Bands
   SetIndexLabel(3,"Bands ("+Bands_Per+")");
   SetIndexStyle(4,DRAW_LINE,2,1);
   SetIndexBuffer(4,ExtMapBuffer5);//Свойства Bands
   SetIndexLabel(4,"Bands ("+Bands_Per+")");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int limit,cnt;
   int cnt_rsi,cnt_bb,cnt_ma;
   if (counted_bars==0) 
      {
      limit=Bars-RSI_Per-1;
      for(cnt=limit;cnt>=0;cnt--)
         {
          ExtMapBuffer1[cnt]=iRSI(NULL,0,RSI_Per,PRICE_CLOSE,cnt);
         }
      for(cnt=1;cnt<=Bars;cnt++)
         {
          ExtMapBuffer6[cnt]= iMA(NULL,0,MA_Per,0,SmoothType,PRICE_CLOSE,cnt);
                
         }
      for(cnt=limit-MA_Per;cnt>=0;cnt--)
         {
          ExtMapBuffer2[cnt]=iMAOnArray(ExtMapBuffer1,0,MA_Per,0,SmoothType,cnt);
         }          
      for(cnt=limit-Bands_Per;cnt>=0;cnt--)
         {
          ExtMapBuffer3[cnt]=iBandsOnArray(ExtMapBuffer1,0,Bands_Per,2,0,MODE_LOWER,cnt);
         }
      for(cnt=limit-Bands_Per;cnt>=0;cnt--)
         {
          ExtMapBuffer4[cnt]=iBandsOnArray(ExtMapBuffer1,0,Bands_Per,2,0,MODE_UPPER,cnt);
         }  
      for(cnt=limit-Bands_Per;cnt>=0;cnt--)
         {
          ExtMapBuffer5[cnt]=iBandsOnArray(ExtMapBuffer1,0,Bands_Per,2,0,MODE_MAIN,cnt);
         } 
         
      }
      cnt_rsi=limit;
      cnt_bb=limit-Bands_Per;
      cnt_ma=limit-MA_Per;
      Comment(
               "RSI (",RSI_Per,")=",ExtMapBuffer1[1],"\n",
          "Bolinger (",Bands_Per,")=",ExtMapBuffer5[1],"\n",
                "MA (",MA_Per,")=",ExtMapBuffer2[1],"\n"
                //,"MA CNT (",MA_Per,")=",ExtMapBuffer6[8],"\n"
                //,"CNT_MA (",cnt_ma,")"
             );
//----
      //ObjectCreate("Arrow", OBJ_ARROW, 0, 0, 5);
      //ObjectSet("Arrow",OBJPROP_ARROWCODE,OBJ_PERIOD_M15 | OBJ_PERIOD_H1);
      //ObjectSetText("PivotText", "Pivot Point (DJ)", fontsize, "Arial", 
                 //colorPivot);
//----
   return(0);
  }
//+---------------------------------------

 
Artyom Trishkin:

配列のインデックスは常に0から始まります。つまり、配列のサイズが1であれば、そのセルのインデックスは0になる。

5という数字を知るには、6という数字を知るにはどうしたらいいのでしょうか?

8桁しかないことを知りながら、6桁の数字を知って7桁の数字を知るにはどうしたらいいのでしょうか?

配列のサイズが8であることを前提に、7番目のインデックスを知るにはどうすればよいのでしょうか?


詳しい説明ありがとうございました))))ですから、次のように書くのが正しいでしょう。


double Mas[];                                                                //массив для упорядочивания всех ордеров
  for(int i=0; i<OrdersTotal(); i++)                                           // Цикл перебора ордер
   {
    if(OrderSelect(i,SELECT_BY_POS))                                           // Если есть следующий
     {
       Price=OrderOpenPrice();
       ArrayResize(Mas, i+1);                                                 //задан размер массива
       Mas [i] = Price; 
       ArraySort (Mas,WHOLE_ARRAY,0,MODE_DESCEND);                           // Теперь цены открытия упорядочены по убыванию
     }
   } 
   if(ArraySize(Mas)>1)                                                         //Если массив не пустой
   
         { 
        int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND);          //Определен индекс ближайшего большего по значению елемента к текущей цене
             PriceBlizko2 = Mas[Blizko2];                                      // Цена выбранного ордера

       int Blizko1; 

Mas[Blizko1]= Blizko2+1;     Это верно??

                                                      //Определен индекс ближайшего меньшего по значению елемента к текущей цене         PriceBlizko1=Mas[Blizko1];
教えてください。

 
vikzip:

詳しい説明ありがとうございました))))ですから、次のように書くのが正しいでしょう。


教えてください。

配列の 要素を追加するたびに、配列をソートする必要はありません。ソートを移動させた方が良いのでは

double Mas[];                                                                //массив для упорядочивания всех ордеров
  for(int i=0; i<OrdersTotal(); i++)                                           // Цикл перебора ордер
   {
    if(OrderSelect(i,SELECT_BY_POS))                                           // Если есть следующий
     {
       Price=OrderOpenPrice();
       ArrayResize(Mas, i+1);                                                 //задан размер массива
       Mas [i] = Price; 
     }
   } 
   if(ArraySize(Mas)>1)                                                         //Если массив не пустой
   
         { 
       ArraySort (Mas,WHOLE_ARRAY,0,MODE_DESCEND);                           // Теперь цены открытия упорядочены по убыванию
        int Blizko2=ArrayBsearch(Mas,Ask,WHOLE_ARRAY,0,MODE_DESCEND);          //Определен индекс ближайшего большего по значению елемента к текущей цене
             PriceBlizko2 = Mas[Blizko2];                                      // Цена выбранного ордера

       int Blizko1; 
        Mas[Blizko1]= Blizko2+1;     Это верно??
                                                      //Определен индекс ближайшего меньшего по значению елемента к текущей цене
        PriceBlizko1=Mas[Blizko1];

ヘルプより

戻り値

最初に見つかった要素のインデックスを返す。求められた値が見つからない場合、求められた値が位置する要素のうち、最も近い小さい方のインデックスを返す

Mas[Blizko2]は、配列の中で最も近い小さい値です。