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

 
Sergey Gritsay:
R 違いのないオブジェクトとは何ですか?また、オブジェクトのタイプを変更すると、プロパティが崩れるとはどういうことですか?

つまり、現在のコードで水平線 オブジェクトをトレンドラインや垂直線に置き換えても、一方のオブジェクトは機能し、もう一方のオブジェクトのパラメータに関係なく赤く表示されるのです。

これらの操作の目的は、インジケータとEAを組み合わせることであり、今はエラーそのものを見つけようとしているのです。

つまり、ごく普通に移動と削除ができるのですが、買うときは青が必要で、売るときはどう考えても赤が必要なのです。
 

ごあいさつこの場合、「double bb」の後の()括弧の項目と、「double bb(int buff,int shift)」の{}括弧の項目は何なのか教えてください。

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


こちらもどうぞ。Buy と Sell はbool 型 です。< , &&, >」を使用したときに、何が割り当てられているかを把握するにはどうしたらよいですか??

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  
 
Andrey Sokolov:

ごあいさつこの場合、「double bb」の後の()括弧の項目と、「double bb(int buff,int shift)」の{}括弧の項目は何なのか教えてください。

double bb(int buff,int shift){ double val = iCustom(_Symbol,0,"BvsB",BB_Period,buff,shift);return(val);}  


こちらもどうぞ。Buy と Sell はbool 型 です。< , &&, >」を使用したときに、何が割り当てられているかを把握するにはどうしたらよいですか??

void Entry()
{  
  if(!UseHTF){
  Buy  = (bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}
  
  if(UseHTF){
  Buy  = (bbh(0,1) < bbh(1,1) && bb(0,1) < bb(1,1) && bb(0,2) > bb(1,2));
  Sell = (bbh(0,1) > bbh(1,1) && bb(0,1) > bb(1,1) && bb(0,2) < bb(1,2));}  
  


1. 機能である。括弧内はパラメータで、関数が呼び出されたときに渡されます。この場合、バッファの数とバーのオフセットからインジケータの値を取得します。

2) 論理変数は,代入記号(=)に続いて,論理式全体の結果を代入する。すべての条件が真であれば、その変数に真が代入され、そうでなければ - 偽が代入されます。
 
Artyom Trishkin ありがとうございました。
 
trader781:

つまり、現在のコードで水平線 オブジェクトをトレンドラインや垂直線に置き換えても、一方のオブジェクトは機能し、もう一方のオブジェクトのパラメータに関係なく赤く表示されるのです。

これらの操作の目的は、インジケータとEAを組み合わせることで、今は、何が原因でエラーそのものが発生しているのかを探ろうとしています。

つまり、ごく普通に動いたり消えたりするのですが、買うときは青が必要で、売るときはどう考えても赤が必要なのです。
グラフィカル・オブジェクトのパラメータが正しく設定されていないことを意味します。
 
Sergey Gritsay:
つまり、グラフィカル・オブジェクトのパラメータ設定がまた間違っているんですね。

が最も多い。

教科書通りのようですが、結果が違うので、ここにコードを投げてみたわけです。

 
こんにちは。
Client Terminal Global Variableを作成していないのに、なぜターミナルにClient Terminal Global Variableがあるのか理解できません?(GlobalVariablesTotal() は "1" を表示). 端末のプリセットがあるのでは?では、なぜその名前を知りたくてGlobalVariableName(0)やGlobalVariableName(1)関数を呼び出しても、名前が表示されないのでしょうか?何が問題なのか、教えてください。
 

ごあいさつ価格チャートに重ねず、その下に別途表示されるインジケータの赤線のデータを取得したいのですが、どうすればよいですか?チャートに重ねるインジケーターと同じようにやっているのですが、何か変です。どこが間違ってるんだろう?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

以下は、インジケーターそのものです。

#property copyright "Yuriy Tokman"
#property link      "yuriytokman@gmail.com"

//ну если проще запулить в одно окно три мульти с настройками
//1 EUR-USD
//2 EURGBP
//3 EURJPY
//если все три в состоянии перекупленности  значит Бай и наоборот

#property indicator_separate_window
#property  indicator_buffers 6
#property   indicator_color1  Green
#property   indicator_color2  Red
#property   indicator_color3  Yellow
#property indicator_level1 0
#property indicator_level2 5
#property indicator_level3 -5

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

double       buf[];
double    MA_buf[];
double      buf2[];
double   MA_buf2[];
double      buf3[];
double   MA_buf3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(0, buf);
  
   SetIndexStyle(4,DRAW_NONE);
   SetIndexBuffer(4,MA_buf);
  
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, buf2);
  
   SetIndexStyle(3,DRAW_NONE);
   SetIndexBuffer(3,MA_buf2);  
    
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, buf3);
  
   SetIndexStyle(5,DRAW_NONE);
   SetIndexBuffer(5,MA_buf3);
  
   IndicatorShortName("ytg_Def_RSI_3_Symbol");
   Comment("yuriytokman@gmail.com");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   double RSI_1, RSI_2, RSI_12, RSI_22, RSI_13, RSI_23;
  
   int limit;
   int counted_bars=IndicatorCounted();
  
   if(counted_bars<0) return(-1);

   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;

   for(int i=limit; i>=0; i--)
   {
     RSI_1 = iRSI(Symbol_1,0,RSI_1_Period,applied_price,i);
     RSI_2 = iRSI(Symbol_1,0,RSI_2_Period,applied_price,i);

     MA_buf[i] = (RSI_1-RSI_2);
    
    
     RSI_12 = iRSI(Symbol_2,0,RSI_1_Period,applied_price,i);
     RSI_22 = iRSI(Symbol_2,0,RSI_2_Period,applied_price,i);

     MA_buf2[i] = (RSI_12-RSI_22);
    
    
     RSI_13 = iRSI(Symbol_3,0,RSI_1_Period,applied_price,i);
     RSI_23 = iRSI(Symbol_3,0,RSI_2_Period,applied_price,i);

     MA_buf3[i] = (RSI_13-RSI_23);          
   }
   for(i=limit; i>=0; i--)
   {
     buf[i] = iMAOnArray(MA_buf,0,ma_period,0,ma_method,i);
    
     buf2[i] = iMAOnArray(MA_buf2,0,ma_period,0,ma_method,i);    
    
     buf3[i] = iMAOnArray(MA_buf3,0,ma_period,0,ma_method,i);    
   }  
  
  
//----
   return(0);
  }
 
Andrey Sokolov:

ごあいさつ価格チャートに重ねず、その下に別途表示されるインジケータの赤線のデータを取得したいのですが、どうすればよいですか?チャートに重ねるインジケーターと同じようにやっているのですが、何か変です。どこが間違ってるんだろう?

Signal=iCustom(NULL, 0,"ytg_Def_RSI_3_Symbol", RSI_1_Period, RSI_2_Period, applied_price, ma_period, ma_method, 1,shift);

以下は、インジケーターそのものです。

extern string Symbol_1   = "EURUSD";
extern string Symbol_2   = "EURGBP";
extern string Symbol_3   = "EURJPY";

extern int RSI_1_Period  = 14;//период первого индикатора РСИ
extern int RSI_2_Period  = 28;//период второго индикатора РСИ
extern int applied_price = 0;//используемая цена  0-6
extern int ma_period     = 14;//период сглаживания
extern int ma_method     = 0;//метод сглаживания  0-3

入力パラメータのウィンドウを開き、iCustomに 順番にリストアップしていきます。

最初の3行の値が抜けています。

 
Vitaly Muzichenk さん、ありがとうございます。
理由: