[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 556

 


もちろん、読み書きのできる配列に切り替えた方が良いのですが

1.反復毎に配列のサイズを1ずつ変更するのではなく,必要であれば50や100の単位で増加させるなど,頻度を少なくするのがよいでしょう

2.チェック印刷にはDoubleToStr()を使った方が良い。

3.読み込みに文字列変数を使用する理由がわかりません。

 
Vinin:


もちろん、読み書きのできる配列に切り替えた方が良いのですが

1.配列のサイズを反復毎に1ずつ変更するのではなく、必要であれば50や100の単位で増加させるなど、頻度を少なくするのがよいでしょう

2.チェック印字にはDoubleToStr()を使用するのがよいでしょう

3.読み込みに文字列変数を使用する理由がわかりません。

1. そうしないと動作しません。4列の場合、毎回更新する必要があり、NULL行を書き込んでしまいます。

2.OKです。

3.特別なアドバイス、今それはすべてを正しく読み取ります。しかし、それは1つのNULL行が冗長であることが判明し、1つの余分なrun.but値はそこにないので、それに応じてNULL行を埋めます。

 
orb:

1. そうしないと、NULL行を書き込むので、4カラムの場合、毎回更新する必要があります。

2.OKです。

3.特別なアドバイス1、今それはすべてを正しく読み取ります。しかし、それは1つの余分なrun.and値が存在しない間、1つのNULL行は、判明した、それぞれNULL行が充填されています。


このようなアプローチでは、大きなブレーキがかかる。
 
Vinin:

このやり方では、ブレーキが多くなる。

なるほど、今のところこっちの方が書きやすいですね。

while "がもう一回実行されるのをなくす方法を教えてください。

 
orb:

なるほど、今のところこっちの方が書きやすいですね。

もう一回実行される間に、どうすればいいのか?



捨てられなかったんです。しかし、私は文字列変数を使用しませんでした
 
了解です。ArrayResize();をループ回数より少なく適用した場合、この文字列は配列から削除されるのでしょうか?
 
orb:
了解です。では、ArrayResize();をサイクル数より少なく適用した場合、この文字列は配列から削除されるのでしょうか?

はい、そうなります。

この機能は、使用頻度が少ないほど速く動作します。100要素確保し、アレイオーバーランを制御して読み出す。必要であれば、もう一度100要素ずつ配列を増やします。同時に、実際にダウンロードされた要素数を保持します。配列のダウンロードが完了したら、新たにArrayResize()を作成しますが、これは実際にダウンロードした要素数で行います。

しかし、配列を扱うための関数はより正しく動作します。まず配列の要素 数をファイルに保存し、次に配列そのものを保存する必要があります

最初に要素数を読み、配列のサイズを設定します。アレイをダウンロードする。また、ループはありません

 
Vinin:

はい、そうなります。

この機能は、使用頻度が少ないほど速く動作します。100要素確保し、アレイオーバーランを制御して読み出す。必要であれば、もう一度100要素ずつ配列を増やします。同時に、実際にダウンロードされた要素数を保持します。配列のダウンロードが完了したら、新たにArrayResize()を作成しますが、これは実際にダウンロードした要素数で行います。

しかし、配列を扱うための関数はより正しく動作します。まず配列の要素数をファイルに保存し、次に配列そのものを保存する必要があります

最初に要素数を読み、配列のサイズを設定します。アレイをダウンロードする。また、ループはありません

ありがとうございます!今後のために覚えておきます。
 

正しい解決方法をご教示ください。

古いTFのサポート/レジスタンスレベルを現在のTFに投影したものがある。どの水準が最後に価格を試したかを判断する必要がある。フラッグを通してやってみました。

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

     for(int i=0;i<limit;i++)

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

が、ログには何も表示されない...。[例えばPrint(Level_Re)を設定し、配列全体を走査すると、ログは最後のバーのレベルの値で 停止します。つまり、レベル自体は正しく計算されているのですが、フラグの場合は何かうまくいかないのです・・・。]

エラーは何ですか?あるいは、どのような方法が最適なのでしょうか。

 
alkador:

からT-G

は、このように試してみてください。

datetime expiration=TimeCurrent()+MaxSecLiveTime;

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE)を実行。


と何が違うのか。

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);