int someA = OrdersTotal();
for (int a = 0; a < someA; a++)
if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES))
if (OrderComment() == "Aelit" && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 0);
int someA = OrdersTotal();
for (int a = someA-1;a>=0 a--)
if (OrderSelect(a, SELECT_BY_POS))
if (OrderComment() == "Aelit" && OrderType() == OP_SELL)
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
グラフは、増加する直線のように見えるはずです。
なぜそう思うのですか?
なぜそう判断したのですか?
をセルゲイに。
ああ、なるほど、そういうことだったのか。Forは、カウンタが比較されるべき値を正確に記憶し、それを変更しない。つまり、OrdersTotalが 2を返した場合、forはこれを記憶し、2を使って動作します。
をセルゲイに。
ああ、なるほど、そういうことだったのか。Forは、カウンタが比較されるべき値を正確に記憶し、それを変更しない。つまり、OrdersTotalが2を返した場合、forはこれを記憶し、2を使って動作します。
いいえ、そういうことではありません。
ループ停止条件(あなたの場合、OrdersTotal())は、各反復で 計算されます!
そのため、最初の反復では =2
2回目の反復では =1。
プログラマーか何かですか? 初歩的なことも理解できないんですね。
をセルゲイに。
あなたは私の目を開かせてくれました。わざわざC++のIDEを開いて確認したほどです。そして、それは二重に正しいことがわかったのですありがとうございました。:)でも...このようにしても、注文は選択されないままです。
各バーはゼロより大きいボリュームを持っていて、新しいバーが表示されたときにそれらの合計を再計算する必要があります。
総量は上昇も下降も可能です。
総量は上昇も下降も可能です。
をセルゲイに。
あなたは私の目を開かせてくれました。わざわざC++のIDEを開いて確認したほどです。そして、それは二重に正しいことがわかったのですありがとうございました。:)でも...このようにしても、注文は選択されないままです。
常にカウントダウンで注文を削除
でも...にしても、注文が選択されていない状態です。
とはならない!
ポジション番号でOrderSelectを行う。
最初の反復で、1次を選択し、次数位置a=0
この注文が終了した後、注文数はOrdersTotal=1になります。
つまり、これまで1 位から2位だったものが、0 位になるわけです。
しかし、あなたの命令の2回目の反復では 、a= 1であり、0では ありません!そのため、今は存在しないposition=1に対するOrderSelectは エラーを返します。
-------
さて、次の記事を書く前にちょっと考えてみてください。このような動きを避けるために、どのような2つのオプションを提案できますか。
理解できない。ボリュームは、バー内のティックの数です。1の体積は30、2の体積は20、3の体積は10です。合計は60になります。それとも?
ボリュームで時系列を 取り、ペンで再計算する
例えば、次のようなボリュームがあります。
10, 15, 25, 8, 11, 24, 30
以下は、3つの合計です。
50, 48, 44, 55
上昇あり、下降あり。
人生と同じですね。