[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 231 1...224225226227228229230231232233234235236237238...432 新しいコメント 削除済み 2013.03.19 09:24 #2301 インジケータフォルダに正しくコピーしている7 ファイル: dailyzfibov-qwalidielhelw.mq4 6 kb ir0407 2013.03.19 09:36 #2302 hoz:次のような状況があります。誤解のあるコードの一部を示しました。すべての変数はグローバルに宣言されています。IsObjectFound() 関数で、オブジェクトの最初の価格ポイントと2番目の価格ポイントの値、名前、現在のバーでのオブジェクトの価格値を取得します。オブジェクトが見つかった場合はtrue モードで, そうでない場合はfalse で関数を終了する必要があります.スタート関数の実行を継続します。これは何でしょう? 何か問題が発生してもデバッグ出力を欲張らず、さらにエラーが発生していないか確認するようにしてください。動作スクリプトの例です。//+------------------------------------------------------------------+ //| Test ObjectFound.mq4 | //| Copyright © 2013, ir0407 | //+------------------------------------------------------------------+ #property copyright "Copyright © 2013, ir0407" #property link "" #include <stderror.mqh> #include <stdlib.mqh> string objName; int isObj; double objPrice1, objPrice2, objPriceCurr; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { if (!IsObjectFound()) { Print("В окне отсуствуют объекты, поиск продолжается..."); return (0); } return(0); } //+------------------------------------------------------------------+ //+-------------------------------------------------------------------------------------+ //| Блок поиска своих объектов | //+-------------------------------------------------------------------------------------+ bool IsObjectFound(int ObjType = EMPTY) { int Error; //Eсли объектов на графике нет, то и делать нам тут больше нечего if(ObjectsTotal(ObjType) == 0) { Print("Объекты на графике отсутствуют."); return(False); } for (int obj = 0; obj < ObjectsTotal(ObjType); obj++) { objName = ObjectName(obj); //Нужно убедиться что в переменной objName лежит имя объекта, //а не какая нибудь чепуха. Error = GetLastError(); if(Error == ERR_NO_ERROR) { isObj = ObjectFind(objName); if(isObj == -1) { Print("Объект с именем \"", objName, "\" не найден."); Error = GetLastError(); Print("Функция ObjectFind() вернула код ошибки #", Error); return(false); } objPrice1 = ObjectGet(objName, OBJPROP_PRICE1); objPrice2 = ObjectGet(objName, OBJPROP_PRICE2); objPriceCurr = ObjectGetValueByShift(objName,0); Print("objPrice1 = ", objPrice1); Print("objPrice2 = ", objPrice2); Print("objPriceCurr = ", objPriceCurr); } else { Print("Функция ObjectName() вернула код ошибки #", Error); return(false); } } return (True); // Объект найден! } Viktar Dzemikhau 2013.03.19 10:34 #2303 ir0407:何かが間違って動作していても決してデバッグ出力を欲張らず、さらにエラーがないかを確認するようにしてください。動作スクリプトの例です。 イゴール さん、貴重なコメントありがとうございます。その通りです!今までオブジェクトを扱ったことがなかったのですが、今はそのコツを掴んでいます。どちらからアプローチするかは、ずっと考えていました。 TarasBY 2013.03.19 10:50 #2304 GaNDarM: あなたは誤解している。端末で残高の値を変更するのは、確かにいいのですが:)前回の取引結果(利益または損失)に応じてロットサイズを変更したいのですが。また、預金の増減(損失の発生、利益の獲得)をどのように規定するのかがわからない。 取引結果を制御する方法は2つあります(他にもあるかもしれませんが、私は好きです)。 1)預金の以前の値を記憶し、現在の値と比較する(AccountBalance())。 しかしこの方法は、ターミナルのグローバル変数に 関わる必要があり、EAまたはターミナルの再起動時に変数の値が失われない(またはファイルに書き込む)ようにする必要があります。 2) そして、過去の取引結果を履歴から確認することができます(キムさんのスレッドから機能を探してみてください)。 Виктор 2013.03.19 10:59 #2305 koSTRIKin:インジケータフォルダに正しくコピーしている7 正しいフォルダは、experts/indicatorsです。念のため、書き込み後にフォルダー内の存在を確認してください。 もしあれば、エディターでどんなコードでもコンパイルした後に必ず表示されます。 Viktar Dzemikhau 2013.03.19 11:10 #2306 objName = ObjectName(obj); //Нужно убедиться что в переменной objName лежит имя объекта, //а не какая нибудь чепуха. Error = GetLastError(); if(Error == ERR_NO_ERROR) 関数がオブジェクトの名前を具体的に返すのであれば、なぜ無意味なのでしょうか? gyfto 2013.03.19 11:25 #2307 ガーンダーム(функцию поищите в ветке у Кима). 支店 削除済み 2013.03.19 12:19 #2308 TarasBY: 取引結果をコントロールする方法は2つあります(他にもあるかもしれませんが、私の場合はこの2つです)。 1) 以前の入金額を記憶し、現在の入金額と比較する(AccountBalance())。 しかしこの方法は、EAや端末を再起動したときに変数の値が失われないように、端末のグローバル変数に関わる必要がある(またはファイルに書き出す)。 2) そして、過去の取引結果を履歴から確認することができます(キムさんのスレッドから機能を探してみてください)。 ありがとうございます、検索してみます 削除済み 2013.03.19 12:40 #2309 INIT()で変数にゼロが代入されているのはなぜですか?start()関数の外で、買値と売値を変数に代入する場合のエラーや方法を教えてください。RefreshRates();を前面に出してみましたが、変化なし :(int init() { ..... //--- UpL = Ask; // Пик вверх изначально равен цене покупки DownL = Bid; // Пик вниз изначально равен цене продажи return(0); } //---end init-------------------------------------------------------- Pavel Shutovskiy 2013.03.19 12:51 #2310 ごあいさつ先週の安値から現在の週の初めまでのバー 数の値をプログラムで取得する方法を説明します。 1...224225226227228229230231232233234235236237238...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
インジケータフォルダに正しくコピーしている7
次のような状況があります。
誤解のあるコードの一部を示しました。すべての変数はグローバルに宣言されています。IsObjectFound() 関数で、オブジェクトの最初の価格ポイントと2番目の価格ポイントの値、名前、現在のバーでのオブジェクトの価格値を取得します。オブジェクトが見つかった場合はtrue モードで, そうでない場合はfalse で関数を終了する必要があります.
スタート関数の実行を継続します。これは何でしょう?
何か問題が発生してもデバッグ出力を欲張らず、さらにエラーが発生していないか確認するようにしてください。動作スクリプトの例です。
何かが間違って動作していても決してデバッグ出力を欲張らず、さらにエラーがないかを確認するようにしてください。動作スクリプトの例です。
イゴール さん、貴重なコメントありがとうございます。その通りです!今までオブジェクトを扱ったことがなかったのですが、今はそのコツを掴んでいます。どちらからアプローチするかは、ずっと考えていました。
あなたは誤解している。端末で残高の値を変更するのは、確かにいいのですが:)
前回の取引結果(利益または損失)に応じてロットサイズを変更したいのですが。また、預金の増減(損失の発生、利益の獲得)をどのように規定するのかがわからない。
取引結果を制御する方法は2つあります(他にもあるかもしれませんが、私は好きです)。
1)預金の以前の値を記憶し、現在の値と比較する(AccountBalance())。 しかしこの方法は、ターミナルのグローバル変数に 関わる必要があり、EAまたはターミナルの再起動時に変数の値が失われない(またはファイルに書き込む)ようにする必要があります。
2) そして、過去の取引結果を履歴から確認することができます(キムさんのスレッドから機能を探してみてください)。
インジケータフォルダに正しくコピーしている7
正しいフォルダは、experts/indicatorsです。念のため、書き込み後にフォルダー内の存在を確認してください。
もしあれば、エディターでどんなコードでもコンパイルした後に必ず表示されます。
ガーンダーム
(функцию поищите в ветке у Кима).
取引結果をコントロールする方法は2つあります(他にもあるかもしれませんが、私の場合はこの2つです)。
1) 以前の入金額を記憶し、現在の入金額と比較する(AccountBalance())。 しかしこの方法は、EAや端末を再起動したときに変数の値が失われないように、端末のグローバル変数に関わる必要がある(またはファイルに書き出す)。
2) そして、過去の取引結果を履歴から確認することができます(キムさんのスレッドから機能を探してみてください)。
ありがとうございます、検索してみます
INIT()で変数にゼロが代入されているのはなぜですか?start()関数の外で、買値と売値を変数に代入する場合のエラーや方法を教えてください。RefreshRates();を前面に出してみましたが、変化なし :(
ごあいさつ
先週の安値から現在の週の初めまでのバー 数の値をプログラムで取得する方法を説明します。