"ダミー "からの質問 - ページ 234

 
forward666: はい、ビジュアライゼーションが必要です

テスト用: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

デモ口座でポジションを開いたり閉じたりしてみてください。

 
Boris.45: こんにちは、尊敬するトレーダーの皆様!初心者プログラマーを助けて ください。 私は、フラクタルを使ってボリスポルツの移動チャネル(SK)を検索するプログラムの一部をいくつかのタイムフレームについて書き、ポジションを開く決定をするアルゴリズムを書き始めました。 私は、高速移動トレンドのタイムフレームが1または2バーしかない状況に直面したことがある。この状況は次のことを示唆しています:SKパラメータの検索と計算において、選択した時間枠で作業する必要があり、一方、注文またはポジションを開く決定は非常に小さな時間枠で行う必要があります。SKパラメータを計算するブロックは選択したタイムフレーム、例えばH1とH4でのみ動作し、発注を決定するブロックはM1タイムフレームで動作するようにプログラムをアレンジする方法を教えてください。 記事にはそのための解決策は見つかりませんでした。

ご清聴ありがとうございました。

私はフラクタルとはかなり縁遠いのですが、一般的な考察を紹介します。最も簡単な方法は、H4で「SKパラメータ」を計算するインジケータを作成することです。そして、Expert Advisorがこのインディケータをティック毎にチェックし、発注の判断を行うようにします。
 
Yedelkin:

テスト用: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

デモ口座でポジションを開いたり閉じたりしてみてください。

ありがとうございます!やってみます

しかし、私はデモ口座で視覚化するために必要なだけです)

 
forward666: しかし、私はデモ口座で視覚化するために必要なだけです)
デモ口座でうまくいかない場合は、私に書いてください。
 
Yedelkin:
デモ口座でうまくいかない場合は、教えてください。
OK!今夜試してみて、また報告します
 
forward666:

しかし、私はデモ口座で視覚化するために必要なだけです)


履歴から、マウスをチャートに引き寄せることができます(シフターで-すべて)。

!!!コントローラを使用すると、チャートの設定がリセットされます。
 

コードのどこが悪いんだ?

グラフィックは問題ないが、テスターではArray Out Of Rangeというエラーが表示される

#property indicator_label1  "LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

input int    period   = 10;       //Период усредения
input bool   USE_LIMIT= false;    //вкл/выкл лимитирование
                                  //Заключается в ограничении максимального изменения значения индикатора
input double use_limit= 0.00005;  //Величина
                                  //на которую максимально может измениться индикатор

double         Buffer[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   //PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- вычисления значений индикатора
//--- calculate the indicator values
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
//--- if the calculation is made on a previous run of OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations
//--- заполняем индикаторный буфер значениями
//--- fill indicator buffer values
   for(int i=start;i<rates_total;i++)
     {
      Buffer[0]=price[0];
      double delta=(price[i]-Buffer[i])/period;
      if(USE_LIMIT && delta>use_limit)
        {
         delta=use_limit;
        }
      if(USE_LIMIT && delta<-use_limit)
        {
         delta=-use_limit;
        }
      Buffer[i+1]=Buffer[i]+delta;
     }
//--- вернем значение prev_calculated для следующего вызова функции
//--- return the value for the next call of prev_calculated function
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
lazarev-d-m:

コードのどこが悪いんだ?

グラフィックは問題ないが、テスターではArray Out Of Rangeというエラーが表示される


i<rates_totalになるまでループし、Buffer[ i+1]が存在する。

Buffer[rates_total] .There is no such thing.The last index is rates_total-1.

 
lazarev-d-m:

コードのどこが悪いんだ?

グラフィックは問題ないが、テスターではArray Out Of Rangeというエラーが表示される


Buffer[i+1] === +1 не делается проверка на выход за массив
 
Karlson:


i<rates_totalになるまでループし、Buffer[ i+1 ]が存在する。

Buffer[rates_total] .There is no such thing.The last index is rates_total-1.

これに変更

i<rates_total-1
動作するようです