if(Recovery)
{
//loop through open orders and check for magic number, symbol and type//if you find a buy order with the magic number and symbol
BuyTicket=OrderTicket();
//if you find a sell order with the magic number and symbol
SellTicket=OrderTicket();
Recovery=false;
}
もし比較(A > B )が必要なら、(A - B)*DIR> 0 を使って、売りのために比較を逆転させることができます。
アイデアがあるようですね。
コードを修正して投稿してください。私か他の誰かがコメントします。
こんにちは、GumRaiです。
しばらく更新が滞っていましたが、10時間労働でようやくコードを完成させることができました。しかし、2つの大きな問題があります。1) 何をやっても、エラーコードが 発生します。「2)私は、異なるマジックナンバーなどを使用して、(1つのUSDCADと別のEURUSDを呼び出した)ファイルの保存-ASをしました、まだそれは一度に唯一の取引を取り、ペアを独立して扱うことはありません。実際、"Invalid ticket for OrderCloseFunction "というエラーも発生します。
ググってみましたがダメでした。この件に関して正しい方向に導いていただけると本当に助かります。私は何を間違えているのでしょうか?
ありがとうございました。
OrdersTotal()==0を トレードの条件として使用しないでください。
これは、手動、他のEA、または同じEAが他のチャートシンボルに接続されている場合、1つの取引しか開くことができないことを意味します。
グローバル変数 BuyTicket を -1 に初期化します。
クローズする前に注文をループさせないでください。
さて、グローバルに宣言された変数をチケット番号に使用する場合、何らかの理由でターミナルがシャットダウンされ、再起動された場合、問題が発生することがあります。
そこで、新しいグローバルスコープの変数を宣言します。
素早く入力したので、間違いがあるかもしれませんが、アイデアを与えるには十分です。
ありがとうございます!私がループをそこに置いた理由は、私が気づいたことは、それが売りを閉じたとき、それは何らかの理由で買いをトリガしないことでした。
私は先に進み、必要な変更を加えました...しかし、まだ何かが不都合なようです。現在、ロングトレードはしておらず、無効なチケットのエラーコードと OrderCloseエラー4051を発生させています。何がまだ間違っているのか、何か提案はありますか?
不思議なのは、前のコードでも、今のコード(売りだけ)でも、(1つのチャートにしか実装していなければ)それなりにうまくトレードが取れていたことです。
これって、そんなに難しいことだとは思いませんでした。ローソクがクロスしてMAより上で開いたら買い、ローソクがクロスしてMAより下に行ったら決済して売り、という非常にシンプルでわかりやすいものだと思っていたのが間違いだったようです。
申し訳ありませんが、あなたが何をしようとしているのか、本当にわかりません。
どのような順序でも選択されません。コードはコンパイルできるのか?
ここでelseが適用されるのは if(OrderCloseTime()==0) が false の 場合です。
ここではOrderSelectが失敗した場合に適用されます。それは確かにそうです。
申し訳ありませんが、あなたが何をしようとしているのか、本当にわかりません。
どのような順序でも選択されません。コードはコンパイルできるのか?
ここでelseが適用されるのは if(OrderCloseTime()==0) が false の 場合です。
ここではOrderSelectが失敗した場合に適用されます。それは確かにそうです。
すみません、完全に私のミスです。ご指摘いただきありがとうございます。こちらは正しく実行しました。レポートには全くエラーは発生していません。ただ今は、複数の売り注文と買い注文 を入力するタイミングがあり、適切なタイミングで取引を終了することができません。
編集:正確には、価格がMAの反対側を横切ったときではなく、SLとTPで終了しているだけです。これはboolと関係があるのでしょうか?
これはトレードを選択するものではありません、私があげた例に従って、正しく行ってください
なんか...本当にバカみたいです(笑)。見つけてくれてありがとうございます!
1)残り2つ・・・OrderClose 4108のエラーコードが 発生するようになりました。もう一度、コードを掲載しましょうか?上記と同じで、ご指摘の修正を加えたものです。ルール通りにエントリー、エグジットしていますが。
2) そして、写真のようにロングポジションを閉じたらすぐにショートに入るわけではありません。緑色の下向き矢印は、ショートするべきだったところを示しています。買いポジションを持ち、黄色のMAを下回って引けた時点で損切りしています。ここで、空売りをするべきだったのです。これをループさせるにはどうしたらいいでしょうか?
GumRaiさん、どうもありがとうございます。正直、あなたの助けがなければ、ここまでたどり着けなかったと思います。
注文がないときに注文を閉じるようにチェックして いたので、小さな変更です。
コードによると、買いが終了した直後に売りが開始される理由はありません。
買いを終了する条件と、売りをオープンする条件は同じではありません。
ローソク足が開いた時だけチェックしているので、Close[0]はそのローソク足で最初に受信したティックの買値になることを思い出してください。
注文がないときに注文を閉じるようにチェックしていたので、小さな変更です。
コードによると、買いが終了した直後に売りが開始される理由はありません。
買いを終了する条件と、売りをオープンする条件は同じではありません。
ローソク足が開いた時だけチェックしているので、Close[0]はそのローソク足で最初に受信したティックの買値になることを思い出してください。
やったー!やったね!GumRaiさん、何度も何度もありがとうございます。あなたは最高です。
今はフォワードテストできないけど、マーケットが開いたら、デモのマジック#が違えば、他のペアでも使えると思うんだ。