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);
}
HELP!!!
https://www.mql5.com/ru/forum/137960
もちろん、読み書きのできる配列に切り替えた方が良いのですが
1.反復毎に配列のサイズを1ずつ変更するのではなく,必要であれば50や100の単位で増加させるなど,頻度を少なくするのがよいでしょう
2.チェック印刷にはDoubleToStr()を使った方が良い。
3.読み込みに文字列変数を使用する理由がわかりません。
もちろん、読み書きのできる配列に切り替えた方が良いのですが
1.配列のサイズを反復毎に1ずつ変更するのではなく、必要であれば50や100の単位で増加させるなど、頻度を少なくするのがよいでしょう
2.チェック印字にはDoubleToStr()を使用するのがよいでしょう
3.読み込みに文字列変数を使用する理由がわかりません。
1. そうしないと動作しません。4列の場合、毎回更新する必要があり、NULL行を書き込んでしまいます。
2.OKです。
3.特別なアドバイス、今それはすべてを正しく読み取ります。しかし、それは1つのNULL行が冗長であることが判明し、1つの余分なrun.but値はそこにないので、それに応じてNULL行を埋めます。
1. そうしないと、NULL行を書き込むので、4カラムの場合、毎回更新する必要があります。
2.OKです。
3.特別なアドバイス1、今それはすべてを正しく読み取ります。しかし、それは1つの余分なrun.and値が存在しない間、1つのNULL行は、判明した、それぞれNULL行が充填されています。
このようなアプローチでは、大きなブレーキがかかる。
このやり方では、ブレーキが多くなる。
なるほど、今のところこっちの方が書きやすいですね。
while "がもう一回実行されるのをなくす方法を教えてください。
なるほど、今のところこっちの方が書きやすいですね。
もう一回実行される間に、どうすればいいのか?
捨てられなかったんです。しかし、私は文字列変数を使用しませんでした
了解です。では、ArrayResize();をサイクル数より少なく適用した場合、この文字列は配列から削除されるのでしょうか?
はい、そうなります。
この機能は、使用頻度が少ないほど速く動作します。100要素確保し、アレイオーバーランを制御して読み出す。必要であれば、もう一度100要素ずつ配列を増やします。同時に、実際にダウンロードされた要素数を保持します。配列のダウンロードが完了したら、新たにArrayResize()を作成しますが、これは実際にダウンロードした要素数で行います。
しかし、配列を扱うための関数はより正しく動作します。まず配列の要素 数をファイルに保存し、次に配列そのものを保存する必要があります
最初に要素数を読み、配列のサイズを設定します。アレイをダウンロードする。また、ループはありません
はい、そうなります。
この機能は、使用頻度が少ないほど速く動作します。100要素確保し、アレイオーバーランを制御して読み出す。必要であれば、もう一度100要素ずつ配列を増やします。同時に、実際にダウンロードされた要素数を保持します。配列のダウンロードが完了したら、新たにArrayResize()を作成しますが、これは実際にダウンロードした要素数で行います。
しかし、配列を扱うための関数はより正しく動作します。まず配列の要素数をファイルに保存し、次に配列そのものを保存する必要があります
最初に要素数を読み、配列のサイズを設定します。アレイをダウンロードする。また、ループはありません
正しい解決方法をご教示ください。
古いTFのサポート/レジスタンスレベルを現在のTFに投影したものがある。どの水準が最後に価格を試したかを判断する必要がある。フラッグを通してやってみました。
が、ログには何も表示されない...。[例えばPrint(Level_Re)を設定し、配列全体を走査すると、ログは最後のバーのレベルの値で 停止します。つまり、レベル自体は正しく計算されているのですが、フラグの場合は何かうまくいかないのです・・・。]
エラーは何ですか?あるいは、どのような方法が最適なのでしょうか。
からT-G
は、このように試してみてください。
datetime expiration=TimeCurrent()+MaxSecLiveTime;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE)を実行。
と何が違うのか。