こんにちは(*・ω・)ノ 

またまた時間が経過してしまいましたが、
EA講座の続きでございます。

 FxCam_1303539715233
↑花粉症と闘っている間にすっかり春になってしまいました。 


前回 、アリゾナルールのフェイズ判断をロジック化しましたので、
今回はプログラムに落とし込んでみようと思います。

では、早速続きからどうぞ⇒
まずは前回のまとめ。
フェイズ判断をまとめると、以下のようになります 

・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆    
※62EMAは62、200SMAは200、800SMAは800、フェニックスはFN、ユマはYM、
フラッグスタッフはFS、ロングはL、ショートはSと略します。

FN(S) = 800>200>62
FN(L) = 800<200<62

YM(S) = 800>62>200 かつ 過去20本のロウソク足が800SMAにノータッチ
YM(L) = 800<62<200 かつ 過去20本のロウソク足が800SMAにノータッチ

FS(S) = 62<800<200 かつ 過去10本のロウソク足で800SMAにタッチ
FS(L) = 62>800>200 かつ 過去10本のロウソク足で800SMAにタッチ
・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆    

では、実際に私が落とし込んでみたコードを以下に貼りますので、
赤字で記されている説明とともに、読み進めてください

・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆    
int start()
  {
  
//移動平均線の値を取得
  double SMA800 = iMA(NULL,0,800,8,MODE_SMA,PRICE_CLOSE,0);
  double SMA200 = iMA(NULL,0,200,8,MODE_SMA,PRICE_CLOSE,0);
  double EMA62 = iMA(NULL,0,62,8,MODE_EMA,PRICE_CLOSE,0);
doubleは、小数4桁を含む数字の値が入るぞと宣言する宣言文です。
doubleの後に続いている言葉に、イコールより右の数字を代入することができます。
iMAは、移動平均線の値を取得する関数です。
一番上の場合は、
「SMA800という箱には、iMAで取得した移動平均線の値が小数点4桁を含んだ形で入るぞ」
という意味になります。
  
//フェイス判断
//フェニックス
  if( SMA800 < SMA200 && SMA200 < EMA62)
    {
    ★フェニックスlong
    }
  if( SMA800 > SMA200 && SMA200 > EMA62)
    {
    ★フェニックスshort
    }
★から後には、注文が入ります。これはまた次回説明しますね。

//ユマ
  int YM_hantei;
  double heikin_YM,YM_high,YM_low;
intは整数の数字の値が入るぞと宣言する宣言文です。
double、intともに後から使う数字をまとめて宣言しておくことができます。
その場合はカンマでつなげます。

  for(int cnt1 = 0; cnt1 < 20 ; cnt1++)
    {
    heikin_YM = iMA(NULL,0,800,8,MODE_EMA,PRICE_CLOSE,cnt1);
    YM_high = iHigh(NULL,0,cnt1);
    YM_low = iLow(NULL,0,cnt1);
    if ( YM_low < heikin_YM < YM_high )
      {
      YM_hantei = 0;
      break;
      }
    else
      {
      YM_hantei = 1;
      }
    }
forで始まるこの形は、EAを覚えるときにすごく大切な構文です。
for(int cnt1 = 0; cnt1 < 20 ; cnt1++) というのは、
cnt1が0から始まって、cnt1が20を追い越すまで、cnt1を1つずつ足しながら繰り返す。
という意味です。
ここで何をしているかというと、過去20本分の800SMAの値が、過去20本分のバーに
触れているか触れていないかを確認しています。
(cnt1)本前の800SMAの値をheikin_YMに入れる。
同じように(cnt1)本前の高値をYM_highに、
(cnt1)本前の安値をYM_lowに入れて比較します。
比較の結果、触れていなかったら、YM_hanteiに1を代入します。

  if( SMA800 < EMA62 && EMA62 < SMA200 && YM_hantei ==1)
    {
    ★ゆまlong
    }
  if (SMA800 > EMA62 &&EMA62 > SMA200 && YM_hantei ==1)
    {
    ★ゆまshort
    }
ユマの形に移動平均線が、並び、かつ(&&)800SMAがバーに触れていなかったら、
ユマの注文を入れます。

//フラッグスタッフ
  int FS_hantei;
  double heikin_FS,FS_high,FS_low;
  for(int cnt2 = 0; cnt2 < 10 ; cnt2++)
    {
    heikin_FS = iMA(NULL,0,800,8,MODE_EMA,PRICE_CLOSE,cnt2);
    FS_high = iHigh(NULL,0,cnt2);
    FS_low = iLow(NULL,0,cnt2);
    if ( FS_low < heikin_FS < FS_high )
      {
      FS_hantei = 1;
   break;
      }
    else
      {
      FS_hantei = 0;
      }
    }
  if( EMA62 > SMA800 && SMA800 > SMA200 && FS_hantei ==1)
    {
    ★ふらっぐすたっふlong
    }
  if (EMA62 < SMA800 && SMA800 < SMA200 && FS_hantei ==1)
    {
    ★ふらっぐすたっふshort
    }
やっていることは、ほとんどユマと一緒です。
フラッグスタッフの形に移動平均線が、並び、かつ(&&)800SMAがバーに
触れていたら、フラッグスタッフの注文を入れます。

   return(0);
  }
・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆・‥…━━━☆    

さて、ここまで書いてみましたが、実際にちゃんと動くかどうかは、
この後で注文を入れるプログラムを書いて動かしてみないと
よくわからないのが実際です(´;ω;`)ウゥゥ

次回、利益確定と損切りロジックを考えるとともに、
注文をプログラムに組み込んでみましょう♪

間違っている場所や、よくわからないところがあったらお気軽に
コメントをくださいねー  


-------------------10167-------------------
人気ブログランキングへ にほんブログ村 為替ブログ FX OL投資家へ にほんブログ村 為替ブログ FX システムトレード派へ
↑少しずつ講座を続けますので応援お願いしますっ(´∀`)