Open=new CiOpen();
if(CheckPointer(Open)==POINTER_INVALID || !Open.Create(Symb.Name(),PERIOD_CURRENT))
return;
//---int bars=10;
double Temp[]; //Создаем массив для временного хранения входных данныхArraySetAsSeries(Temp,true); //Устанавливает флаг AS_SERIES
Open.GetData(0,bars,Temp); //Копируем необходимые данные в массив Temp
InputNormalize(Temp,bars); //Нормализуем данные в массиве
//---Как заменить значения в Open значениями из Temp?---
}
//+------------------------------------------------------------------+//| функция нормализации входных данных |//+------------------------------------------------------------------+void InputNormalize(double &buffer[],int bars)
{
double d1=-1;
double d2=1;
double x_min=buffer[ArrayMinimum(buffer,0,bars)];
double x_max=buffer[ArrayMaximum(buffer,0,bars)];
for(int i=0; i<bars; i++)
{
buffer[i]=(((buffer[i]-x_min)*(d2-d1))/(x_max-x_min))+d1;
}
return;
}
Для каждой выполняющейся mql4-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql4-программы на выполнение...
こんにちは。
三本松で迷っています。
extern int a =2; extern int b =3; extern int c =4; 数値abc を、ある与えられた d (例えばd=344) と比較するために a,b, c を変更するとその値が変わるように設定するにはどうすればよいでしょうか。
ありがとうございました。
こんにちは。
三本松で迷っています。
extern int a =2; extern int b =3; extern int c =4; 数値abc を、ある与えられた d (例えばd=344) と比較するために a,b, c を変更するとその値が変わるように設定するにはどうすればよいでしょうか。
ありがとうございました。
x = c + b*10 + a*100
x = c + b*10 + a*100
なんてことだ!頭を悩ませています!ありがとうございました。
こんにちは、2020.10.03_13:33GMT+3です。MetaTrader 4の標準的なMoving Average Expert Advisorを取りました。そして、利益が出るように変え始めたのです。ストラテジーテスターで OrderProfit()関数を使って終値条件を記述しようとしたところ、Expert Advisorがその条件で取引を終了してしまった。取引を終了するところまではいかない。しかし、決算条件が正しく書けているかは疑問です。それ以外の場合はExpert Advisorが取引を終了します。私はおそらく、取引開始価格と最終価格を書くようにします。始値と終値の差が最大になり、この差が小さくなったら -- 取引を終了します。Expert Advisorのファイルを添付します。13:50 GMT+3。
こんにちは。
入力データを正規化する関数を書き始めました。しかし、元の値を正規化した値に「置き換える」ことはできない。つまり、Open timeseries bufferの値をTemp arrayの新しい値で更新することができないのです。私のエラーは何ですか?OOPと非OOPを掛け合わせようとしている感がある))。
もっと簡単な方法でできるはずだ!この場合、ご教示ください)
こんにちは。
入力データを正規化する関数を書き始めました。しかし、元の値を正規化した値に「置き換える」ことはできない。つまり、Temp配列の新しい値でOpenタイムズバッファーの値を更新することができないのです。私のエラーは何ですか?OOPと非OOPを掛け合わせようとしている感がある))。
もっと簡単な方法でできるはずだ!この場合、ご教示ください)
言語ドキュメントを読む
言語ドキュメントを読む
アレクセイ、ありがとう!これで 不可能であることが明らかになった。
確かに、私はmql4とはちょっと違いますね。CiOpenクラスで データを変更しようとしています。Updateメソッドで、配列の指定した位置の要素を変更する必要があるのですが、混乱しています。
アレクセイ、ありがとう!これで 無理が明らかになった。
たしかに、正確にはmql4は持っていませんね。CiOpenクラスで データを変更しようとしています。Updateメソッドで、配列の指定した位置の要素を変更する必要があるのですが、混乱しています。
mql4のコーナーで質問されているので、mql4について回答しました。ご質問の中に、mql5へのヒントがありません。しかし、結果は同じです。