■トレイリングストップのやり方


// トレイリングストップの値幅(pips)
extern double TrailingStop = 30;


int start() {
 if(TrailingStop>0) {
  // チケット番号で注文を選択
  OrderSelect(ticket, SELECT_BY_TICKET);

  if(Bid-OrderOpenPrice()>Point*TrailingStop &&
    OrderStopLoss()<Bid-Point*TrailingStop) {


    // 注文を変更
    OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,
            OrderTakeProfit(),0,Green);
    return(0);
  }
 }
}

■注文を変更


 OrderModify(チケット番号, 指値(未約定のみ), 損切り値, 利食い値, 有効期限, 矢印の色)



 例) 損切り値(Stop)を現在値の10pips上、利食い値(Limit)を10pips下に変更。


    OrderModify(OrderTicket(), OrderOpenPrice(), Bit-Point*10, Ask+Point*10, 0, Blue);

昨日の裁量トレードは、AUD/JPY(豪ドル/円)のショートのみでした。


AUD/JPY 決済 50 買 1LOT 88.32 2011/5/3 13:53 1600
AUD/JPY 新規 50 売 1LOT 88.48 2011/5/3 13:26 0
AUD/JPY 決済 50 買 1LOT 88.28 2011/5/3 13:45 1000
AUD/JPY 決済 50 買 1LOT 88.38 2011/5/3 12:21 1000
AUD/JPY 新規 50 売 1LOT 88.48 2011/5/3 11:53 0
AUD/JPY 決済 50 買 1LOT 88.42 2011/5/3 10:51 1600
AUD/JPY 決済 50 買 1LOT 88.52 2011/5/3 10:21 1600
AUD/JPY 新規 50 売 1LOT 88.58 2011/5/3 10:00 0
AUD/JPY 決済 50 買 1LOT 88.68 2011/5/3 09:01 1600
AUD/JPY 新規 50 売 1LOT 88.68 2011/5/3 10:10 0
AUD/JPY 新規 50 売 1LOT 88.38 2011/5/3 11:29 0


■現在のポジション:なし


■確定損益:+8,400円


■純資産:121,500円


本日は、CHF/JPY(スイスフラン/円)のショートをメインにいきたいと思います。

■超簡単な売買プログラム(リピートイフダン編)を作ってみました。


// 外部パラメータ
extern int MaxLots = 5; // 最大ポジション数
extern double OpenPrice = 90.00; // 約定価格
extern double ClosePrice = 91.00; // 決済価格
extern double PriceRange = 0.20; // 価格の値幅


// マジックナンバー
#define MAGIC  10000


int start() {
  for(int i=0; i<MaxLots; i++) {
   // 現在のポジションのチェック
   int OpenPosition = 0;
   for (int j = OrdersTotal() - 1; j >= 0; j--){
    if(OrderSelect(j, SELECT_BY_POS) == false) { break; }
    if(OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC+i) { continue; }
    OpenPosition++;
   }
   if(OpenPosition != 0) { continue; }


   // 買い注文
   if(OpenPrice < ClosePrice) {
     if(OpenPrice-PriceRange*i >= Ask) { return(-1); }
     OrderSend(Symbol(), OP_BUYLIMIT, 0.1, OpenPrice-PriceRange*i, 3, 0,
          ClosePrice-PriceRange*i, "Buy", MAGIC+i, 0, Red);
   }
   // 売り注文
   else if(OpenPrice > ClosePrice) {
     if(OpenPrice+PriceRange*i <= Bid) { return(-1); }
     OrderSend(Symbol(), OP_SELLLIMIT, 0.1, OpenPrice+PriceRange*i, 3, 0,
          ClosePrice+PriceRange*i, "Sell", MAGIC+i, 0, Blue);
   }
  }
  return(0);
}

■ボリンジャーバンドを使った超簡単な売買プログラムを作ってみました。


// 外部パラメータ
extern int BBPeriod = 20; // ボリンジャーバンドの期間
extern int BBSigma = 2;   // 標準偏差の倍率


int start() {
 //変数の宣言
 int i, OpenPosition;
 int Ticket;
 double BBUpper,BBLower;


 // ポジションの有無をチェック
 OpenPosition=0;
 for (i = OrdersTotal() - 1; i >= 0; i--){
  OrderSelect(i, SELECT_BY_POS);
  if(OrderSymbol() == Symbol()) {
   OpenPosition++;
  }
 }


 // ボリンジャーバンドの計算
 BBUpper = iBands(NULL, 0, BBPeriod, BBSigma, 0, PRICE_CLOSE, MODE_UPPER, 1);
 BBLower = iBands(NULL, 0, BBPeriod, BBSigma, 0, PRICE_CLOSE, MODE_LOWER, 1);


 int signal = 0;
 // 買いシグナル
 if(Close[2] >= BBLower && Close[1] < BBLower) { signal = 1; }
 // 売りシグナル
 if(Close[2] <= BBUpper && Close[1] > BBUpper) { signal = -1; }


 // ポジションが無い場合
 if(OpenPosition == 0) {
  // 買い注文
  if(signal > 0) {
   Ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Buy", 0, 0, Red);
  }
  // 売り注文
  if(signal < 0) {
   Ticket = OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0, 0, "Sell", 0, 0, Blue);
  }


 // ポジションが有る場合
 }else {
  //ポジションの選択
  OrderSelect(Ticket,SELECT_BY_POS);


  // 売りポジションを決済
  if(signal > 0 && OrderType()==OP_SELL) {
   OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
  }
  // 買いポジションを決済
  if(signal < 0 && OrderType()==OP_BUY) {
   OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
  }
 }
}

