//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара закрытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t=0;
int i, k=OrdersHistoryTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает номер бара открытия последней позиции или -1. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
datetime t=0;
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}
皆さん、ごきげんよう。
ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。
彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。
これで、指標の条件が満たされれば、取引を開始することが判明しました。
テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここではもう必要なく、問題が生じています。
フィードバックすることが重要だと感じています。
1キャンドル-1ディールというように、厳密なものが必要です。
ありがとうございました。
皆さん、ごきげんよう。
ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。
彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。
これで、指標の条件が満たされれば、取引を開始することが判明しました。
テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここですでに私には不要であり、問題が発生します。
フィードバックすることが重要だと感じています。
1キャンドル-1ディールというように、厳密なものが必要です。
ありがとうございました。
また、フラグを使用することも可能です。
静的なbool変数またはグローバル変数を宣言し、それをflagとする。注文が開始された - フラグ = true、新しいローソク足が 開始された - フラグ = false と、このフラグを注文開始の条件に追加します。
また、フラグを使用することもできます。
静的なbool変数またはグローバルレベルの変数を宣言し、flagとする。注文が開いた - フラグ = true、新しいローソク足 が開いた - フラグ = false、このフラグを注文開始条件に追加します。
このフラグはグローバルターミナルに保存され、ターミナルを再起動すると元に戻るはずです。
どの期間での取引か、また、1バー内で注文を出しターミナルを再起動できるかどうかによります。
GVが嫌いで、GVなしでやっていこうとしています。EAを起動するときは、とにかく未決済注文の情報をすべて収集する必要があるので、起動時にフラグの値を元に戻すのはどうでしょうか。これもひとつの選択肢です。2つ目のバリエーションは、フラグの初期値が注文の開始を禁止し、次のバーだけが許可を与えるというものです。そのため、現在のバーでEAを開いて再起動しても、次のバーまで注文を開くことができないフラグになっています。
そういう機微に富んだアドバイスをすれば、何も考えなくてすむのです。だから、それに応じて質問数も増える...。なぜ、自分で何かを決めるのか...。フォーラムで質問すれば、動作するバージョンを入手することができます。そして、あとは製品を世に出すだけ...。
どのような期間での取引か、また1バー内で注文を出しターミナルを再起動できるかによります。
GVが嫌いで、GVなしでやっていこうとしています。EAを実行するときも、未決済注文の情報をすべて収集する必要があるので、実行時にフラグの値を元に戻すのはどうでしょうか。これもひとつの選択肢です。2つ目のバリエーションは、フラグの初期値が注文の開始を禁止し、次のバーだけが許可を与えるというものです。そのため、現在のバーで新規注文を発注し、EAを再起動しても、次のバーまで注文の発注を禁止するフラグが立ってしまうのです。
そんな繊細なアドバイスをするだけで、私たちは何も考えなくてよくなります。その結果、質問数が増える可能性があります。なぜ、自分で何かを決めるのか...。フォーラムで質問すれば、動作するバージョンを入手することができます。そして、あとは製品を世に出すだけ...。
:)
好きな女性が違うのと同じ理由です。
フラグやポジションを開く時間など、どんな違いがあるのでしょうか?どう転んでも、何かを確認しなければならない...。こんにちは!利益の出た注文の後に、最後に負けた注文の数を返す方法を教えてください。
以下は私のコードですが、何が間違っているのでしょうか?
int GetProfitLoss()// 注文を決済した際の損失額(最後に負けた注文の数)
{
int Loss = 0;
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for(int i=0; i < cnt; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && lastCloseTime < OrderCloseTime())
{
lastCloseTime = OrderCloseTime();
}
if (OrderProfit()<0))
{
損失額 ++。
}
if(オーダープロフィット()>0)
{
break; // 最初に有益なものに出会ったときにループを終了する }.
}
}
}
}
return(Loss)です。
}
皆さん、ごきげんよう。
ロボットが1本のローソク足に1つ以上の注文を出さないようにするコマンドを教えてください。
彼はこのキャンドルに彼のテイクを取った場合であっても - 同じろうそくで次の注文を開くことはありません。
これで、指標の条件が満たされれば、取引を開始することが判明しました。
テイクのディールがクローズされると、すぐに同じローソク足で新しいディールが開かれ、ここではもう必要なく、問題が生じています。
フィードバックすることが重要だと感じています。
1キャンドル-1ディールというように、厳密なものが必要です。
ありがとうございました。
関数 NumberOfBarCloseLastPos()。
この関数は、最後に閉じた位置の小節番号、または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって設定される。
NumberOfBarOpenLastPos()関数を使用します。
この関数は、最後にオープンしたポジションのバー番号または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって定義される。
そして、これらの機能を使って、必要な条件を確認します。
よろしくお願いします。
私のロボットに以下のような関数を追加する必要があります。
取引開始後、40秒後に利益が15pips以上であれば即座に取引を終了し、それ以下であればtakeprofitを15pipsの利益水準に移動させます。
よろしくお願いします。
NumberOfBarCloseLastPos()関数を使用します。
この関数は、最後の位置のバークローズ番号または-1を 返します。考慮すべき位置の選択は、外部パラメータによって定義される。
NumberOfBarOpenLastPos()関数を使用します。
この関数は、最後にオープンしたポジションのバー番号または-1を 返す。考慮すべきポジションの選択は、外部パラメータによって定義される。
そして、これらの機能を使って、必要な条件を確認します。
ありがとうございました。
調べてみます!!!