明日から3連休でまたやる気が漲ってきましたね!
そう言えば昨日スッキリで全国的に寒くて最高気温3℃とか言ってたような気がしたのですが、ワイの部屋は26℃くらいになって暑いから窓開けて温度調整してましたw
さすが無料暖房器具!部屋を暖かくした上にお金までくれる!!!
さてMT4で日々調整を重ねている「だめぽロジック」ですが、本日少し調整したロジックだとエントリー回数は減るけど今の所勝率100%を記録しているので楽しみです。
とりあえず土日に市場が休みの場合に正常に動作するのか?をチェックする必要があります。
市場が休みだとMT4がどう動くのか?すら知らないので実際に動かして確認するしかありません。
大まかに考えても複数パターンの挙動が考えられるので、とりあえず自動売買で変なの買わないように動きを確認する必要があります。
作り方については書く事はないですが、共通で使えるクラスくらいは公開しても良いので参考にしたい人はどうぞ!
スクリプト上部に書く定数
プレフィックスとしてDAを付けてるのは「だめぽロジック」のDA(だ)です。
#define DA_BARTYPE_WHITE 1 //ローソク足種別陽線
#define DA_BARTYPE_BLACK 2 //ローソク足種別陰線
#define DA_BARTYPE_CROSS 0 //ローソク足種別クロス
ローソク足クラス
//+------------------------------------------------------------------+
//| ローソク足クラス |
//+------------------------------------------------------------------+
class BarInfo
{
private:
int _shift; //何本前のローソク足
int _period; //ローソク足(1分足など)指定
double _open; //始値
double _close; //終値
double _high; //最高値
double _low; //最安値
int _entity_pips; //実体pips
int _upper_pips; //上髭pips
int _lower_pips; //下髭pips
int _barType; //ローソク足種別
//初期化処理
void _init()
{
_open = iOpen(_Symbol, _period, _shift);
_close = iClose(_Symbol, _period, _shift);
_high = iHigh(_Symbol, _period, _shift);
_low = iLow(_Symbol, _period, _shift);
//陽線
if (_open < _close)
{
_entity_pips = (int)((_close - _open) * pow(10, Digits));
_upper_pips = (int)((_high - _close) * pow(10, Digits));
_lower_pips = (int)((_open - _low) * pow(10, Digits));
_barType = DA_BARTYPE_WHITE;
}
//陰線の場合
else if(_open > _close)
{
_entity_pips = (int)((_open - _close) * pow(10, Digits));
_upper_pips = (int)((_high - _open) * pow(10, Digits));
_lower_pips = (int)((_close - _low) * pow(10, Digits));
_barType = DA_BARTYPE_BLACK;
}
//十字線(始値・終値が同じ)
else
{
_entity_pips = 0;
_upper_pips = (int)((_high - _close) * pow(10, Digits));
_lower_pips = (int)((_open - _low) * pow(10, Digits));
_barType = DA_BARTYPE_CROSS;
}
}
public:
//コンストラクタ
BarInfo()
{
_shift = 1;
_period = PERIOD_M1;
_init();
}
//コンストラクタ(バー指定有り)
//@param shift 解析したいバーシフト、何本前
//@param period 解析したいバーの1分足とか5分足とか
BarInfo(int shift, int period)
{
_shift = shift;
_period = period;
_init();
}
//データリフレッシュ
void refresh()
{
RefreshRates();
this._init();
}
//陽線か?
bool isWhite()
{
return (_barType == DA_BARTYPE_WHITE);
}
//陰線か?
bool isBlack()
{
return (_barType == DA_BARTYPE_BLACK);
}
//始値取得
//@param int pips pips調整した値が欲しい時に指定
double getOpen(int pips=0)
{
return NormalizeDouble(_open + (pips * _Point), Digits);
}
//終値取得
//@param int pips pips調整した値が欲しい時に指定
double getClose(int pips=0)
{
return NormalizeDouble(_close + (pips * _Point), Digits);
}
//最高値取得
//@param int pips pips調整した値が欲しい時に指定
double getHigh(int pips=0)
{
return NormalizeDouble(_high + (pips * _Point), Digits);
}
//最安値取得
//@param int pips pips調整した値が欲しい時に指定
double getLow(int pips=0)
{
return NormalizeDouble(_low + (pips * _Point), Digits);
}
//実体取得
int getEntityPips()
{
return _entity_pips;
}
//上髭取得
int getUpperPips()
{
return _upper_pips;
}
//下髭取得
int getLowerPips()
{
return _lower_pips;
}
};
ワイが用意してるのは、ローソク足クラス、注文クラス、解析クラスの3つで、解析クラスの中で複数のローソク足オブジェクトの情報を見て今こういう感じに動いてるからこの時にロング/ショートで入るっていう判定をしてる感じですね。
BarInfo bar_shift(5, PERIOD_M5);
上記のような感じだとbar_shiftという変数名で5本前の5分足のローソク足の情報を参照できる感じです。
ぶっちゃけ確定申告の手間を考えてもFXの方が楽なんで、上手く動けばMT4FIREを最優先で考えたい所ですねw
今の所8時間くらい無敗になってますが、1週間くらい無敗でいけるなら実践に入りたいですし、無理だったら更なる調整 or ナンピンロジックの導入も考える感じですかねぇ?
正確に言うと今日の朝(勤務前)から無敗だったけど、チャート見るとちょっと怖い位置で入ってるから昼休みにエントリー条件を厳しくしたので実質半日以上無敗かな?
※ストラテジーテスターから過去データに対してロジックテスト出来るハズなんですが、何故かだめぽEAは過去データに対しては動かないのでリアルタイムでデモトレードしかしていません。
コメント