■運用中EA・システム |
無料: CamusinForexRobot → HP掲載結果(FXDD) 無料: CamurideForexRobot → HP掲載結果(FXDD) 無料: 風林火山 → HP掲載結果(FXDD) 無料: FXRaptor → HP掲載結果(4XP) 有料: CrossFireFX (無料版も有り) → HP掲載結果(4XP) 有料: Traders Battle → プロのトレードをコピー |
■おすすめEA・システム |
無料: CamusinForexRobot → HP掲載結果(FXDD) 無料: CamurideForexRobot → HP掲載結果(FXDD) 無料: FXRaptor → HP掲載結果(4XP) 有料: CrossFireFX (無料版も有り) → HP掲載結果(4XP) 有料: Traders Battle → プロのトレードをコピー |
■重要記事 |
こんばんわ。 FXクスクスです。
十六茶を買ったら、アニメ「けいおん!!」
のフィギュアがついてきました(・∀・)
僕はそんなに好きではないですけど、
全5種類みたいですけど、ファンの方はきっと全部集めるんでしょうね^^
では、本題。
今日は前回と同じサイトを参考に、
手仕舞いのプログラムを作成しました。
---------------------------------------------
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
//変数の宣言
int cnt, CurrentPosition;
int Ticket;
double kakoa,gennzaia;
double kakob,gennzaib;
//オーダーチェック(ポジションなどのデータ)
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol()==Symbol())CurrentPosition=cnt;
}
//一時間前の21日線
kakoa=iMA(NULL,0,21,0,MODE_SMA,PRICE_CLOSE,1);
//一時間前の90日線
kakob=iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,1);
//現在の21日線
gennzaia=iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0);
//現在の90日線
gennzaib=iMA(NULL,0,90,0,MODE_SMA,PRICE_CLOSE,0);
//ポジションチェック ポジション無し
if(CurrentPosition == -1)
{
//もし21日線が90日線を下から上にクロスしたら
if(kakoa < kakob && gennzaia >= gennzaib)
{
//買いポジションを取る
Ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"Buy",0,0,Blue);
}
}
//ポジション有り
else
{
//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);
//ポジションの確認
if(OrderSymbol()== Symbol())
{
//もし買いポジションだったら
if(OrderType() == OP_BUY)
{
//もし21日線が90日線を上から下にクロスしたら
if( kakoa > kakob && gennzaia <= gennzaib)
{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
}
}
}
}
return(0);
}
---------------------------------------------
途中までは前回とほぼ同じです。
損切りと利食いの設定が無しになっているので、
//買いポジションを取る
の一部が0,0,になっています。
■//ポジション有り
else は先に使ったif以外という意味なので、
今回の場合はポジションを持っている場合です。
■//ポジションの選択
OrderSelect(Ticket,SELECT_BY_POS);
の部分はどのポジションを決済するか選択しています。
■//ポジションの確認
if(OrderSymbol()== Symbol())
の部分は決済する通貨ペアが売買した通貨ペアと同じか調べますが、
書かなくても問題はないみたいです。
■//もし買いポジションだったら
if(OrderType() == OP_BUY)
の部分はポジションが買いポジションかを調べます。
売りポジションを調べる際は、OP_BUY を OP_SELL に変えます。
■//もし21日線が90日線を上から下にクロスしたら
if( kakoa > kakob && gennzaia <= gennzaib)
の部分は今回の決済条件です。
移動平均線のゴールデンクロスで買い、デッドクロスで決済です。
■//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
の部分は日本語だと、
手仕舞いの関数(ポジション番号、ロット数、レート、スリッページ、色) みたいです。
ポジション番号とロット数は、先程の OrderSelect を使った事により、
OrderTicket(),OrderLots(), にポジションのデータが入るようです。
レートは今回の決済は売りなので Bid です。
買いの場合は Ask です。
スリップページは注文時と同じ数値を入れます。
色はチャート上に出る矢印の色です。
省略した場合は矢印が表示されません。
あとはコンパイルして終了です。
下記はバックテストの結果です。
EA作成に向けて日々努力していきたいと思います。
◆ご不明点などお気軽にご相談ください↓◆
■最後までご覧くださり有難う御座います、ついでにワンクリックしてくださると助かります^^ |