bool b,s, //соответственно бай или селл
bs,// если закрытие по стоплоссу ордера бай
ss,// если закрытие по стоплоссу ордера sell
bt,
st;// то же по ТПdouble bl,sl; // лоты соответсвенно для бай и селл
そして、for ループで
for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol())
{ if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*10; break;}
if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*10; break;}
}
}
}
}//end
あなたのコードを扱うのは嫌です(邪道ですが、正直です :))。最終的に何を得たいのかを正確に教えてくれれば、必要な関数を書いてあげます。正直言って......その方が楽なんです。自分のコードを整理しておかないと...。:)
...あるいは、寝て、寝て、次の日にはすべてのパズルが揃う...。:)それが、わからない時の対処法...。ところで、もう5時半を過ぎたので寝ますが...。
オーダーが設定された後、オーダーの基準となった変数を再度「0」に設定する。
誰にもわからない。RSIなどの指標の動き(目盛り)と、通貨の通過したティックの比率を求めるにはどうすればよいですか?例えば、RSIが0から50になった場合、何ポイントに相当するのでしょうか?
ローソク足がゼロの時にRSI指標の最後の値をキャッチする。次のティックを待ちます。ダニがやってきました。Let価格はちょうど1ポイント刻んでいます。RSIがどの程度変化したかを見る。それだけで、オッズは我々のポケットの中にあるのです。
ローソク足ゼロの最後のRSI指標値をキャッチする。次のティックを待ちます。ティックはこちらです。価格がちょうど1ポイント刻んだとします。RSIがどの程度変化したかを見る。以上、係数は私たちのポケットの中です。
しかし、その後どのように可能ですか、例えば、私は1ポイントの係数をキャッチしている、RSIは50のそのスケールで合格した、それは50ポイントを通過したことが判明したが、実際にはそれがフラットだった。 そして、キャンドルは2ポイントを持っています。では、この場合どのように判断するのか
アナトリーへ。このコード、どうもありがとうございました。もうひとつの質問ですが、常時動作させながら、1バーにつき1ディールしか行わないようにするにはどうしたらよいでしょうか?
ボリス まあ、もっと単純な話なんですけどね。この行を落とすと
コードの一番上に(どの関数にもない、別にすること)。
そして、OrderSend(...)関数の 呼び出しがある箇所では、それをif演算子の追加の抱き合わせで囲むだけです。
現在、別のポジションを開く前に、現在のバーに取引が含まれているかどうかをチェックします。もしあれば、現在のバーが変数newに格納され、もし現在のバーが格納されているものと同じであれば、取引は行われません。したがって、バーが新しい場合、その開始時間は変数newのデータと一致しないので、取引は開始され、変数newは 新しい値を取得します。
。
お使いのExpert Advisorのアーキテクチャを正確に把握しているわけではありませんが、この方法はほとんどの場合において機能するはずです。
注文が設定された後、注文を出す基準となった変数を再度「0」にする必要があります。
あなたのコードをコンパイルしようとしたら、エラーが発生しました。
そして、for ループで注文の基準となった変数を2つのメソッド(start() とNewOrder1())で使用しなければならないので、全ての関数の外で宣言してください。
必要な値を代入し、NewOrder1() 関数で注文が正常に開かれた後、その値もゼロにリセットする必要があります。
こんな感じ。
誰にもわからない。RSIなどの指標の動き(目盛り)と、通貨が交差する刻みの比率を求めるにはどうしたらよいですか?明確にするために、RSIが例えば0から50になった場合、それは何ティックに等しくなりますか?
私もかつて同じような目標を持っていたので、こんな風に「ものさし」を書いてみたのですが、もしかしたらあなたにも効果があるかもしれませんね。
パラメータとして、希望のRSI値を持つバーのシフトを送信すると、応答としてそれらの間の距離をpipsで取得します。
私もかつて同じような目標を持っていたので、こんな風に「ものさし」を書いてみたのですが、もしかしたらあなたにも効果があるかもしれませんね。
パラメータとして、希望のRSI値が配置されているバーのシフトを送信し、その応答として、それらの間の距離をpipsで得ることができます。
ありがとうございます、今夜確認してみます
Expert Advisorの履歴に関するテストは、引用履歴が不完全なため、良い結果が出ないのではと強く感じています。私は引用符の歴史は、現在の市場(ローソク足の引用符)をアーカイブすることによって形成されていることを理解しますが、どのように本当の引用符は(少なくとも私の場合)、時には40分間ちょうどないろうそく、チャートが立っているを介して飛んでいる場合、結果に頼ることができますし、それはすべて同じろうそくを飛ぶ。
もしかしたら、有益なパラメータの組み合わせが見つからなかっただけかもしれません。「無駄な結果を無視する」オプションのチェックを外してみてください。
また、Expert Advisorの設定で、最適化したいパラメータにチェックを入れ、ステップと最適化の制限を設定することを忘れないでください。
友よ!トレンドラインが反転したときに表示される不要なシグナルを消す方法がわからない。トレンドライン(例では下降)は、指定されたバーの間隔内で見つかった最大の極値から最小の極値までプロットされます。問題は、新しい最安値の極限が現れるとすぐに、トレンドラインがその極限までジャンプしてしまうことです(そのように設計されているのです)。
しかし、最初のバーでもトレンドラインの値でレベルを構築し、指標ラインによってその交差はシグナルを与える。もし、最初のバーで指標線がこのレベルより下にあり、2番目のバーでこのレベルより上にあれば、トップダウンクロスオーバーが発生したことになります。
それで...トレンドラインが新たな最安値の極限にジャンプしたとき、2本目のバーの指標線がトレンドラインの上にあり、プロットされたレベルと1本目のバーの下にある状況、すなわち不必要な売りシグナル(この場合)が発生します。
私たちは、トレンドが新しい極端に移動したこと(場所は下向き矢印で示されている)と、最初のバーの新しいトレンドの価格水準(水平の赤いダッシュ線)を画像で見ることができます。
が2本目のADラインより低くなり、1本目のADラインが価格水準より低くなった...。
そこで、トレンドラインを下限まで移動させることで、不要なシグナルをシミュレートした......。先ほどと同じように不要な信号が発生した-。
水色の縦線で印をつけました...。
それゆえ、「どうすればこの状況を回避できるのか?何か考えようとすると疲れる...。
何か感想はありますか?ありがとうございます...:)
売買シグナルは指標線とトレンド線が交差したときに発生すべきであり、その逆はないということは理解していますが、その両方を持っているのですね。トレンドラインの位置の以前の値を静的変数に保存し、それらが変化していない場合、クロスオーバーをチェックし、トレンドラインの位置が変化している場合 - リセット...します。