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を決定します。
今日は、このへんで。
次回は、この続きでオーダーの部分からです。
タグ
コメント (1)
おはようございます。
早速の記事記載、ありがとうございます。
感謝します!
さっそく、お勉強だ~
投稿者:えぎ |2008年6月 2日 10:32


