EA(自動売買)のサンプルコード
お疲れ様です。
ポルポルです。
今回はEA作成ってプログラミング未経験者でも以外にできるんだぜ!って事を説明しようかと思います。
まずは私が作成したサンプルコードをご覧ください。
int bar = 0; //ローソク足の数補助用
int start()
{
//現在のローソク足の数を取得
int new_bar = Bars(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1); //ローソク足の時間軸を指定
double buy_pinbar = 0.0; //下ヒゲの長さ補助用
double sell_pinbar = 0.0; //上ヒゲの長さ補助用
//新しいローソク足が出来たら処理
if(bar!=0 && bar!=new_bar)
{
//高値を取得
double high = iHigh(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//安値を取得
double low = iLow(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//始値を取得
double open = iOpen(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//終値を取得
double close = iClose(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//ローソク足が陰線
if(open > close)
{
buy_pinbar = close - low; //下ヒゲの長さ
sell_pinbar = high - open; //上ヒゲの長さ
}
//ローソク足が陽線
else
{
buy_pinbar = open - low; //下ヒゲの長さ
sell_pinbar = high - close;//上ヒゲの長さ
}
if(buy_pinbar > 2)OrderSend(NULL //通貨ペア
,OP_BUY //買い
,0.01 //ロット数
,Ask //注文価格
,3 //スリップページ
,Ask-2 //逆指値
,Ask+2 //指値
,"テスト" //コメント
,999 //マジックナンバー(EA識別用)
,0 //注文の有効期限
,clrBlue);//チャート上の注文矢印の色。
if(sell_pinbar > 2)OrderSend(NULL //通貨ペア
,OP_SELL //売り
,0.01 //ロット数
,Bid //注文価格
,3 //スリップページ
,Bid+2 //逆指値
,Bid-2 //指値
,"テスト" //コメント
,999 //マジックナンバー(EA識別用)
,0 //注文の有効期限
,clrRed);//チャート上の注文矢印の色。
}
bar = new_bar; //ローソク足の数を保持
return(0);
}
動くだけを考えたプログラムになりますが、これでも動きます。
どうですか?
これぐらいなら出来そうだと思いませんか?
これは2円分のピンバーが現れたらエントリー。
損切、利食い共に2円で決済のロジックです。
細かい所は省きざっくり説明します。
一個前のローソク足の高値、安値、始値、終値を取得
//高値を取得
double high = iHigh(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//安値を取得
double low = iLow(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//始値を取得
double open = iOpen(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
//終値を取得
double close = iClose(NULL //通貨ペア名(NULLは現在の通貨ペアを意味)
,PERIOD_D1 //ローソク足の時間軸を指定
,1); //何個前の足か指定
ピンバーの長さを計算
//ローソク足が陰線
if(open > close)
{
buy_pinbar = close - low; //下ヒゲの長さ
sell_pinbar = high - open; //上ヒゲの長さ
}
//ローソク足が陽線
else
{
buy_pinbar = open - low; //下ヒゲの長さ
sell_pinbar = high - close;//上ヒゲの長さ
}
下ヒゲが2円以上ならロング
上ヒゲが2円以上ならショート
if(buy_pinbar > 2)OrderSend(NULL //通貨ペア
,OP_BUY //買い
,0.01 //ロット数
,Ask //注文価格
,3 //スリップページ
,Ask-2 //逆指値
,Ask+2 //指値
,"テスト" //コメント
,999 //マジックナンバー(EA識別用)
,0 //注文の有効期限
,clrBlue);//チャート上の注文矢印の色。
if(sell_pinbar > 2)OrderSend(NULL //通貨ペア
,OP_SELL //売り
,0.01 //ロット数
,Bid //注文価格
,3 //スリップページ
,Bid+2 //逆指値
,Bid-2 //指値
,"テスト" //コメント
,999 //マジックナンバー(EA識別用)
,0 //注文の有効期限
,clrRed);//チャート上の注文矢印の色。
たったこれだけです。
これだけでピンバーロジックの完成?です。
※実際の稼働に耐えるには当然不十分ですが
ドル円での検証結果は以下
ちゃんと検証できました。
こういった、人が作成したロジックを自分用に弄っていけば、その内自力で作成できるようになります。
興味がある人はコンパイルして試してみるべし!!
コンパイルってなんぞや?って方はまた今度の機会に説明します。