externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирации//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
ObjectCreate(ChartID(),"CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене AskObjectSetInteger(ChartID(),"CORDON",OBJPROP_COLOR,clrDarkBlue); //цвет темно-сиийObjectSetInteger(ChartID(),"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(ChartID(),"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплошint IndexOfBar = iBarShift(ChartID(),PERIOD_H1, StringToTime(StartTime), true); //Считаем индекс бара по заданному времени StartTimedouble StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии return(0);
}
// Вставил такой код в скрипт - линию рисует синюю на черном графике слабо видно
#property strict // -------- Возможно, Дело в этой строке
externstring StartTime = "07:00"; //Начальное время для анализа, 00:00 ESTexternstring AlTime = "18:55"; //Время для трейдингаexternstring EndTime = "20:00"; //Время экспирацииvoidOnStart()
{
ObjectCreate("CORDON",OBJ_HLINE,0,0,Ask); //созд гор линию по цене Ask --- Для текущего графика ID пропускаемObjectSetInteger(0,"CORDON",OBJPROP_COLOR,DarkBlue); //цвет темно-сиий --- 0 = текущий график DarkBlue - то же самоеObjectSetInteger(0,"CORDON",OBJPROP_WIDTH,1); //толщина линии 1ObjectSetInteger(0,"CORDON",OBJPROP_STYLE,STYLE_SOLID); //линия сплош
// Первый параметр нужен типа string, а функция ChartID возвращает long
int IndexOfBar = iBarShift(NULL,PERIOD_H1, StringToTime(StartTime), true); // --- NULL = текущий график ЗДЕСЬ И БЫЛА ОШИБКА???
double StartPrice = Open[IndexOfBar]; //Получаем цену по индексуObjectMove(ChartID(),"CORDON", 0, 0, StartPrice); // меняем распол линии
}
こんにちは。質問ですが、1つのインジケータの値を異なるタイムフレームから価格チャート上に出力するコードの例はどこで見ることができますか?
ググっても出てこないので、もしかしたら間違ったリクエストをしているのかもしれません。
価格チャートの2列目に、H1からW1までのボリンジャーバンドの標準偏差を出力したい。 2列目には、標準偏差に係数を掛けた値が表示される。
ボリンジャーバンドを修正しました。
コードベース検索用キーワード「マルチタイムフレーム
OBJ_LABEL を用いてテキストを表示することができる。
1.MetaEditorのFile --> Open shared data folderで試してみてください。 フォルダのパスが表示されるはずです。この問題は何度も議論されており、例えば以下のようなリンクが あります。
2.最初はインクルードなしで試してみてください。デバッグするときは、それを入れるようになります。
3.上のSRC ボタン、または下のファイル添付 ボタンを使って、ここに出典を挿入してください。
07:00のバーの始値で水平線を 引く方法を教えてください。
このコードを書いたのですが、なぜか線が引けません。どこにエラーがあるのか?
07:00のバーの始値で水平線を引く方法を教えてください。
このコードを書いたのですが、なぜか線が引けません。どこにエラーがあるのか?
ObjectMoveを削除すると、ラインが表示される?Alert(StartPrice)を試してみる。
ObjectMoveを外す と線が見えなくなりますが、「IndexOfBar」の 代わりに「double StartPrice = Open[5];」のように数値を書くと、5本目のバーの始値で線 が引かれるようになります。
アラートでアイデアありがとうございます - 値が "0 "と表示されます。
ちなみに、この行は、値0のオブジェクトのリストにも存在します。
07:00のバーの始値で水平線を引く方法を教えてください。
このコードを書いたのですが、なぜか線が引けません。どこにエラーがあるのか?
イナートで描画や計算ができないのは、重大なミスです。イナイトは一刻も早く仕事を終わらせなければならない。
ここでのエラーはint IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //与えられた時間によるバーのインデックスを読み取る StartTime
時刻はdatetime形式で直接設定できるので、変換のために機械時間を浪費する必要はなく、次のように動作します。
initで描画や計算ができないのは、総てが間違いです。イニシエーションは、できるだけ早くその作業を完了させる必要があります。
ここでのエラー -int IndexOfBar = iBarShift(ChartID()_Symbol,PERIOD_H1, StringToTime(StartTime), true); //指定時間によるバーのインデックスを読み取る StartTime
時刻はdatetime形式で直接設定できるので、変換のために機械時間を浪費する必要はなく、次のように動作します。
私のために貴重なヒントをありがとうございました。
そして、間違いを見つけて私の士気を高めてくれたことに特に感謝します。MQL4と友達になれると再び信じ始めている
initで描画や計算ができないのは、総てが間違いです。initはできるだけ早く完了させる必要があります。
また、イナイトの計算を別の関数に取り込み、この関数をイナイトに挿入すれば、重大なエラーにはならないのでは?
すでに機能しています。
また、イナイトの計算を別の関数に取り込み、この関数をイナイトに挿入すれば、重大なエラーにはならないのでは?
コードの実行時間が長すぎると、initeが強制終了し、コードが実行される時間がなくなるだけです。二次関数の呼び出しを含む実行コードは、MQLの定義済み関数(Expert AdvisorのOnTick()、スクリプトのOnStart()、指標のOnCalculate())でなければなりません。
イニテには、プログラム開始の直前に一度だけ実行されなければならないものだけを、最小限のコードで記述しなければならない。例えば、グローバル変数、配列、インジケータ・バッファの初期化など。