int i;//аналогично i=0while((TimeCurrent()-time)>1){//то заносим старые значения столько раз, сколько было пропущено секунд минус одинif(FileSeek(hand1e, fpos, SEEK_SET) == false){//перемещаем указатель на новую позицию, которую мы запомнили в FileTell
error = GetLastError();//если ошибкаPrint("out: error(",error,"): ",ErrorDescription(error));//записываем её в лог
flag = false;
return;//и выходим
}else{//выдумываем несуществующую свечу (т.к. тика в эту секунду не было)
time++;
FileWriteInteger(hand1e, time, LONG_VALUE);//TimeCurrent()//выбор выдуманной свечи (секунда, при которой тика не было)://прочерк на Close[]/*
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Open[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//High[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Low[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]
FileWriteDouble (hand1e, 0, DOUBLE_VALUE);//Volume[]
*///свеча без теней/*
FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]
FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//High[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Low[]
FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]
FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]
*///такая же свеча, как и была (не прочерк и не без теней)FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]FileWriteDouble (hand1e, bid[ArrayMaximum(bid)], DOUBLE_VALUE);//High[]FileWriteDouble (hand1e, ask[ArrayMinimum(ask)], DOUBLE_VALUE);//Low[]FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]//конец выбораFileFlush (hand1e);
fpos = FileTell (hand1e);//запоминаем позицию записи в файле
}
}
ArrayResize(bid, 1);//урезаем и обнуляем использованные нмассивыArrayResize(ask, 1);
if(flag==true){
if(tick.time.local==true){//если флаг работы с историей поднят
time = TimeLocal();//работаем с локальным временемwhile(time==TimeLocal()){//пока секунда не прошла
bid[i]=MarketInfo(symbol, MODE_BID);//заносим в индикаторный массив данные тиков
ask[i]=MarketInfo(symbol, MODE_ASK);
i++;
}
}else{//иначе
time = TimeCurrent();//работаем с временем сервераwhile(time==TimeCurrent()){//пока секунда не прошла
bid[i]=MarketInfo(symbol, MODE_BID);//заносим в индикаторный массив данные тиков
ask[i]=MarketInfo(symbol, MODE_ASK);
i++;
}
}
}
//Вышли из цикла, т.к. время изменилось. Заносим в файл:if(FileSeek(hand1e, fpos, SEEK_SET) == false){//перемещаем указатель на новую позицию, которую мы запомнили в FileTell
error = GetLastError();//если ошибкаPrint("out: error(",error,"): ",ErrorDescription(error));//записываем её в лог
flag = false;
return;//и выходим
}else{
int last.index=ArraySize(ask)-1;
FileWriteInteger(hand1e, time, LONG_VALUE);//TimeCurrent()FileWriteDouble (hand1e, bid[0], DOUBLE_VALUE);//Open[]FileWriteDouble (hand1e, bid[ArrayMaximum(bid)], DOUBLE_VALUE);//High[]FileWriteDouble (hand1e, ask[ArrayMinimum(ask)], DOUBLE_VALUE);//Low[]FileWriteDouble (hand1e, ask[last.index], DOUBLE_VALUE);//Close[]FileWriteDouble (hand1e, last.index+1, DOUBLE_VALUE);//Volume[]FileFlush (hand1e);
fpos = FileTell (hand1e);//запоминаем позицию записи в файле
}
2.現地時間(オフラインであること)が頭に浮かんでこない仕事中。while(time==TimeLocal()){//until one seconds has passed」のループの中に、FileWriteDoubleにMarketInfoが あるはずです(私には馬鹿の上塗りのように聞こえます)。そこで何がより論理的に見えるか教えていただければありがたいです。
3.著者の構成
if(flag == true)
{
if(tick.time.local == true)
{
time = TimeLocal();
}
else{
time = TimeCurrent();
}
そんなことはどうでもいいんです。MathAbsを通してmoduloという絶対値を返しているのですが...
入力点を探すならMathAbs() がスマホを導入して います。私としては、最初から最後まで、いつ、どのような許容範囲で、ということが明確になるように指定すべきです
入力点を探す場合MathAbs()で不鮮明に する。私にとっては、最初から最後まで指定されるべきで、いつ、どのような寛容さをもって いるのかが明確なのです
修正されました...とにかくどの条件も満たしていない。
をreturnSign[i] = true に変更し、その結果、VrPr 関数(私がモニターしているデータを出力する関数)は使用さ れません。とはいえ、すでにクロスダウンは始まっているのですが。スクリーンショット です。高速マシンが低速マシンを横切るたびに、配列crossDir[]が埋め尽くされて いくのがわかります。
2つの車輪が一番太い車輪を横切り、配列の2つの要素にすでに値1が割り当てられて いることに注意してください。 つまり、それらの値はCROSS_DN です。
ということは、その条件は
if (crossDir[i] == CROSS_DN)
そして
もし、エントリーポイントを探しているのであれば、MathAbs()はファジーさを導入 します。いつ、どのような許容範囲 なのかが明確になるように、最初から最後まで明記するべきだと思います
また、誰と、なぜ。
他に誰がいて、なぜ。
視覚的にはMathAbc()を使わない方が習慣的に知覚しやすいことを除けば、...違いはありません。しかし、話題は逸れました。私のコードに何か指摘はありますか?結局、問題はまだ解決していない...。
いいえ。
皆さん、こんにちは。
AlpariのMT-4でUSD/JPYをテストしています。
USD/JPYの1分足の履歴をダウンロードしました。
注)分史のアーカイブを読み込んだ後、「1分」をダブルクリックしてください。
DatabaseのQuote Archiveウィンドウに、1分間のQuoteのリストがなぜか表示されない。
1時間 TF
全てのダニ
期間 2000年01月01日- 01.01.2013.
テスト終了後、REPORTSタブに赤いバーが表示され、モデリング品質が25%であると表示される
同じ期間に同じパラメータでテストしました......ただし、各月で別々に テストしました。
そして、毎月、緑のバーと90%の シミュレーション品質が表示されます。
次に、同じ期間を2000~2006年と2006~2013年に2等分してテストしてみました。
各パーツのバーが緑色で、シミュレーションの品質が90%であることを示しています。
質問
一般的な13年間のテストの品質も90%だったのですが、どうすればいいのでしょうか?
ありがとうございました。
そうですね。終わったと思います。これは、第二のキャンドルにそれらをパックすることで、再構築されたティックコレクターです。
そうでした。
なった。
コードに対するコメント
1.CPU時間を節約するため、仮想ローソク足の選択でスイッチケースを作らず、代わりに選択のある部分をコメントアウトした(選択はコンパイル前に一度だけ特定のニーズで行われるため)。
2.現地時間(オフラインであること)が頭に浮かんでこない仕事中。while(time==TimeLocal()){//until one seconds has passed」のループの中に、FileWriteDoubleにMarketInfoが あるはずです(私には馬鹿の上塗りのように聞こえます)。そこで何がより論理的に見えるか教えていただければありがたいです。
3.著者の構成
init()の一番最後に宣言しています。
4.init()ダイナミックアレイの 冒頭で
の代わりに使用される変数です。
5.最適化のために、理論的にはWinAPIのファイル関数を使い、44バイトのブロック(MarketInfo構造体の長さ、.hstの長さ)で一気に履歴に書き込むことが可能です。
6.Time[]セルに書き込む時間の作者のモデリングを完全に削除しました。同じ理由で、head while loopでは、TimeLocal()のチェックは行わず、TimeCurrent()のチェックのみを行っています。
7.コードの最適化のために、他に何か提案はありますか?