While (vhandle>0) の行は、最初のCopyBuffer<0の場合はreturn(0); となるので、特に負荷はかからないようです。
私ならこの方向で作業します。
if(!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
{
for(uchar u=0;u<100;u++) //запускаем цикл с ограниченным количеством шагов
{
if(CopyBuffer(vhandle,0,0,50,Sp1Buffer) && CopyBuffer(vhandle,1,0,50,Sp2Buffer))
{
return(true); //дождались копирования буферов - выходим
}
else
{
if(u==99) //т.е. выявляем последний шаг нашего цикла for, который не принёс ожидаемых результатов
{
Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
return(0);
}
Sleep(50); //засыпаем ненадолго (хотя я сам не сторонник использования Sleep в теле OnTick)
}
}
}
ヘルプのBarsCalculatedを読んでみてください。ちなみに、正しい例を示しています。
つまり、CopyBuffer>0である限り計算し、新しいパラメータ(Close())
は、ポジションを閉じたときに表示されます。つまり、Whileをループさせる必要があるのです。こんなふうになるんです。
私なら、「CopyBuffer<0の 間は、この関数の呼び出しを繰り返す」と表現します。
While (vhandle>0) の行は、最初のCopyBuffer<0の場合はreturn(0); となるので、特に負荷はかからないようです。
私ならこの方向で作業します。
一般的には、このような内容で、作者の判断で。ご指摘の通り、リファレンスガイドがあっても損はないでしょう。
BarsCalculatedのヘルプを読んでみてください。
紹介者作成に感謝 - 動作、問題ないようです(1ヶ月テスト済み)
以下は、1つ目のペアに対する私の作業コードです。
私なら、「CopyBuffer<0である限り、この関数を繰り返し呼び出す」と言うでしょう。
While (vhandle>0) の行は、最初のCopyBuffer<0の場合、return(0)になるので、あまり負荷がかかっていないようです。
私なら、この方向で仕事をします。
基本的には、作者の裁量でそんな感じ。正しく指摘されているように、参考書があっても損はないでしょう。
もっと単純に、この2つのアプローチのうち、どちらが優れていて、どちらが速いか、それを見てみようということです。
皆さん、ありがとうございました!では、テストに行きましょう。
開発者の皆さん、リクエスト#33601に注目してください(異なるOSでの活用に関する「素晴らしい機能」があります)...。
もしかしたら、もともと 別のブローカーからインストールさ れた端末を使用しているのでは?アプリケーションに詳細を追加してください。
開発者の方に質問です。
スプレッドについては、バーで保存され、テスターは(履歴が正常にロードされていれば)変化するスプレッドを考慮しながら履歴全体を実行することができるので、すべてが明確です。
つまり、ブローカー/ディーラーがスワップや手数料のレートを変更した場合、どうなるのか?
ちょっと不条理な状況であることは理解できますが、それでも。
もし私が正しく理解していれば、MT4のテスターはスワップと手数料を最後に取りますが・・・。
追記
スクリーンショット付きで再度明確化...。
開発者の方に質問です。
スプレッドについては、バーで保存され、テスターは(履歴が正常にロードされていれば)変化するスプレッドを考慮しながら履歴全体を実行することができるので、すべてが明確です。
つまり、ブローカー/ディーラーがスワップや手数料の大きさを変更した場合はどうなるのか、ということです。
スワップやコミッションの履歴は保存されず、これらの設定は最後の接続から取得される