else{// Иначе стрелка создана. Задаём её свойстваObjectSetInteger(ChartID(),Open_name,OBJPROP_ARROWCODE,OpenArrowCode);//код стрелки 232 // или 0 вместо ChartID() для текущего графика ObjectSet(Open_name,OBJPROP_COLOR,ObjColor);//цвет стрелки
}
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
mql4インジケーターのコードが動かなくなりました。
エディターが 'ObjectSetInteger' と表示 -関数 呼び出しに適用できるオーバーロードが1つもない
何年も使えていたのに、突然使えなくなった。しかし、残念なことです。
しかし、なぜ2つのスタイルをミックスしたのでしょうか?1行目で矢印コードを指定した場合は、2行目も同じスタイルで指定します。
新バージョンのインジケータを マーケットにアップロードしようとしたところ、テストがエラーで終了しました。付録の画像にあるように、以下の内容でエラー報告をします。
テスターに問題があるのかも?ただ、なぜ2つのスタイルをミックスしたのでしょうか?1行目でアローコードを設定した場合は、2行目も同じスタイルで使用します。
ありがとうございます、助かりました。
2つのスタイル?スタイルについては知りませんでした。ただ、以前はこの部分はそのようにしかできなかったんです。変化があったのです。私は10年以上MQL4でプログラミングをしています。そして今、開発者が言語を変更したため、私のコードの多くが動かなくなりました。とても残念です。その変化は、決して良い方向には向かわない。膨大な量のコードを作り直さなければならないということです。古いものでも、たくさん使っていました。
新バージョンのインジケータを マーケットにアップロードしようとしたところ、テストがエラーで終了しました。付録の図に示すようなエラー報告で、内容は次のとおりです。
テスターに問題があるのでは?servicedeskにリクエストを作成してください。
UPD: リクエストが見つかりました。
任意の動的配列のバッファを解放し、0次元のサイズを0に設定する。
スクリプトやインジケータを作成する場合、使用したメモリはすぐに解放されるため、ArrayFree()関数を使用する必要はほとんどありません。カスタムインジケータでは、配列の主な作業は、ターミナルの実行サブシステムによって自動的に管理されているインジケータバッファへのアクセスによって表されます。
プログラムの中で複雑な動的条件でメモリを管理する必要がある場合、ArrayFree()関数を使用すると、不要になった動的配列が占有するメモリを明示的かつ即座に解放 することができるようになります。
ほらね?不要です。
当然ながら、いったんそこからメモリを解放し、配列にサイズを割り当てて再びメモリを確保しても、誰もその中身を保証することはできない。
配列の初期化:ArrayInitialize()を使用する。
誰も中身を保証してくれないってどういうこと?メモリが解放されたのなら、もうないんだから、どうやってゴミを入れるんだ?それとも、メモリをクリアすることは、そのメモリをプログラムの別の部分で使用する許可を与えることを意味し、実際には全くクリアしていないのでしょうか?
誰も中身を保証してくれないってどういうこと?メモリがクリアされたのなら、もうそこにはないのだから、どうしてゴミが入るのだろう?それとも、メモリをクリアすることは、そのメモリをプログラムの別の部分で使用する許可を与えることを意味し、実際には全くクリアしていないのでしょうか?
ArrayResizeはメモリを掃除しないので、前の「消費者」からのゴミが含まれているのです。
これは、配列にメモリが割り当て られた後、99.99(9)%の場合、ユーザーが自分のデータでそれを「埋める」ため、高速化のために行われます。
ありがとうございます、助かりました。
2つのスタイル?スタイルについては知りませんでした。ただ、以前はこの部分はそのようにしかできなかったんです。変化があったのです。私は10年以上MQL4でプログラミングをしています。そして今、開発者が言語を変更したため、私のコードの多くが動かなくなりました。とても残念です。その変化は、決して良い方向には向かわない。膨大な量のコードを作り直さなければならないということです。古くても、車一台分くらいは便利だったんですよ。
mql4 ObjectSetXXX-functionsが導入される以前のアローコードの設定方法ではないでしょうか?
私もmqlで書き始めて10年ほどになります(もっとかもしれませんが......時の流れは早いものです)。
ArrayResizeはメモリをクリアしないので、前の「消費者」からのゴミが含まれているのです。
これは、配列にメモリを 割り当てた後、99.99(9)%の場合、ユーザーが自分のデータでそれを「埋める」ため、高速化のために行われるものです。
では、なぜ端末を再起動しても数値が「ゴミ」のような定数になってしまうのでしょうか?
個人的には、別の配列のセルの内容を単純に合計することに行き詰ってしまい、ずっと頭を悩ませていたのです。
では、なぜ端末を再起動しても数値が「ゴミ」のような定数になってしまうのでしょうか?
個人的には、別の配列のセルの内容を単純に合計しただけで火傷してしまい、何がいけないのか長い間悩みました。
初期化されていない配列にどんなデータが入っていても、いつデータが変わってもおかしくない、誰もその値を保証してくれないのです。
そのため、初期化されていない変数(読み取りメモリ)を使用すると、時として原因究明に時間がかかる事態が発生します。
アドバイスしかできませんが。
常にデータを初期化する習慣を身につけると、将来、初期化不足に関連するエラーを探すのに多くの時間を浪費することがなくなります。
誰も中身を保証してくれないってどういうこと?メモリがクリアされたのなら、もうそこには ないのだから、どうしてゴミが入るのだろう?それとも、メモリをクリアすることは、そのメモリをプログラムの別の部分で使用する許可を与えることを意味し、実際には全くクリアしていないのでしょうか?
ダメってどういうこと?マザーボードスロットからメモリースティックを取り出さない。そして、もしメモリが存在し、それが解放される(値で初期化されるのではなく、解放される)なら、それは他のプログラムの必要性に使用されていることになります。