■ボリンジャーバンドの値を取得


iBands(通貨ペア, 時間軸の種類, 移動平均の期間, 標準偏差(σ), シフトするバーの数,
     価格種類, ※ラインの種類, 取得するバーの位置)


※ラインの種類(インジケータ用)
 MODE_UPPER(上側ライン)
 MODE_LOWER(下側ライン)


※その他のパラメーターは下記参照
 http://ameblo.jp/akbfx/entry-10879651380.html



例) iBands(NULL, 0, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, 1);

おはようございます。

昨日の裁量トレードは、AUD/JPY(豪ドル/円)のショート(売)がメインになりました。

午前中にビンラディン死亡のニュースが入り、値動きが激しくなったため

11時台に取引が集中しています(笑)


AUD/JPY 決済 50 買 1LOT 89.10 2011/5/2 19:18 1000
AUD/JPY 新規 50 売 1LOT 89.12 2011/5/2 13:12 0
AUD/JPY 新規 50 売 1LOT 89.22 2011/5/2 17:36 0
AUD/JPY 決済 50 買 1LOT 89.10 2011/5/2 12:23 1200
AUD/JPY 新規 50 売 1LOT 89.22 2011/5/2 12:16 0
AUD/JPY 決済 50 買 1LOT 89.10 2011/5/2 12:02 1200
AUD/JPY 新規 50 売 1LOT 89.22 2011/5/2 11:59 0
AUD/JPY 決済 50 買 1LOT 88.98 2011/5/2 12:46 1400
AUD/JPY 決済 50 買 1LOT 89.10 2011/5/2 11:55 1100
AUD/JPY 新規 50 売 1LOT 89.22 2011/5/2 11:49 0
AUD/JPY 決済 50 買 1LOT 89.10 2011/5/2 11:48 1200
AUD/JPY 新規 50 売 1LOT 89.22 2011/5/2 11:44 0
AUD/JPY 新規 50 売 1LOT 88.94 2011/5/2 11:40 0
AUD/JPY 新規 50 売 1LOT 89.12 2011/5/2 11:42 0
AUD/JPY 決済 50 買 1LOT 88.82 2011/5/2 11:34 1200
AUD/JPY 決済 50 買 1LOT 88.94 2011/5/2 11:09 1800
AUD/JPY 新規 50 売 1LOT 88.94 2011/5/2 08:42 0
AUD/JPY 決済 50 買 1LOT 88.82 2011/5/2 08:05 1200
AUD/JPY 新規 50 売 1LOT 89.12 2011/5/2 09:33 0
AUD/JPY 決済 50 買 1LOT 88.94 2011/5/2 07:41 1800
AUD/JPY 新規 50 売 1LOT 89.12 2011/5/2 07:11 0


■現在のポジション:なし


■確定損益:+13,100円


■純資産:113,100円


本日も、AUD/JPY(豪ドル円)、CHF/JPY(スイスフラン/円)のショートを

メインにいきたいと思います。

 

今はじめて気づいたんですが、読者登録すると

その人のブログにIDとタイトルが表示されるんですね!
わさみんのブログに「AKB48とメタルとFX」と表示されてビックリ。
ついでに、ゆきりんのブログにも読者登録しておきました(笑)


ゆきりんぶろぐ。
http://ameblo.jp/yuki-kashiwagi-we/

■移動平均線を使った売買プログラムを作ってみました。


// 外部パラメータ
extern int FastMAPeriod = 20;
extern int SlowMAPeriod = 40;


int start() {
 //変数の宣言
 int i, OpenPosition;
 int Ticket;
 double fastSMA1,fastSMA2;
 double slowSMA1,slowSMA2;


 // ポジションの有無をチェック
 OpenPosition=0;
 for (i = OrdersTotal() - 1; i >= 0; i--){
   OrderSelect(i, SELECT_BY_POS);
   if(OrderSymbol() == Symbol()) {
     OpenPosition++;
   }
 }


 //現在の短期移動平均
 fastSMA1 = iMA(NULL,0,FastMAPeriod,0,MODE_SMA,PRICE_CLOSE,0);


 //1つ前の足の短期移動平均
 fastSMA2 = iMA(NULL,0,FastMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);


 //現在の長期移動平均
 slowSMA1 = iMA(NULL,0,SlowMAPeriod,0,MODE_SMA,PRICE_CLOSE,0);


 //1つ前の足の長期移動平均
 slowSMA2 = iMA(NULL,0,SlowMAPeriod,0,MODE_SMA,PRICE_CLOSE,1);


 // ポジションが無い場合
 if(OpenPosition == 0) {
  //もし短期SMAが長期SMAを下から上にクロスしたら
  if( fastSMA2 <= slowSMA2 && fastSMA1 > slowSMA1) {
    //買いポジションを取る
    Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Blue);
  }

 // ポジションが有る場合
 }else {
  //ポジションの選択
  OrderSelect(Ticket,SELECT_BY_POS);

  //ポジションの確認
  if(OrderSymbol() == Symbol()) {
   if(OrderType()==OP_BUY) {
    //もし短期SMAが長期SMAを上から下にクロスしたら
    if( fastSMA2 >= slowSMA2 && fastSMA1 < slowSMA1) {
     //手仕舞い
     OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
    }
   }
  }
 }
}