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

 
MakarFX #:

しかし、なぜこの配列が必要なのか、私にはまだ理解できません......。

int TradeSignal() 
  {
   int limit, i, sig=-1;
   double Ma_curr, Ma_prev, value;
   limit=MaPeriod*3;
   for(i=limit;i>=0;i--)
     {
      Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i);
      Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,i+1);
      value=Ma_curr-Ma_prev;
      if(value>0) sig=0;
      if(value<0) sig=1;
     }
   return(sig);
  }

なくても機能は動作します。

 
Mihail Matkovskij #:

しかし、なぜこの配列が必要なのか、私にはまだ理解できません......。

なくても機能は動作します。

また、ここではループは必要ありません

int TradeSignal() 
  {
   int sig=-1;
   double Ma_curr, Ma_prev, value;

   Ma_curr=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,0);
   Ma_prev=iMA(_Symbol,_Period,MaPeriod,0,MaMethod,MaPrice,1);
   value=Ma_curr-Ma_prev;
   if(value>0) sig=0;
   if(value<0) sig=1;

   return(sig);
  }
 
Mihail Matkovskij #:

ループも必要ない。

そうなんですが、なぜ配列がうまくいかないのかを理解したかったんです。

ついでに言うと

ArraySize(Buffer,limit);

は役に立たなかった(


'ArraySize' - パラメータ数が間違っています。

きょうせい

exp.mq4' の配列が範囲外です (267,17)

 
MakarFX #:


ArraySizeではなく、ArrayResizeです。

 
Yurij Kozhevnikov #:

ArraySizeではなく、ArrayResizeです。

範囲外の配列
 
MakarFX #:

そうなのですが、なぜ配列がうまくいかないのかを理解したかったのです。

ついでに言うと

は役に立たなかった(


'ArraySize' - パラメータ数が間違っています。

きょうせい

exp.mq4' の配列が範囲外です (267,17)


直後に気づき、 修正しました。そして、未修正のコードをコピーしたのでしょう。

また、アレイがうまくいかなかった理由などについては、「オペレーション」をご覧ください。参照:アレイ操作 .

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.28
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Mihail Matkovskij #:


直後に気づき、 修正しました。そして、未修正のコードをコピーしたのでしょう。
ありがとうございます!うまくいきました。
 
MakarFX #:
ありがとうございます!うまくいきました

どういたしまして。メッセージを完成させる...

 
//+------------------------------------------------------------------+
///muving.mq4による試行||株式会社日立製作所
///+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#プロパティリンク"https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ
extern string Moving_Averages1= "インジケータ・パラメータ";
extern int MA_Period=13;
extern int MA_Shift=0;
extern int MA_Method=0;

extern int int TakeProfit= 300;
extern int StopLoss= 50;
double ma1,ma2,Lots,SL,TP。

int res;



//+------------------------------------------------------------------+
//| 専門家による初期化機能
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| エキスパートティック機能
//+------------------------------------------------------------------+
void OnTick()
{
if(!OllCount()==0)
{
switch(OrderType()の場合)
{
ケース OP_BUY
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
if((ma1-ma2)>0)
{
を返します。
}else
SL=NormalizeDouble(Bid+StopLoss*Point,5)となります。
TP=NormalizeDouble(Bid-TakeProfit*Point,5)。
if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Black))
if(OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,",0,0,Red))
を返します。
ケース OP_SELL
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
if((ma1-ma2)<0))
{
を返します。
}
さもなくば
SL=NormalizeDouble(Ask-StopLoss*Point,5)となります。
TP=NormalizeDouble(Ask+TakeProfit*Point,5)。
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Red))
if(OrderSend(Symbol(),OP_SELL,Lots,Ask,3,0,0,",0,0,Black))
を返します。
}
}
ma1=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,0);
ma2=iMA(NULL,0,MA_Period,MA_Shift,MA_Method,0,1);
if((ma1-ma2)<0))
{
SL=NormalizeDouble(Bid+StopLoss*Point,5)となります。
TP=NormalizeDouble(Bid-TakeProfit*Point,5)。
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,", 0,0,Red);
if(res<0)
{
Print("Sell order open error");
}
}
さもなくば
SL=NormalizeDouble(Ask-StopLoss*Point,5)となります。
TP=NormalizeDouble(Ask+TakeProfit*Point,5)となります。
if(OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,", 0,0,Blue))を実行します。
を返します。
}
//+------------------------------------------------------------------+
int OllCount()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
count++です。
}
}
return(count)です。
}
//+------------------------------------------------------------------+
//+---/|Copyright 2021, MetaQuotes Software Corp.
---------------------------------------------------------------+

//+------------------------------------------------------------------+

私は自分自身のMAアドバイザーを書こうとし、すべての例に従いましたが、エラーを返し続けています。

'ma1' - some operator expected trial by muving.mq4 47 21

'=' - ':' コロン記号の期待値 mq4 muving trial 47 24

'=' - オペランドが期待される muving.mq4 47 24

'ma1' - some operator expected trial by muving.mq4 60 15

'=' - ':' コロン記号の期待値 muving.mq4 60 18

'=' - オペランドが期待される muving.mq4 60 18


 
Sanjakotik78 #:


あなたの注文の論理は最初から間違っています。MA(CodeBaseなど)で簡単なEAを探し、それを使う。また、自分のアイデアに合わせて修正することも可能です。あなたのコード全体について、そこではすべてが間違っています。コーディングにもっと気を配る。簡単なものから始めてみてください。あるいは、先ほど言ったように、既成の例を見つけることです。

上部の専用ボタンでコードスニペットを追加します。