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

 
Prompt:) ありがとうございます。
 
rigonich:

intiHighest( 文字列 symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
見つかった最高値のインデックスを返します(現在のバーからの相対的なオフセット)。
パラメータ
値は、最高値のバーの値として 返される。

intiHighest( 文字列 symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
見つかった最高値のインデックスを返します(現在のバーからの相対的なオフセット)。
パラメータ
記号 - 検索対象となるシンボルの名称。NULLはカレントシンボルを意味する。
タイムフレーム - 期間チャートの期間の ひとつとすることができる。0は現在のチャートの期間を示します。
タイプ - タイムスケールの識別子。任意の時系列識別子と することができる。
カウント - 検索対象となる時系列の要素数(現在のバーから昇順のインデックスへの方向)。
立ち上がり - 最高値の検索を開始する開始バーのインデックス(現在のバーからのオフセット)を指定します。負の値は無視され、ゼロ値に置き換えられる。
問題は、フラクタルが出現したバーよりも前に検索するように指定する方法と、期間が1分未満の場合...どうすればいいのでしょうか?
 

申し訳 ございません。

というのはすごいですね。グローバル変数に関する チュートリアルに目を通したところ、これが必要だということは理解できましたが、ニュアンスがよくわかりません。どこで宣言するか、正しい値を書き込むか、などなど。

例えば、5つのEAが5つのペアでターミナルにぶら下がっていて、それぞれのEAに4つの変数があるとすると、20個のグローバル変数が必要で、EAにいちいち名前を書かなくてもいいように、Symbol()コマンドで何とか名前を付けなければなりません。

全体として、まだ私の脳には合わないようです((

 
i999i:



最後にフラクタルが設定されたバーの開始時刻を覚えて おき、それを使ってこのバーの番号を探します。......、どう なんでしょう?チャートの期間、1分未満が単にない場合
 
i999i:

しかし、私が言いたかったのは、次のフラクタルが現れる前に、現在のフラクタルが壊されたかどうかを知るにはどうしたらいいかということです。

新鮮なフラクタルの価格を探せば(このページでは マウスホイールをスクロールすることができます)、このフラクタルが突破されたかどうかが分かります。私のプロフィールには、B.Williams ProfitUnity expoへの リンクがあります。自分で書いたんですよ。今は、価格が移動平均線に戻る方向に、逆シグナルでトレードしています。
 
xant:

申し訳 ございません。

というのはすごいですね。グローバル変数に関するチュートリアルに目を通したところ、これが必要だということは理解できましたが、ニュアンスがよくわかりません。どこで宣言するか、正しい値を書き込むか、などなど。

例えば、5つのEAが5つのペアでターミナルにぶら下がっていて、それぞれのEAに4つの変数があるとすると、20個のグローバル変数が必要で、EAにいちいち名前を書かなくてもいいように、Symbol()コマンドで何とか名前を付けなければなりません。

全てにおいて、まだ私の脳には合わない((

端末のグローバル変数に 頭を使わなければ、ファイルに書き込むのも......。

double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

でも、何事にも最初が肝心ですからね。start()内でfSave_MineGV()、init()内でfGet_MineGV()を実行する。

ぜひとも理解して、Var1などではなく、セーブ変数を書いてほしい。
 
xant:

申し訳 ございません。

というのはすごいですね。グローバル変数に関するチュートリアルに目を通したところ、これが必要だということは理解できましたが、ニュアンスがよくわかりません。どこに宣言するか、そこに必要な値をどう書くか、など。

例えば、5つのEAが5つのペアでターミナルにぶら下がっていて、それぞれのEAに4つの変数があるとすると、20個のグローバル変数が必要で、EAにいちいち名前を書かなくてもいいように、Symbol()コマンドで何とか名前を付けなければなりません。

まあ、まだ私の脳には無理ですが((

定数を定義するためのプリプロセッサコマンドもありますし、初心者にとってはファイルよりもグローバル変数の 方がはるかに簡単ですが、もちろん、あなたがボスです。

文字列 perem = "peremEURUSD-1";
文字列 perem = "peremEURUSD-2";
ダブルA
//+------------------------------------------------------------------+
//| スクリプトプログラム起動機能
//+------------------------------------------------------------------+
int start()
{
GlobalVariableSet(peremEURUSD-1,2.5); //新しい値を作成または割り当てます。
A=GlobalVariableGet(peremEURUSD-1); //これにより、値を読み取る。
if(GlobalVariableGet(peremEURUSD-1)==...)//このようにチェックする
return(0)です。
}

//+------------------------------------------------------------------+

追伸:(通貨ペアの)変数は一旦初期化した方がよいです。

 

rigonich,

なぜかというと、EAではただ、ファイルを記録する方が簡単だと逆に思ってしまったからです。

TarasBY ,

ありがとうございます!これでスッキリしました!やってみます!うまくいきそうです。

 
アドバイスお願いします...なんちゃって...原文のまま(PlaySound("alert.wav"); なし)- の作品です。しかし、あなたはフラグといくつかのアクション(例えば音楽を再生)の割り当てに加えて、任意のリンクに追加した場合...その後、フラグは0000を印刷していると音楽はフルスピードで再生されています!どこエラーが私を教えてください?
      if(Stoch_1>Stoch_2) flag1=1 ;  
      {Print (flag1,flag2,flag3,flag4);
      
      if(Stoch_1<Stoch_2 && flag1==1) flag2=1;
      {Print (flag1,flag2,flag3,flag4);
      
      if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) flag3=1; 
      {Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");
      
       if(Stoch_1<Stoch_2 && flag1==1 && flag2==1 &&  flag3==1) flag4=1;
              {Print (flag1,flag2,flag3,flag4);
       if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 &&  flag3==1 && flag4==1) 
       {OrderSend (Symbol( ), OP_SELL,  0.01 ,Bid, 0, 0, 0, NULL, 450, 0, CLR_NONE);
        Print ("OUT");


 
flag1=0;
flag2=0;
flag3=0;
flag4=0;}

}}     
  }}}
=================================================================
.....
 
TarasBY:

ターミナルにグローバル変数の頭脳がない場合、ファイルへの書き込みは...

でも、何事にも最初が肝心ですからね。start()内でfSave_MineGV()、init()内でfGet_MineGV()を実行する。

ぜひとも理解して、Var1などではなく、セーブ変数を書いてください。

面白い方法ですね、こんな風にグローバル変数が 使えるとは思いもしませんでした、EAのコードを変えなくても、追加するだけで済むのは便利ですね...。