-
作成者スレッド
-
2022年12月25日 10:13 #5404
bovovossiParticipantお世話になります。
現在、限界運動量を算出しその日の高値から限界運動量を引いた値を下限、限界運動量にその日の安値を引いた値を上限とし、それを元に取引するEAを作成しておりますが、その際に限界運動量のラインを表示させて検証の目安にしたいと考えています。
その方法をご教授いただければ幸いです。
-
作成者スレッド
-
ラインについてですが、EAではバッファを使用することができないため、オブジェクトを作成する必要があります。
また、通常の水平線では一日ごとに限界運動量のラインを変更するといった処理ができないため、トレンドラインを生成しprice1とprice2の値を同じにすることで水平線を実装するのが良いと思います。あとは日にちごとトレンドラインを生成します。
以下トレンドラインを生成するテンプレートの関数ですので、参考にしていただければと思います。
よろしくお願いいたします。
void CreateTrendLine(string name, datetime time1, double price1, datetime time2, double price2, bool ray, color c, int width = 1, ENUM_LINE_STYLE style = STYLE_SOLID, bool back = false, bool chart_window = true, bool selectable = true)
{
ObjectCreate(NULL, name, OBJ_TREND, chart_window ? NULL : WindowOnDropped(), NULL, NULL);
ObjectSetInteger(NULL, name, OBJPROP_BACK, back);
ObjectSetInteger(NULL, name, OBJPROP_COLOR, c);
ObjectSetInteger(NULL, name, OBJPROP_HIDDEN, true);
ObjectSetInteger(NULL, name, OBJPROP_RAY, ray);
ObjectSetInteger(NULL, name, OBJPROP_SELECTABLE, selectable);
ObjectSetInteger(NULL, name, OBJPROP_STYLE, style);
ObjectSetInteger(NULL, name, OBJPROP_TIME, 0, time1);
ObjectSetInteger(NULL, name, OBJPROP_TIME, 1, time2);
ObjectSetInteger(NULL, name, OBJPROP_WIDTH, width);
ObjectSetDouble(NULL, name, OBJPROP_PRICE, 0, price1);
ObjectSetDouble(NULL, name, OBJPROP_PRICE, 1, price2);
}
-
初歩的な質問で恐縮です。
時間の扱いが不慣れでわからないのですが、datetime time1、datetime time2はどのように記述すればよろしいのでしょうか?
-
datatime型の値を指定すればよいです。
もっとも簡単な方法はTime[0]、Time[1]のように指定することです。(Time[0]は最新足の時間、Time[1]は1つ前のローソク足の時間です)
-
-
それは奇妙ですね。。
関数をどのように呼び出したか教えていただけますでしょうか?
ラインを引く際は、始点と終点が土日を挟むがゆえに意図せず短いラインが引かれてしまうことはよくあるのですが、この現象とは違うようですね。
第六引数(ray)では、trueに設定するとラインが線分ではなく半直線(延長される)で描画されるのですが、この引数がtrueになっているということはないでしょうか?
-
第六引数をtrueにしていました😅失礼いたしました。
このような形で関数を呼び出しています。
限界運動量をパラメータで変更できるようにしています。
CreateTrendLine(“買い損切ライン”,iTime(NULL, kikan2, 1), sl_buy, iTime(NULL, kikan2, 0), sl_buy,false, clrRed, 1, STYLE_DASHDOT, false, true, true);
-
-
-
-
-
-
datetime1とdatetime2はどちらかが最新である必要はなく、datetime1のほうが時系列的に新しくても古くてもどちらでも大丈夫です。
ただ、price1とdatetime1、price2とdatetime2はそれぞれ対応しているため、datetime1の時系列のほうが新しい場合はprice1も新しい方、datetime1の時系列のほうが古い場合はprice2も古いほうの値を指定する必要があります。
-
返信にはログインが必要です。