PipSHakerのアルゴリズム1

PipSHakerのアルゴリズム1



今回は、PipShakerOneのコードを使って、アルゴリズムをみていきましょう!
PipShakerV4はPipShakerOneのエントリ部分が違う感じですが、あとは大体同じです。
PipShakerOneのコードを入手できなかった人は、コードをイメージしながら読んでみてください^^;

まずは、パラメータですが、内容は過去記事の「PipShakerOne」を参照して確認してください。


double lotstep;
int lotsizing;

など記述がございますが、今回は関係ありません。
複利機能のなごり(消し忘れ)です^^;


続いて、start関数の中を見てみましょう!

double BuyLots, SellLots;
int BuyOrders = 0, SellOrders = 0;
double LowestBuy = 999, HighestBuy = 0.0001, LowestSell = 999, HighestSell = 0.0001;
double Profit, BuyProfit, SellProfit, BuyWinTotal, SellWinTotal;
int HighestBuyTicket, LowestBuyTicket, HighestSellTicket, LowestSellTicket;
double HighestBuyProfit, LowestBuyProfit, HighestSellProfit, LowestSellProfit;


変数の宣言です。

BuyLots, SellLots; 買いのロット合計,売りのロット合計
BuyOrders, SellOrders; 買いのポジション数,売りのポジション数
LowestBuy, HighestBuy; 買いポジションの中で最安値と最高値
LowestSell, HighestSell; 売りポジションの中で最安値と最高値
Profit; ポジションの損益を代入するためだけの便利変数^^;
BuyProfit, SellProfit; 買いの損益合計,売りの損益合計
BuyWinTotal, SellWinTotal; 買いの利益合計,売りの利益合計
HighestBuyTicket,LowestBuyTicket,HighestSellTicket,LowestSellTicket;
売り買いのポジションの最安値最高値のチケットナンバー
HighestBuyProfit,LowestBuyProfit,HighestSellProfit,LowestSellProfit;
売り買いのポジションの最安値最高値の損益


という感じです。

PipShakerでは、使わない変数もいくつかありますが、
改造する時とかに使えるものもあるかもですね。


つづいての73行目から128行目までのfor文は
現在保持しているポジションの情報を各変数に代入する
ための文です。

一つずつ丁寧に調べて代入!って感じです。


次に、シグナル部分に入ります。
変数の宣言int TrendSign,TradeSpace;
TrendSign シグナル
TradeSpace ←不要ですので削除してください

Trend に現在のバーの移動平均
TrendPrev に一つ前のばーの移動平均

を代入します。

シグナルの条件

if(BuyOrders + SellOrders <1 && TimeCurrent()>=Date1 && trade1==false)
{
if (buy0sell1==0) TrendSign=1;
if (buy0sell1==1) TrendSign=-1;
}

ポジションが無くて、Date1以降でtrade1がfalseの場合、
buy0sell1==0 のとき TrendSignに1を代入。
buy0sell1==1 のとき TrendSignに-1を代入。

if(BuyOrders + SellOrders >0 && TrendPrev != 0)
{

もし、ポジションがあり、TrendPrevが0ではない場合


// BUY Trade Criteria
if (TrendPrev < Trend)
{
if (Ask < LowestBuy - (Spacing * Point) || Ask > HighestBuy + (Spacing * Point))  TrendSign=1;
if(BuyOrders ==1 && SellOrders==0 && Ask > HighestBuy )  TrendSign=0;
}

移動平均が上昇の場合で、
現在の買値が買いポジションの最安値よりSpacing ピプス低いか、
現在の買値が買いポジションの最高値よりSpacing ピプス高いとき、
TrendSignに1を代入。
もし、買いポジションを1つだけ持っていて、売りポジションをもっていなくて、現在の買値が買いポジションより高いとき、
TrendSignを0にする。


// SELL Trade Criteria
if (TrendPrev > Trend)
{
if (Bid < LowestSell - (Spacing * Point) || Bid > HighestSell + (Spacing * Point))  TrendSign=-1;
if(BuyOrders ==0 && SellOrders==1 && Bid < LowestSell )
TrendSign=0;
}
}

移動平均が下降の場合、

同じ感じでTrendSignを決定します。


今日は、このへんで。
次回は、この続きでオーダーの部分からです。

タグ

2008年5月31日|コメント (1)

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

コメント (1)

おはようございます。
早速の記事記載、ありがとうございます。
感謝します!

さっそく、お勉強だ~

投稿者:えぎ |2008年6月 2日 10:32

コメントを投稿する

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






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

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