MqlRates bars[]; // массив для хранения данных цен OHLC int start_bar=0; // с какого бара копируем int count_bar=4; // сколько баров копируем //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- ArraySetAsSeries(bars, true); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ voidOnDeinit(constint reason) { //---
バー[]
バーズと 呼ばれる、コンパイラが空に向かって叱咤している。この設計をテストしたのか、それともうまくいくはずだと思い込んでいるのか、それとも私が何か間違ったことをしているのか?
はい、私のミスです。名前を付けてください。一般に、変数に表現力豊かな名前をつけておけば、必ずしもその存在が正当化されるとは限らない変数を追加で作る必要がなくなるという考え方があります。
理由は何かを表現するためではなく、それらを扱う際のコードを短くするためです。
そして残りも同じように、さもなければ線の長 さが増加します
説明をしてくださった皆様、ありがとうございました。
何かを表現するために名付けたのではなく、作業する際のコードを減らすために名付けたのです。
そして残りも同じように、さもなければ線の長 さが増加します
皆さん、分かりやすい説明ありがとうございました
コードを最小限にしたい場合は、データ配列を直接参照するようにします
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar=0; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(bars, true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(CopyRates(Symbol(),PERIOD_CURRENT, start_bar, count_bar, bars)<count_bar) return;
if(bars[1].open<bars[1].close && bars[2].close>bars[3].close && bars[1].close>bars[2].close)
{
}
}
//+------------------------------------------------------------------+
こんにちは。
Expert Advisor をアンロード(削除)する際に、発注した注文や建玉を 正しく削除する場所と方法は?難しいことでなければ、例を挙げて教えてください。
ありがとうございます。
あるEAが妙にナンセンスなことになっている。EAを通常通りテストします。"Run single test "をクリックすると、1回だけ、初回のみ実行されます。そして、単体テストをクリックしたり、最適化で任意の行をクリックすると、ジャーナルに表示されます。
2017.02.08 13:31:05.165 テスターはパス4234087422336の入力を取得できない。
2017.02.08 13:31:34.829 テスターはパス4076312468706の入力を得ることができない。
2017.02.08 13:31:47.973 テスターはパス1004506640527の入力を得ることができません。
他のEAは正常に動作しています。それは何でしょう?
皆さん、10000*10000の巨大マトリックスを記録する
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
このアルゴリズムの速度効率はどうでしょうか?
行列が1000*1000の時は数秒、10000*10000に増やすとシステムが立ち上がるので
皆さん、10000*10000の巨大マトリックスを記録する
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
このアルゴリズムの速度効率はどうでしょうか?
行列が1000*1000の時は数秒、10000*10000に増やすとシステムが立ち上がるので
混乱はないのでしょうか?
4次元以上の配列が 許されないのに、どうしてそのような行列ができるのでしょうか?
混乱はないのでしょうか?
10000×10000は2次元の行列ではないか?
などなど...
4次元以上の配列が 許されないのに、どうしてそのような行列ができるのでしょうか?
混乱はないのでしょうか?