オーダーするところの続きです。
// 新規BUYシグナル発生の場合
if( TradeSign[ SIG_Buy ] == true ){
close_position( OP_SELL ); // SELL建玉を決済
if( count_position() <= 0 ){ // 建玉が無い場合、新規BUY建玉作成
OrderSend( Symbol(), OP_BUY, POS_lot, Ask, POS_slip, 0, 0, " ", EA_magic, 0, Yellow );
}
}買いのシグナルが発生したら、
if( TradeSign[ SIG_Buy ] == true ){売りのオーダーを決済して
close_position( OP_SELL ); // SELL建玉を決済オーダーが無いことを確認して、買いオーダーをする。
if( count_position() <= 0 ){ // 建玉が無い場合、新規BUY建玉作成
OrderSend( Symbol(), OP_BUY, POS_lot, Ask, POS_slip, 0, 0, " ", EA_magic, 0, Yellow );
}常に、1つ以上のオーダーにならないように、しています。
上昇トレンドは、買い。
下降トレンドは、売り。
と、初心者にも理解しやすい内容で、素直なルールだなぁと感じました。
売りのオーダーを決済して。
という部分ですが、これもメインの流れがすっきりするように、決済部分だけ
別で書かれています。

この部分です。
OrderCloseという命令で、決済するわけですが、それをするために準備が必要です。
メタトレーダーでは、1つのEAだけでなく、複数のEAを同時に動かしたり、
手動でオーダーしたりする事ができます。
オーダーを決済する
と、言っても、まずは決済するオーダーを特定しなくてはいけません。
その為に、orderselectを使って、オーダーを1つづつ見ていき、GT-005で注文した
オーダーを特定する必要があるわけです。
また、EAは1つの通貨ペア(例えばUSD/JPY)だけでなく、複数の通貨ペアで動作
させることが出来ます。
(※特定の通貨ペアでしか、効果が無い売買ルールに基づいて作成されたEAは
決められた通貨ペアでしか動作しないようにしてあるものもあります。
GT-005は、そういった制限が書けてないので、複数で動作させる事が可能です)
今、動かしてる通貨ペアで、GT-005が注文したオーダーを特定し、クローズする。
この一連の流れを、close_positionという部分にやらせています。
1つの役割をこなせる、部品を作ると、あとあと楽になります。
他のプログラム(EA)を作るときでも、オーダーを決済する部分は、この部品に
任せればよいわけです。
そして、オーダーが無くなったところで、新規のオーダーです。
OrderSend( Symbol(), OP_BUY, POS_lot, Ask, POS_slip, 0, 0, " ", EA_magic, 0, Yellow );この命令で、実際にオーダーされ、ポジションを持つことになります。
手動で、行う場合、上昇や下降のトレンドを、グラフなどを参考に、目で見て「買いだ!」と
感じたら、オーダーするという事をするわけですが。
そのオーダーする。
という部分が、この命令で出来るわけです。
どうでしょう?
全体の流れが、掴めてきたでしょうか?
分かりにくい所は、コメントに書いてもらえたら、追記していきますんで、
よろしくです(^−^)/
次から、ミッション2として、改造をしてみましょう!
theme : システムトレード
genre : 株式・投資・マネー