【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

初歩的な質問ですみませんが、どなたか教えてください。メタトレーダーのEAプログラムについてです。
(1) エントリー時に移動平均線の傾きの角度を制限したいので下記のようにしました。
extern double MA_Period = 20; // MAの足数
extern double kaikatamuki = 40; //買いのMA逆傾き制限(%)必ず99以下で
extern double urikatamuki = 40; //売りのMA逆傾き制限(%)必ず99以下で
~ ここに色々式がありまして・・・・ ~
//MA傾きの計算
ma1 = iMA(NULL, 0, MA_Period,0, MODE_SMA, PRICE_CLOSE, j);
ma2 = iMA(NULL, 0, MA_Period,0, MODE_SMA, PRICE_CLOSE, j+1);
katamuki1 = ma1/ma2*100;
katamuki2 = ma2/ma1*100;
//katamuki1 = ma1-ma2;←これは差を求めるために作っただけ
//katamuki2 = ma2-ma1; ←これは差を求めるために作っただけ

//オープンポジションの計算
int pos = CalculateCurrentOrders();

//売りシグナル
if (pos>=0 && k==llb && katamuki1<kaikatamuki)
{
ClosePositions();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,Bid+TrailingStop1*Point,Bid-TakeProfit*Point,””,MAGIC,0,Red);
return(0);
}
//買いシグナル
if (pos<=0 && k==hhb && katamuki2<urikatamuki)
{
ClosePositions();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-TrailingStop1*Point,Ask+TakeProfit*Point,””,MAGIC,0,Blue);
return(0);
}
しかし、compileはできたのですが、実際のバックテストでは約定しません。kaikatamukiとurikatamukiを100以上にすれば約定するのですが、理屈が反対になるのでダメです。また、大きい傾き時のみのエントリーを計画しているのですが、傾きが緩やかな時も約定してしまいます。何が間違っているのでしょうか?または、傾きの有る無いしか作れないのでしょうか?

(2)上記にあるOrderSendのStopLossの所にTrailingStopを最初から適用すると約定しません。StopLossを入れると約定します。上記ではTrailingStop1となっていますが、1をつけなくてもダメでした。私としてはOrderSendで TrailingStop を入れて、ある一定の利益が出たらOrderModifyで新たな TrailingStopを設定したいと思っていました。これはダメなんでしょうか?

(3)上記とは違いますが例えば、Supersignalの矢印が出てから何本目の足以内にMACDCrossが出たらエントリーというような、「これが成立してから足何本以内にこれが成立したら」が書けません。forexでstatic int barsAtStart;を見つけましたが、これまた動きません。

長々と申し訳ありません。よろしくお願いいたします。

A 回答 (1件)

(1)について


傾きの定義を勘違いされているのでは?
おそらく
katamuki1 = (ma1-ma2)/ma1*100;あるいは
katamuki1 = (ma2-ma1)/ma1*100;
とすると期待されている結果が得られるのではないかと思われます。
    • good
    • 0
この回答へのお礼

ありがとうございます。教えていただいた方法で検証します。

お礼日時:2009/10/15 08:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報