2016年7月4日月曜日

EA MA 平均について

①平均を使った様々なエントリー手法があります。
価格との比較や平均同士のクロス、平均乖離、MACD、ブルベア、ボリンジャーバンドすべて平均系です。
平均そのものにも多くの種類があり iMA でSMA , EMA , SMMA , LWMA その他にも相乗平均や調和平均などというものもあります。
その中でクロスの結論を出したいと思います。

②エントリーしていない時の証拠金はムダ金です。
ポジションを閉じてから次のエントリーまで1分以内を目指せば、より利益が増えるのではないでしょうか。

① + ② = EA MA

という事で

エントリー⇒シャンデリアストップ⇒クローズ⇒できるだけ早くエントリー

ロットは固定です!
2014.1.1-2016.6.30



いい、できですね。
わたし的にはiMAの完成形です!
最近のソースはこんなのタイプが多いですね
(インデントは公開用に着けていますが本番用はスペース、改行は一切つけません
先日出品したSUNNYは12行目が938文字でした)

IF分を減らすために理論式でまとめるのが好きだったのですが
今は関数を排し同じ通り道に複数回、同じ処理が無い時は何度でも繰り返し記述します。
この書き方が速い気がします

#property copyright "Copyright 2016/7/4,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
#property strict
extern double L=0.1;//Lots(ロット)
double a,d,F,S,i,A,B;
void OnTick()
{
A=Ask;B=Bid;if(OrdersTotal()==0)
  {
    if(Time[0]!=i)
    {
    i=(double)Time[0];F=iMA("",0,4,0,3,0,1);S=iMA("",0,2,0,2,0,1);
    if(F>S+0.004){a=A;d=OrderSend("",0,L,a,2,a-0.02,0,"",1,0,0);}
    if(F<S-0.004){a=B;d=OrderSend("",1,L,a,2,a+0.02,0,"",1,0,0);}
    }
  }
  else
  {
  d=OrderSelect(0,0);if(OrderType())
    {
    if(a>B){a=B;d=OrderModify(OrderTicket(),OrderOpenPrice(),a+0.02,0,0,0);}
    }
    else
    {
    if(a<A){a=A;d=OrderModify(OrderTicket(),OrderOpenPrice(),a-0.02,0,0,0);}
    }
  }
}


EA MAはここをクリック




8 件のコメント:

  1. こんばんは。質問です!
    if(F>S+0.004){a=A,d=OrderSend("",0,L,a,2,a-0.02,0,"",1,0,0);}にa=Aとありますが、
    先にvoid OnTick(){A=Ask;B=Bid;~}と宣言してあっても
    さらにもう一度記述したほうが早いのでしょうか?
    私は横着なので
    if(F>S+0.004){d=OrderSend("",0,L,A,2,A-0.02,0,"",1,0,0);}
    と書いてしまいそうです^^;
    その後の記述の if(OrderType())の中のif(a>B)というところが理解しきれてないので
    おかしな質問でしたらすみません><

    返信削除
  2. ぶりこさん

    大文字と小文字のAとaを使ったのはややこしかったですね。
    @反省

    if(F>S+0.004){a=A;d=OrderSend("",0,L,a,2,a-0.02,0,"",1,0,0);}

    ここではOrderSendの中に直接AをいれてもOKです。
    a=A ですがA(大文字)は常にあたらしいAskが入ります。常に変化します。
    a(小文字)は発注した時のAskを持っています。発注した時の値を覚えておくのに使います。

    if(a<A){a=A;d=OrderModify(OrderTicket(),OrderOpenPrice(),a-0.02,0,0,0);}
    ここの行は
    a<A すなわち 発注した時のAsk < 現在のAsk の時にその後ろが動きます。
    現在のAskが発注した時より上がっていれば後ろが動くという事ですね。
    aは発注時のAskでしたが現在のAskに入れなおしています。
    そして現在のポジションのS/Lを上げています。
    価格が上がるたびにaを更新してS/Lを上げていくシャンデリアストップ(トレーリングストップ)がこの一行です。
    判らないところがあったらごめんなさい

    返信削除
    返信
    1. 詳しく説明して頂きありがとうございます!
      6割くらい理解できたと思います^^;

      ところで、使えるねっと(2G)ですが、動作が重くないですか?
      まだお名前.com(1G)も契約中で、同じ枚数のMT4を動かせているのに
      お名前.comの方がずいぶん動作が軽いのですが。
      MT4内のいらないファイル消去してディスクのクリーンアップ、再起動しても
      たいして軽くならないのですが、いい方法があれば教えて下さいませ。
      一応問い合わせたのですが、「あなたがMT4を6枚も動かしてるからです、3枚が推奨環境でしょう」
      という感じの返信でしたw

      削除
  3. ぶりこさん
    お役に立てて光栄です;)

    むかしどこかのブログで推奨1枚なのに三枚動かしている・・・
    といわれて今でも根に持っているような話を見たことがあります。
    私は8枚動かしてメモリーは534M、VCPUは5%くらいです。

    マウスの動きは海の向こうと通信しているのでカクカクしますねw

    一度三枚にしてそれでも取引自体が重くて遅延が出るようでしたら、

    もう一度相談してみるのがいいと思います。



    返信削除
    返信
    1. なるほどー、アメリカサーバーだとカクカクするものなのですね!
      根に持つほど記憶力はよくないのでこんなもんかと思って使うことにします。
      確かに3枚だとちょっと遅いかなーというくらいですね。

      削除
  4. マウスのカクカク具合でサーバーの距離がわかるかもしれませんね♪

    返信削除
  5. シンプルですけどこれすごいEAですよね?
    あっという間に億万長者では?
    こんなすごいEAを公開されるなんてとっても嬉しいです。

    逆にこのEAを使うと実は大損してしまう要素がなにかあるのかな?と不安になってしまいますが、
    実際に使うと全然バックテストの結果とちがってくるものでしょうか?

    返信削除
    返信
    1. ありがとうございます。
      シンプルこそが一番です♪
      固定ロットでこの伸びはなかなかよいと思います。

      実運用は記憶が薄れています。
      膨大な数の細かい取引をしていますのでスピードにデリケートと思います。
      適切なVPSとブローカーの組み合わせが必要ですね。
      何人かの方はいい成績が出たと報告をいただいてました。

      削除