トレイリングストップ

トレイリングストップ


今日は、手仕舞いの仕方について書いていこうと思います。

All Aboutのマネーの記事の松井宗則氏の手法を参考にします!

・ロスカットは2~3%
・利益確定はロスカット幅以上
・最大含み益の50%まで下落したら一旦利益確定
・30%以上含み益が出て、過去最大級の出来高で急騰後、
 出来高が半減したら一旦利益確定

以上の条件で、仕掛けのタイミングはランダムエントリーにしました。
(ランダムエントリー参考記事→SKILL UP FX!さんの記事


この数値では、中期トレード向きかと思います。デイトレや短期トレードに対応できるように、パラメータ化しました。

ロジック内容は、
・パラメータ
ロスカットパーセンテージ
利益確定パーセンテージ
トレーリングストップパーセンテージ
トレーリングストップ開始パーセンテージ
ランダムエントリー確率

・エントリー抽選

・エントリー
ロスカット値の算出
利益確定値の算出
トレーリングストップ開始値の算出

・ポジション保持時
平均振幅の算出
トレイリングストップ
急騰急落時の手仕舞い

といった具合です。


30%以上含み益が出て、過去最大級の出来高で急騰後、
出来高が半減したら一旦利益確定という部分を
どのようにしようか悩みましたが、
今回は、

・30%以上含み益
エントリーから利益確定値までを100%とし、その30%で算出。

・過去最大級の出来高
エントリーからの最大出来高を記憶させ、その90%以上。

・急騰
過去10日間の平均振幅の3倍上昇。

・出来高が半減
急騰時の出来高の50%未満。

(急落時も同様に)

といった感じで定義しました^^;


検証結果はというと、通貨によってまちまちですが、
パラメータやその他の値を変更するなどして、
手仕舞いの方法の一つとして、覚えておいても良いのではと思います。

コードをコピペしますので、ご指摘やご質問などなどありましたら、
ぜひお聞かせくださいm(._.)m


//+------------------------------------------------------------------+
//| Matsui.mq4 |
//| SAMURAI |
//| http://samuraifx.seesaa.net/ |
//+------------------------------------------------------------------+
#property copyright "SAMURAI"
#property link "http://samuraifx.seesaa.net/"

//パラメータ用の変数
extern int StopLossPer =3;
extern int TakeProfitPer = 5;
extern int TrailingStopPer =50;
extern int TrailingStopStartPer =1;
extern int Frequency = 100;

double StopLoss,TakeProfit,TrailingStopStart;
int Bar,MaxVolume;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
MathSrand(LocalTime());
//----
return(0);
}

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//変数の宣言
double StopLoss, TakeProfit, TrailingStop, Width, AWidth;
int Pos, Type, OpenPos;

//Entry抽選
Pos = MathRand() % (Frequency + 1);
Type = MathRand() % (1 + 1);

//Entry
OpenPos = OrdersTotal();
if (OpenPos < 1)//ポジション無し
{
//MaxVolumeのリセット
MaxVolume = 0;
//Buy
if (Pos == 0 && Type == 0 && Bars != Bar)
{
//Order時の値決定と記録
StopLoss = Close[0] * StopLossPer / 100;
TakeProfit = Close[0] * TakeProfitPer /100;
TrailingStopStart = Close[0] * TrailingStopStartPer /100;
Bar = Bars;
//Order
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-StopLoss, Ask+TakeProfit, "Buy", 616, 0, Blue);
return(0);
}
//Sell
if (Pos == 0 && Type == 1 && Bars != Bar)
{
//Order時の値決定と記録
StopLoss = Close[0] * StopLossPer / 100;
TakeProfit = Close[0] * TakeProfitPer /100;
TrailingStopStart = Close[0] * TrailingStopStartPer /100;
Bar = Bars;
//Order
OrderSend(Symbol(), OP_SELL, 1, Bid, 3, Bid+StopLoss, Bid-TakeProfit, "Sell", 616, 0, Red);
return(0);
}
}


if(OpenPos >0)//ポジション有り
{
//Volumeの確認
if(Volume[1] > MaxVolume) MaxVolume = Volume[1];
//10日間の平均振幅の算出
for(int i=3;i<13;i++)
{
Width = Width + High[i] - Low[i];
}
AWidth = Width / 10;
//ポジションのデータを取得
OrderSelect(0,SELECT_BY_POS);
//買いポジション
if(OrderType()==OP_BUY)
{
//Trailing stop
TrailingStop=OrderOpenPrice()+(Bid-OrderOpenPrice())*TrailingStopPer/100;
if(Bid>OrderOpenPrice()+TrailingStopStart && OrderStopLoss()<TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),TrailingStop,OrderTakeProfit(),0,Magenta);
return(0);
}
//急騰による手仕舞い
if(Bid > OrderOpenPrice() + TakeProfit * 0.3 &&
Close[2] - Open[2] > AWidth * 3 &&
Volume[2] > MaxVolume * 0.9 &&
Volume[2] > Volume[1] * 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
}
}
if(OrderType()==OP_SELL)
{
//Trailing stop
TrailingStop=OrderOpenPrice()-((OrderOpenPrice()-Ask)*TrailingStopPer/100);
if(Ask<OrderOpenPrice()-TrailingStopStart && OrderStopLoss()>TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),TrailingStop,OrderTakeProfit(),0,Magenta);
return(0);
}
//急落による手仕舞い
if(Ask < OrderOpenPrice() - TakeProfit * 0.3 &&
Open[2] - Close[2] > AWidth * 3 &&
Volume[2] > MaxVolume * 0.9 &&
Volume[2] > Volume[1] * 2)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
}
}

}
//----
return(0);
}

2007年12月 1日|コメント (0)

カテゴリー:EAの作成方法

コメントを投稿する

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)






画像の中に見える文字を入力してください。

Captchaの認証で入力ミスがありますと、コメントが消えてしまいますのでご注意ください。
コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。