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);
}
それならそれでいいんじゃないでしょうか。
そうなんですか?
今ならわかる。
ありがとうございます。
そのようなビルトイン関数はないので、自分で書く必要があります。ここに例があります:https://www.mql5.com/ru/forum/131277/page113
しゃい
このようなビルトイン関数はないので、自分で書く必要があります。ここに例を示しました:https://www.mql5.com/ru/forum/131277/page113
また、Expert Advisorが取引を開始する条件をこの1つだけに規定する方法です。
alsu:
そうすると、size-1 は必要ありません。そうしないと、最初の実行で 0-1 のインデックスが作成され、配列のサイズは 0 になってしまいます。
そうすると、こうなるはずです。
そうすると,size-1 は必要ありません.そうしないと,初回実行時にインデックスが 0-1 になり,配列のサイズが 0 になってしまいます.
すると、こんな感じになります。
プログラム冒頭で初期化あり int size=1;
このようなビルトイン関数はないので、自分で書く必要があります。ここに例があります:https://www.mql5.com/ru/forum/131277/page113
なぜこのコードを添付すると、信じられないほど多くの取引を開くことができるのですか?
プログラムの最初に初期化があります int size=1;
このコードを添付すると、信じられないほど多くの取引を開くことができるのはなぜですか?
そんなはずはない、だってコードでは。
no tradeshttps://book.mql4.com/ru/trading/ordersend
というのは、コード上では同じであるはずがないのです。
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)です。
}