#property indicator_separate_window#property indicator_buffers 1// Количество буферов#property indicator_color1 Blue // Цвет первой линии#property indicator_minimum 0#property indicator_maximum 25double Buf_0[]; // Объявление массивов (под буферы индикатора)//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicatorsSetIndexBuffer(0,Buf_0); // Назначение массива буферу SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии //----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
//----int i; // Индекс бара int Counted_bars; // Количество просчитанных баровint m;
int MaxSpeed;
int Speed;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1; // Индекс первого непосчитанного while(i>=0) // Цикл по непосчитанным барам
{
MaxSpeed=0;
if (Period()==PERIOD_H1)
{
m=59;
while (m>=0)
{
Speed=(iOpen(Symbol(),PERIOD_M1,m+60*i)-iClose(Symbol(),PERIOD_M1,m+60*i))/Point;
if (MaxSpeed<Speed)
{
MaxSpeed=Speed;
}
m--;
}
}
if (Period()==PERIOD_M1)
{
m=0;
while (m>=0)
{
Speed=(iOpen(Symbol(),PERIOD_M1,m+i)-iClose(Symbol(),PERIOD_M1,m+i))/Point;
if (MaxSpeed<Speed)
{
MaxSpeed=Speed;
}
m--;
}
}
Buf_0[i]=MaxSpeed; // Значение 0 буфера на i-ом баре
i--; // Расчёт индекса следующего бара
}
//----return(0);
}
//+------------------------------------------------------------------+
フラクタルに!ストップロスで試しましたが、最悪です、フラクタルにストップで試したいのですが、コンディションにどう書けばいいのかわかりません。あるいはEAでの書き方ですが、エントリー条件として、以下のようなものを書きました。
if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&)
iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&&?
iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&&...
iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)です。
{...???
}
あなたのコードからは、フラクタルについての会話であることが疑われます。4つの期間のいくつかの始 値と終値。
フラクタルに!ストップロスで試しましたが、最悪です、フラクタルにストップで試したいのですが、コンディションにどう書けばいいのかわかりません。あるいはEAでの書き方ですが、エントリー条件として、以下のようなものを書きました。
if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&)
iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&&?
iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&&...
iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)です。
{...???
}
このストラテジーを試すには、フラクタルによるトレーリングストップ機能を探し、EAに組み込むと簡単です。あるいは、自分で書いてもいい。
この機能は、各開放位置のストップを設定で設定した必要なフラクタルに移動させるものです。そして、テスト結果に基づいて、このトロールを使うか、価格がフラクタルレベルに達したときにマーケットポジションを 閉じるか、どちらを使うのが望ましいか、すでに考えることができるのです。どちらも簡単なことではありません。
標準関数 iFractals() が助けてくれます。関数のパラメータで指定されたフラクタルが発見された価格を返します。
私の指標は、1時間のタイムフレームで現在の時間の最大分の動きを測定し、最初の6時間(バー)それは十分にすべてを測定し、その後、いくつかの違法な値がコード自体と指標の下に来る開始、私は間違っていたアドバイス、私は3バーを超えて値を気にしないが、私はエラーが最初のバーで発生することを恐れている助けてください
最初の小節で何かエラーがあるかもしれません。私の指標は、1時間のタイムフレームで現在の時間の最大分の動きを測定し、最初の6時間(バー)それは十分にすべてを測定し、その後、いくつかの違法な値がコード自体と指標の下に来る開始、私は3バーを超えて値を気にしないが、私はエラーが最初のバーで発生することを恐れて、どこに間違っていたアドバイスしてください。
私はもともと別のインジケーターを持っていましたが、分解して私のコードを「はんだ付け」しました。何が欲しかったんだ?
Vinin:
何が欲しかったんですか?
私は、インジケータが分バー間のiOpen-iCloseの最大値を表示したいが、HOUR、例えば59分バーiOpen-iClose = 3(例)と1分バーiOpen-iClose = 10と1時間の時間枠で、それは任意の偏差なしで10を示していなければならず、私は、分率が間違った方向にあまりにも速く行けば、アドバイザーが閉じるための信号になり、指標に近い注文が必要になります。
これは最初のバージョンで、後に価格がどちらに向かっているかを検知できるようにしたいと思っています。
水平線などの グラフィカルオブジェクトをクリックすると、開いたウィンドウに「説明」が表示されます。
- コードから「説明文」を追加することは可能でしょうか?
ありがとうございました。
水平線などのグラフィカルオブジェクトをクリックすると、開いたウィンドウに「説明」が表示されます。
- コードから「説明文」を追加することは可能でしょうか?
ありがとうございました。
https://docs.mql4.com/ru/objects/ObjectSetText
まさに私が必要としていたものですありがとうございました。
LazarevDenis
初期カウントは59小節ですが、これは誤りです。分単位でギャップがあり、最後の時間バーがより少ない分単位になる場合があります。
時間足のバーの開閉時間(Time[i])を取る必要があります。この時間を使ってiBarShift分のオフセットを計算し、このオフセットの範囲内で最大値を計算します。
ところで、インジケーターは1分足で何を表示すればいいのでしょうか?
数値が正であれば価格は上昇し、負であれば下降し、数値のモジュロを返すと動きの強さが示されます。