■運用中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クスクスです。
今日も前回のサイトを参考に
プログラムの作成をしました。
内容は、前回のプログラムに
ドテン売買を行うようにプログラムを追加しました。
前回と内容はほとんど同じですが、
仕掛けに売りが追加されて、
手仕舞い後の処理が少し変わっています。
------------------------------------
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,21,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,Red);
}
//もし21日線が90日線を上から下にクロスしたら
if(kakoa > kakob && gennzaia <= gennzaib)
{
//売りポジションを取る
Ticket=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"Sell",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);
//ドテンで売りポジションを取る
Ticket=OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"Sell",0,0,Blue);
}
}
//もし売りポジションだったら
else if(OrderType()==OP_SELL)
{
//もし21日線が90日線を下から上にクロスしたら
if(kakoa < kakob && gennzaia >= gennzaib)
{
//手仕舞い
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
//ドテンで買いポジションを取る
Ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"Buy",0,0,Red);
}
}
}
}
return(0);
}
------------------------------------
■//ドテンで売りポジションを取る
手仕舞いが買いなので売りポジションを持ちます。
■//もし売りポジションだったら
elseは先に使ったif以外という意味です。
if(OrderType() == OP_SELL)
の部分はポジションが売りポジションかを調べます。
■//ドテンで買いポジションを取る
手仕舞いが売りなので買いポジションを持ちます。
あとはコンパイルして完成です。
下記はバックテスト結果です。
今後もEA作成に向けてがんばっていきたいと思います。
◆ご不明点などお気軽にご相談ください↓◆
■最後までご覧くださり有難う御座います、ついでにワンクリックしてくださると助かります^^ |