int OpenTradesOnThisCandle( )
{
int op =0;
for(int i = OrdersTotal() - 1;i >= 0; i-- ) // scan all orders and positions...
{
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == true // if order select is true ...
&& OrderMagicNumber() != MagicNumber // ... and magic number is our magic number ...
&& OrderSymbol() == Symbol() ) // ... and symbol is chart symbol
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
}
return(op);
}
megamixxです。
もしあなたがまだそこにいるならば、私はあなたが探しているものを行うためにいくつかのコードの変更を提案することができます。もしまだご興味がおありでしたら、ご連絡ください。
その後、再コンパイルして、エラーなしになることを確認してください。これができたら教えてください、私は次の変更を貼り付けます。それを取得し、正常にコンパイルありがとうsn。
ゲットして無事コンパイルできましたsnさんありがとうございます。
OK、よかった。
次に、次のようなコードのブロックがあります。
ブロック全体をコピーし、直後に貼り付けて、OpenTradesOnThisCandleに名前を変更します。
そして、リコンパイルして、エラーなしになることを確認します。
これから仕事に行くので、私からの連絡は遅くなると思います。 行き詰まったら変更点を投稿してください。
このブロックをコピーして名前を変え、今は以下のようになっています。
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdersTotal()-1;i>=0;i--)// すべての注文とポジションをスキャン...
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) continue;
if ( OrderSymbol() ==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}.
}
return(op);
}.
正しくできているといいのですが......。コンパイルしてみたところ、エラーは出なかったのですが、警告が出ました。
関数"OpenTradesOnThisCandle" is not referenced and will be removed from exp-file
0 エラー(s), 1 警告(s)
よかった。このメッセージは単なる警告で、すぐに消えます。
次に、作成した新しいサブルーチンの MODE_TRADES と表示されている行を MODE_HISTORY に変更します。
次に、OrderType()の2つのif文の両方を次のように置き換えてください。
これができたら(同じ警告が出ますが)、コンパイルして、エラーがないことを確認してください。
現在、ブロックはこのようになっています。
int OpenTradesOnThisCandle( )
{ int op =0;
for(int i=OrdersTotal()-1;i>=0;i--) // すべての注文とポジションをスキャン...
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderMagicNumber() != MagicNumber) continue;
if ( OrderSymbol()==Symbol() )
{
if (OrderOpenTime() > Time[0]) op++;
if (OrderOpenTime() > Time[0]) op++;
}
return(op);
}
コンパイル済み、エラー0件、警告1件
megamixさん、こんにちは。
私はこのスレッドを最初から読んでいるわけではありませんが.
1.コードを投稿するときにSRCボタンを使用する
2.OrderSelect()の戻り値はtrueかfalseなので、これが正しいOrderSelect()の書き方です。
:D
megamixさん、こんにちは。
私はこのスレッドを最初から読んでいるわけではありませんが.
1.コードを投稿するときにSRCボタンを使用する
2.OrderSelect()の戻り値はtrueかfalseなので、これが正しいOrderSelect()の書き方です。
:D
コード投稿のヒントありがとうございます。理解できました。2.については、snが手順を教えてくれているので、彼のプロセスを台無しにしたくないので、snに譲ることにします。とても感謝しています。
コード投稿のヒントありがとうございます。理解できました。2.については、snが手順を教えてくれているので、彼のプロセスを台無しにしたくないので、snに譲ることにします。ありがとうございます。
onewithzackyの言うとおり、リターンコードをチェック するのは良い習慣です。
if (OrderOpenTime() > Time[0]) op++; <<== これは一度だけ存在する必要があります。だから1回だけ取り出す。
次にやるべきことは、このコードを見つけて、すぐ下に複製することです。
そして、次のように変更します。
(TradesInThisSymbol > 0) を
を
(OpenTradesOnThisCandle() > MaxTradesPerCandle)
に変更します。
それからコンパイルすると、エラーは解消されるはずです。
onewithzackyさんのおっしゃる通り、リターンコードをチェックするのは良い習慣ですね。
if (OrderOpenTime() > Time[0]) op++; <<== これは一度だけ必要です。 だから1回だけ取り出す。
次に、このコードを見つけて、すぐ下に複製します。
そして、次のように変更します。
(TradesInThisSymbol > 0) に変更します。
に変更します。
(OpenTradesOnThisCandle() > MaxTradesPerCandle) です。
それからコンパイルしてください。
完了しました。
重複を削除 if (OrderOpenTime() > Time[0]) op++;
を発見し、変更
(TradesInThisSymbol > 0)を
を
(OpenTradesOnThisCandle() > MaxTradesPerCandle)に変更しました。
この件では、親切なご助言をいただき、ありがとうございました。