long currChart=ChartFirst();
int i=0;
while(currChart>=0)
{
Print(i,ChartSymbol(currChart)," ID =",currChart);
currChart=ChartNext(currChart); // на основании предыдущего получим новый график
i++;// не забудем увеличить счетчик
}
double GetExtremumZigZagPriceHigh(string symbol="",ENUM_TIMEFRAMES timeframe=0,int extremum_number=0)//,int depth=12,int deviation=5,int backstep=3)
{
if(symbol=="") //Если symbol = "" , то..
symbol=Symbol(); //Присвоить переменной symbol значение текущего символа на графике.//Объявить необходимые переменные:double price[]; //Цена экстремума выбранная из массива таймсерии.//datetime time[];int count; //Счетчик цикла.int bars_quantity=1000; //Количество баров на графике.int extremum_count=0; //Счетчик экстремумов.ArraySetAsSeries(price,true); //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.CopyBuffer(handle,1,0,bars_quantity,price); //Скопировать в динамический массив price[] цены указанного количества баров.for(count=1; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
{
if(price[count]!=0) //Если Цена Зигзага есть, то есть не равна нулю, то..
{
extremum_count++; //Увеличить счетчик экстремумов на одну единицу.if(extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..return(price[count]); //Вернуть эту цену.
}
}
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,return(0); //Печатать Print, и возвращать ноль.
}
ドキュメントとサンプルコードをよく読んでください。ループが正しく構成されていません。
forとwhileのループが同じように動作するなんて言わないでください。問題はそこではなく、ハイライトされたラインです。ありがとうございます、読ませていただきました(そこからスタートです)
私のコードではすべてうまくいくのですが、MT4ではチャート8が7で表示される不具合があります(
ありえない。何度プラットフォームのせいにしてきたことか、いつも自分が間違っていることが判明する。
これを試してみてはいかがでしょうか?
これを試してみてはいかがでしょうか?
同じことです。
なぜ印刷が違うのか?コードが違う?
開いているチャートはいくつで、どれが?シンボル、ピリオド。
展開された/展開された?ありがとうございます、そう読みました(そこがスタート地点)。
私のコードではすべてうまくいくのですが、MT4ではチャート8が7で表示される不具合があります(
非常に悪い読み方です。おそらく、学校で強制的に読まされるようなものでしょう。読んだけど、何も脳に刻み込まれてない。
以下は その一例です。そこでは目的が違うのですが、それでもオープンチャートの列挙は目的によって変わることはないのです。
または、以下のようなコードです。
なぜ印刷が違うのか?コードが違う?
開いているチャートはいくつで、どれが?シンボル、ピリオド。
展開された/展開された?非常に悪い読み方です。学校で強制的に読まされるようなものだったのでしょう。というか、読んだけど何も頭に残らなかった。
以下は その一例です。そこでは目的は異なるが、それでもこの列挙の目的によってオープンチャートの列挙が変わることはない。
または、以下のようなコードです。
端末を再起動することで問題が解消されます
このコードで配列が範囲外にならないようにするのを助けてください。
捨てられるのは、この場所です。
CopyBufferВозвращаемое значение
コピーされた配列の要素数,あるいはエラーの場合は -1.
備考
インジケータにデータを要求する際、要求されたタイムシリーズがまだ構築されていない、またはサーバからダウンロードする必要がある場合、この関数は直ちに-1を返しますが、ロード/構築プロセス自体は開始されます。
Expert Advisorやスクリプトからデータを要求する場合、端末がローカルにこれらのデータを持っていない場合はサーバーからの読み込みが開始され、ローカル履歴からデータを構築できるがまだ準備ができていない場合は必要な時系列の構築が開始されます。この関数は、タイムアウト時に準備できるデータ量を返します。
bars_quantityがあるかどうか確認します。