for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS) if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger if(OrderType()<2) ) { ///необходимая операция } }
それとも、1つの未決済注文+3つの保留注文があるのでしょうか?
ということであれば、その方法で試してみてください。
//в глобальных переменных
int tick[3];
//в функции start
//cначало записываем номера тикетов отложек в переменные
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
ここに座っていても、どうやってアルゴリズムを実装すればいいのか、よくわからない。
誰か助けてくれるかもしれません。
1.一日の始まりを見つける(私はこうしました)
2.その日の最大値を探す(私がやりました)
3.MAが最大値を示した後、上から下へクロスした後の最初のフラクタルに 従うバーを見つけ出す必要があります。
その図を添付します。
iRSIの代わりにiCCIとすべきです。
YEPRST......完全にアウトオブ眼中です......ありがとうございます、直しますね
ここに座っていても、どうやってアルゴリズムを実装すればいいのか、よくわからない。
誰か助けてくれるかもしれません。
3.この最大値を境にMAを上から下へクロスした後、最初のフラクタルに 従うバーを計算する必要があります。"後に続くバーを計算する..."
簡単に書くと、「パソコンの電源を入れた後、価格がどこに行くのか知りたい」 :-))))
"後に続くバーを計算する..."
簡単に書くと、「パソコンの電源を入れた後、価格がどこに行くのか知りたい」 :-))))
を理解できていない。
これらのバーはすでにチャート上にあります。そして、その条件に合うものであれば、それはあなたが探しているバーなのです。
それがまず第一です。
そして第二に、我々が話していることを理解できないなら、なぜわざわざデタラメを言うのか?
これを試してみてはいかがでしょうか
OrderSelect(1, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
///необходимая операция
}
ただし、これは注文が1つしかない場合のオプションです。
では、注文が保留になっているかどうかを確認すればいいのですか?
注文のストップ(例えば買い)と共に、3つの保留注文が設定されます。
この3つの保留中の注文のうち、1つが通常の "ワーキングオーダー "になる条件が欲しい。
を理解していない。
これらのバーはすでにチャート上にある。あるいは、これが現在のバーだとしよう。そして、その条件を満たしていれば、それはあなたが探しているバーなのです。
それがまず第一です。
そして第二に、私たちが話していることを理解していないのに、なぜ時間を浪費しているのでしょうか?
"最初のフラクタルに 続く バーを計算する"リ..."追従 する "という意味であって、"すでにチャート上に存在している "という意味ではないのですが...。
しかし、「そして、その条件を満たしていれば、つまり、あなたが求めているバーである」としたら、それはまた別の問題です。条件」を記述すれば、誰かが助けてくれるはずです。
水浸しで申し訳ない、つい口を滑らせてしまった。
"最初のフラクタルの 後に続く バーを計算する"..."すでにチャートに入っている "かどうかではなく、"後に続く"かどうかということです...。
しかし、「そして、その条件を満たしていれば、つまり、あなたが求めているバーである」としたら、それはまた別の問題です。条件」を記述すれば、誰かが助けてくれるはずです。
洪水ですみません、つい口が滑りました。
おおお、まさにそのように書きました。
どこが、どうなっているのかわからないものを見つけることを目指さない。
すでに存在する具体的なバーに興味がある。そして、より正確には、彼らのシフトです。
ちなみに、私はすでに実装していますが、それほど難しいことではないことがわかりました :)
ということは、注文が保留されているかどうかをチェックするだけなのでしょうか?
考え方としては、例えば買いで注文を止めると、次の3つの保留注文が設定されます。
これら3つの保留中の注文のうち、1つが通常の "ワーキングオーダー "になることを条件としたい。
つまり、3つの未決済注文があり、少なくとも1つがトリガーされた場合、何らかの条件が設定されるのですね。
はいの場合、次のようになります。
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger if(OrderType()<2) )
{
///необходимая операция
}
}
それとも、1つの未決済注文+3つの保留注文があるのでしょうか?
ということであれば、その方法で試してみてください。
//в глобальных переменных
int tick[3];
//в функции start
//cначало записываем номера тикетов отложек в переменные
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
tick[cnt]=OrderTicket();
}
}
//а далее проверяем выполнился ли отложенный ордер
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
for(int cnt2=0;cnt2<3;cnt++)
if(tick[cnt]==OrderTicket())
{
//необходимое условие
}
}
в глоб перем
int mag=12345;
в ф start
/// При открытии отложки укажите ему в качестве магика mag
///ну а далее идет поиск "бывшей" отложки по Magic
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0&&OrderMagic()==Mag)
{
///необходимая операция
}
}
i haven't check the code for possible errors!
OrderSelect(0,SELECT_BY_POS) 関数は、どの順番を返すのでしょうか?どちらが先に開封されたのでしょうか?注文を入れ替えることはできないのですか?(私は保留中の注文を使用しません)
そうですね、どれが一番早いですかね。原則的に1つの注文しか開けないことが確実に分かっていて、オーバーシュートを避けられる場合に便利です。注文の入れ替えは行わず、先の注文が終了した時点で最も小さい注文に移行します。