[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 249

 
Leo59:

granit77 様もし差し支えなければ、間違っているところがあれば、直接コードに修正を加えてください。明確に理解できるようになる。

例8つあるインジケーターバッファの うち、7つはインジケーターウィンドウにラインを表示するために使われ、8つ目はインジケーターウィンドウに表示せずに計算のために使われます。
インジケータ・バッファが足りない場合は、従来のアレイで計算を行うことができる。

#property indicator_buffers 7 double ind_buffer1[]; double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[];//the eighth buffer is used for additional calculations //double ind_buffer9[].Double インデックスバッファを使用することで、ind_バッファを使用することができます。   //インジケータに9番目のバッファはありません。この配列は行き場がありません。 int init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2)。
SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexBuffer(5,ind_buffer6); SetIndexBuffer(6,ind_buffer7); SetIndexBuffer(7,ind_buffer8); //ind_buffer1.Set IndexBuffer (2,ind_buffer5);Set IndexBuffer(4,index_buffer6); SetIndexBuffer(4,index_buffer9)...ind_buffer7 は7本の線を引く //それらは #property indicator_buffers 7 に従ってインジケータウィンドウに表示される //ind_buffer8 はウィンドウに表示されないが、計算に参加できる return(0); }。
 
granit77:
例8つのインジケータバッファのうち7つはインジケータウィンドウにラインを表示するために使用され、8番目のバッファは計算のために使用されますが、インジケータウィンドウに表示されることはありません。インジケータバッファが足りない場合は、通常の配列で計算することができます。 。




ありがとうございました。それは理解できる。

もうひとつわからない。計算には参加するが、インジケータウィンドウには表示されない配列が、なぜSetIndexBufferとして識別されなければならないのかがわからない。また、計算用の配列が10個、表示用の配列が8個(合計18個)必要な場合、この10個をどのように宣言し、正しく識別すればよいのでしょうか。描画されないことを除けば、インジケータ・バッファに 接続された配列と同じプロパティを持たせたいのです。

 
Zhunko:

うまくいかなくても、名前を変える必要はありません。というのは変ですね。コンテキストメニューからWinRarを選択することで開くことができます。またはWinRarを開き、「ファイル」メニューの「アーカイブを開く」からアーカイブを探し、開いてください。

上で、拡張子はファイルの自動的な関連付けのためにのみ必要だと言いました。

拡張機能の可視化を有効にしましたか?うまくいかない場合はここでスクリーンショットや動画を撮影してください。


詳しい説明をありがとうございました。このWinRarをダウンロードしたのですが、どうやらなかったようで、アーカイブが開いてしまいました
 
あの、この機能は使えませんね。確かに今はティックが機能していませんが、少なくともグラフの結合時にスタートが機能するはずですよね?まあ、少なくともコンパイルはできる!!!! これを試しています。
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle(Symbol(),Period());
   while (!IsStopped())
    {
     for (int i = 0; i < 9; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
PR //利益
UB //Loss.
Pk //買い値をとる変数
Pr //売却の値をとる変数
ADR //スクリプトの値を取る変数

//利益条件
if(PR==Pk) //購入時に利益がある場合
ADR=1; //スクリプト1設定
else //販売で利益が出た場合
ADR=2; //スクリプト2設定

//販売条件
if(UB==Pk) //買いで損をした場合
ADR=2; //スクリプト2を設定
else //売却損が発生した場合

ADR=1; //スクリプト1設定

トレードのためにどう改善すればいいのか? どの注文が決済されたか(買いか売りか)、どのように利益または損失で決済されたかを監視するEAが必要です。このような分析の後、EAは1つまたは2つのスクリプトを実行します。

 
テイクプロフィット、ストップロスの変数名は何ですか?また、実行するスクリプトのアドレスはどのように指定すればよいのでしょうか。
 
Dimka-novitsek:
この機能が働くとは思えないのですが、どうでしょう?確かに今はティックが発生しませんが、少なくともチャートに接続するときはスタートが機能するはずですよね?まあ、少なくともコンパイルはできる!!!! これを試す

ダニがいない。スタートが発動しない。スクリプトとしてコンパイルすることができます。ただし、更新される隣接チャートのディスクリプタを指定する必要があります。

あるいはこんな感じ。

#include <ServicesMT4.mqh>
int hwndChart = NULL;
void init()
 {
  hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (!IsStopped())
   {
    for (int i = 0; i < 9; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
      Sleep(4000);
     }
   }
 }

しかし、おそらくあなたには通用しないでしょう。ServiceRefreshChart()関数は、誰でも使えるというわけではなさそうです。

インジケーターで試すことができます。チャートへの参加とTFの変更で2回リフレッシュされます。

 
ありがとうございました!!!!!!!
 
コンパイルはするが、実行はしない。
 
Dimka-novitsek:
コンパイルはできるが、実行されない。

確認しました。ServiceRefreshChart ()はご利用になれません。

どのオプションが機能しないのでしょうか?もう、やりすぎです。スクリプトと別のチャートを使用するオプションは常に機能します。

EURUSD H1 などのチャートを開きます。

2.スクリプトではこれ。

void start()
  {
   int hwndChart = WindowHandle("EURUSD", PERIOD_H1);
   while (!IsStopped())
    {
     for (int i = 0; i < 9 && !IsStopped(); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }

3.別のチャートでスクリプトを実行します。

4.EURUSD H1チャートは、TFを変更します。