[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 132

 
Sergey_Rogozin:

それならそれでいいんじゃないでしょうか。

そうなんですか?

int start()
 {
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   size++;
   return();
 }
 
alsu:

今ならわかる。

ありがとうございます。

 
IgorM:

そのようなビルトイン関数はないので、自分で書く必要があります。ここに例があります:https://www.mql5.com/ru/forum/131277/page113


しゃい

 
IgorM:

このようなビルトイン関数はないので、自分で書く必要があります。ここに例を示しました:https://www.mql5.com/ru/forum/131277/page113

また、Expert Advisorが取引を開始する条件をこの1つだけに規定する方法です。
 

alsu:

int start()
 {
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   size++;
   return();
 }

そうすると、size-1 は必要ありません。そうしないと、最初の実行で 0-1 のインデックスが作成され、配列のサイズは 0 になってしまいます。

そうすると、こうなるはずです。

int start()
 {
   size++;
   ArrayResize(ValueArr,size);
   ValueArr[size-1] = GetValue();
   return();
 }
 
artmedia70:

そうすると,size-1 は必要ありません.そうしないと,初回実行時にインデックスが 0-1 になり,配列のサイズが 0 になってしまいます.

すると、こんな感じになります。



プログラム冒頭で初期化あり int size=1;

 
IgorM:

このようなビルトイン関数はないので、自分で書く必要があります。ここに例があります:https://www.mql5.com/ru/forum/131277/page113

なぜこのコードを添付すると、信じられないほど多くの取引を開くことができるのですか?
 
alsu:

プログラムの最初に初期化があります int size=1;


捕捉できなかった...サイズがもともと0だった最初のものしか覚えていません。
 
sto_mat:

このコードを添付すると、信じられないほど多くの取引を開くことができるのはなぜですか?


そんなはずはない、だってコードでは。

double history(){
int time = 0;double profit = 0;//обьявляем необходимые нам переменные куда мы положим интересующие нас характеристики ордера
for(int i = OrdersHistoryTotal();i>=0;i--){// Перебираем все закрытые ордера
  if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){//если ордер с таким номером (i) в списке закрытых ордеров есть ( не путать с тикетом)
    if(OrderSymbol() == Symbol()){//если выбранный ордер был открыт по нашей валютной паре
      if(time<OrderCloseTime()){//(сравниваем его с хранящимся в пероеменной time) 
        time=OrderCloseTime();//если время закрытия ордера больше - ложим его в переменную
        profit=OrderProfit();//и заодно запоминаем прибыль ордера
      }
    }
  }
}
//по окончании этой процедуры в наших переменных будут сидет наибольшее время закрытия, и его профит. Или по нулям если история чистая.
//теперь мы можем выставлять условия в зависимости от результата процедуры
   
if(profit == 0 &&time == 0){//действия если история чистая

}
if(profit >= 0){//действия если последний ордер был прибыльным, или нулевым

}
if(profit <  0 ){//действия если последний ордер был убыточным

}
return(0);
}


no tradeshttps://book.mql4.com/ru/trading/ordersend

 
IgorM:


というのは、コード上では同じであるはずがないのです。

no tradeshttps://book.mql4.com/ru/trading/ordersend


を挿入しました。

if(profit == 0 &&time == 0){// 履歴に問題がない場合の動作

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,Bid-6*Point)。


を返します。
}
if(profit >= 0){// 最後の注文が利益であった場合、またはゼロであった場合の動作

OrderSend(Symbol()、OP_BUY、0.1、Ask、3、Bid-12*Point、Bid+12*Point)を実行。


を返します。
}
if(profit < 0 ){/actions if(profit < 0 ){/actions if last order was unprofitable.

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+15*Point,Bid-15*Point)を実行。


を返します。
}
return(0)です。
}