Здравствуйте. Я начинающий трейдер, придумал торговую стратегию, написал советника, при его работе на демосчёте возникла следующая проблема:
Советник иногда зависает во время выполнения операции OrderSend(). Выглядит это так: в вечером запустил советник, утром обнаруживаю, что советник завис в 3 часа ночи. В логе присутствует сообщение "Выполнение команды началось ...", сообщения "... Выполнение команды закончилось" нет. Терминал MT4 работает, получение котировок происходит, котировки отображаются на графике инструмента, на котором работает советник, советник висит. Ситуация возникает неоднократно, после перезапуска терминала ошибка может повториться через несколько часов.
Вопросы:
В чём причина зависания советника? Как устранить зависание?
Вот фрагмент соответствующего кода:
Дополнительная информация: использую GPRS-модем, включён круглосуточно, обрывов связи с потерей коннекта в течение работы советника не наблюдается, программ для анализа сетевого трафика специально не устанавливал, работает только стандартный брандмауэр WinXP.
Поискал по форуму, подходящего описания такой проблемы, её причин и способов их устранения не нашёл.
( Такое ощущение, что проблема возникла на ровном месте. Вообще не представляю, как такие фундаментальные вещи могут не работать )
int start(){//+----------------------------------------------+while(!IsStopped()){if(!IsConnected())RefreshRates();Sleep(3000);}return(0);}//+----------------------------------------------+
while(true)// Цикл закрытия орд.{if( Tip==0&& Cls_B==true)// Открыт ордер Buy..{//и есть критерий закрAlert("Попытка закрыть Buy ", Ticket,". Ожидание ответа..");RefreshRates();// Обновление данных
Ans=OrderClose( Ticket, Lot,Bid,2);// Закрытие Buyif( Ans==true)// Получилось :){Alert("Закрыт ордер Buy ", Ticket);break;// Выход из цикла закр}if( Fun_Error(GetLastError())==1)// Обработка ошибокcontinue;// Повторная попыткаreturn;// Выход из start()}
Здравствуйте, все! Подскажите, плз, как вытащить из индикатора +МР, сами значения уровней для использования в советнике?
ObjectGet()を使ってみてください。線に注目 DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false);
ObjectGet()を使ってみてください。DrawVLine(onp + "hz", hz, Red, 1, STYLE_DOT, false)の線に注目してください。
感謝
Здравствуйте. Я начинающий трейдер, придумал торговую стратегию, написал советника, при его работе на демосчёте возникла следующая проблема:
Советник иногда зависает во время выполнения операции OrderSend(). Выглядит это так: в вечером запустил советник, утром обнаруживаю, что советник завис в 3 часа ночи. В логе присутствует сообщение "Выполнение команды началось ...", сообщения "... Выполнение команды закончилось" нет. Терминал MT4 работает, получение котировок происходит, котировки отображаются на графике инструмента, на котором работает советник, советник висит. Ситуация возникает неоднократно, после перезапуска терминала ошибка может повториться через несколько часов.
Вопросы:
В чём причина зависания советника? Как устранить зависание?
Вот фрагмент соответствующего кода:
Дополнительная информация: использую GPRS-модем, включён круглосуточно, обрывов связи с потерей коннекта в течение работы советника не наблюдается, программ для анализа сетевого трафика специально не устанавливал, работает только стандартный брандмауэр WinXP.
Поискал по форуму, подходящего описания такой проблемы, её причин и способов их устранения не нашёл.
( Такое ощущение, что проблема возникла на ровном месте. Вообще не представляю, как такие фундаментальные вещи могут не работать )
3000スリップ(3秒)の頻度でエラーが発生したらリフレッシュするループスクリプトをEAと並行して実行してみてください。
通常のリクエストで解決できる問題だと思います(ティックに関係なく)。
ティックがあればリフレッシュしますが、ティックがあればなぜリフレッシュするのでしょうか?
ということで、ループしたスクリプトしか役に立ちません。
動作確認せずに直接Mozillaで書きました)。
вот.
Check, my indicator is not displayed (there is a .csv required).ラベルの設定はtrueにする必要があります
Проверьте, у меня не отображается индикатор (там .csv нужен какой-то). В настройках labels должно быть true
Necron さん、ありがとうございます。そうですね......インジケーター自体に外部データが必要なのは分かっているのですが......。
MT4では、各通貨ペアで水平に(異なる時間枠で)2つのウィンドウが開かれています。
- リンクさせる方法はないのでしょうか?- 一つを押すと、二つ目が一緒に上がってしまうんです。
(ウィンドウをリンクさせるプログラムがあるらしいが、MTで動くかどうかは知らない)。
ADSLや他の回線に切り替えた方が良い。gprsでの動作が全く見えないんだが。
...GPRSモデムを使用しており、24時間オンになっています。EA作業中に接続が途切れることはありません。ネットワークトラフィックを分析するソフトウェアはインストールしておらず、WinXP標準のファイアウォールのみです。
[実際、1日10MBのトラフィックと、gprsクラス10の帯域幅の50分の1である毎秒0.8(sic!)キロビットで、主要6通貨ペアのオンライン作業に十分対応できるのです。コネクションのドロップがないこと、ブローカーとのパケット送受信の遅延が少ないことが重要である。GPRS経由の電話からは、帯域は十分でしたが、途切れることがありました。現在、固定GPRS/EDGEモデムによる接続は24時間中断することなく良好で、MT4端末の帯域幅はさらに向上しています。[歌詞の余談はここまで】。]
実験的に原因を突き止め、修正しました。原因はWinXPのファイアウォールで、MT端末からDCサーバーへのデータ送信に干渉し、データを歪めていたようなのです。しかも面白いことに、ポジションのオープン、クローズ、修正は手動で行っていたのに、Expert Advisorのスクリプトは......パッと見で分かる。WinXPのファイアウォールの例外リストにMetaTraderを追加したら、ハングアップの問題が解決しました。
皆さん、潜在的な力を貸していただきありがとうございます。
Urain さんが 書き込みました :>>。
EAと並行して、非コミット時にリフレッシュするループスクリプトを3000slip(3秒)の頻度で動かしてみてください。通常のリクエストで解決できる問題だと思います(ティックに関係なく)。ありがとうございます。もう原因も解決策もわかりました。実際、接続はどこにも行っておらず、数日前から途切れることなく安定しています。WinXPのファイアウォールが原因 であることが判明し、その例外リストにMetaEditorを追加することで解決しました。
PLEASE HELP!!!