"ダミー "からの質問 - ページ 56

 
Interesting:

tickハンドラとは対照的に、タイマはperiodで設定された一定時間後に実行されます。

もちろん、タイマーの処理が重い場合は、スリップによる時間制限や最初のカチカチ音でタイマーを無効にした方が良いですが(多くのバリエーションがあります)、タイマーの処理があまり重くなく、周期が十分長い場合は、タイマーを無効にすることができます。

また、タイマー処理では、営業日であるかどうかのチェックを行うことができます。

必要に応じて、週末に重い計算(例えば、EAの 自動最適化)をスケジュールし、タイマーからこの処理を実行することができます。計算の終了時(または計算の開始時)に、タイマーを正しく無効化することができます。

テスターでのテストは、多通貨EAのOnTimer()関数を使用しています。仮に10秒間隔でタイマーを設定したとします。テスト期間中のすべての週末にカチカチ音がするのでしょうか?ウラジーミルはそういう意味で言ったのだと思います。そこで、土日をスキップすることをタイマーに指示すれば、テストはもっと速くなる。
削除済み  
tol64:
多通貨Expert AdvisorのOnTimer()関数による テスターでのテストについては。仮に、タイマーが10秒間隔で設定されているとします。テスト期間中の週末はずっとカチカチ音を立てているのでしょうか?ウラジーミルはそういう意味で言ったのだと思います。そこで、土日をスキップすることをタイマーに指示すれば、テストはもっと速くなる。

1.計算があまり複雑でない週末にタイマーをオフにしてみたが、あまり違いを感じなかった(もちろん違いはあるが)ので、今は当分タイマーをオフにしないことにしている。

2.はい、タイマーが設定されている場合は、テスターでも通常モードでも、タイマーがオフになるまでトリガーがかかることに違いはありません。テスターの場合、10秒間隔で、テスト期間中、つまり10秒ごとにトリップすることになります。

週末にタイマーを停止する場合、いくつかの解決策があります。

а.タイマーの状態を変数に書き込んでシャットダウンする。メインツールによる最初のカチカチ音(または「スパイ」信号)で、タイマーを再スタートさせることができます。この方法は、ティックスキップの確率や流動性の低い市場でのティックラグに関連するデメリットがある。ティックスキップは、トレードサーバーへの接続ができないことによっても発生します。

б.スリップブレーキ、一定時間。良い点は、期間を正確に指定できることですが、悪い点は、この方法では、タイマーだけでなくExpert Advisor全体がX時間まで非アクティブになることです。

しかし、すべてのポジションと注文はテスターで処理されます。

в.タイマーの周期を長くすることで、一時停止を実現することが可能です。タイマーが「目覚める」時間を事前に知ることができ、専門家の仕事を止めずに済むので便利です。動作中や待機中のタイマーを把握しなければならないことに違和感を覚える。

в.タイマーの詰め方を、常時実行するもの(接続状態の判断など)と、条件に応じて実行するもの(営業日、接続あり、取引可など)に分けます。

 
Interesting:


必要に応じて、重い計算を週末にスケジュールすることができ(EAの 自動最適化など)、このプロセスはタイマーから開始することができます。計算の終了時(または開始時)に、タイマーを正しく無効化することができます。

こんにちは。昨日、同じようなアイデアを得たのですが、それについて質問しながら記事を書く時間がありませんでした。

1.それはこれを行うことが可能ですか? これは、コード、特に開閉trade.Orちょうど彼らの場所と計算-calculations.I.eで週末に見えるかもしれません タイマーでそれが周期的に歴史を巻き戻し、最高のパラメータを決定し、このオンライン刻みは必要ありません、と関数はちょうどサイクルで回転します定義された関数に移動します...

2.どこかの支社で読むことができるのでしょうか?

3.チャンピオンシップに応募した場合、車には搭載されないのでしょうか?これは主催者への質問でしょう。

 
MetaDriver:
次に、Expert Advisor で適切な時間枠ですべてを計算し、OnTester() で結果を表示します。取引する必要はありません。何か問題はありますか?

ありがとうございました。

もう一つ質問があります。もし価格がテイクロスまたはストップロスのどちらにも達していない場合、時間差でポジションを閉じるには どうすればよいのでしょうか?

注文の仕方のライブラリーを読んだのですが...。繋いでみると...プログラムは「そんな手続きはしていない」と悪態をついているが......。

そこで質問ですが、ある時間(例えば1日)後に注文を閉じるには、どのような コードが必要でしょうか?

 

AccountInfoDouble(ACCOUNT_BALANCE) != AccountInfoDouble(ACCOUNT_EQUITY)

このように、取引が開始されているかどうかを確認する必要があるのです。

OrdersTotal ()!=0 は動作しません ))) 非常に興味深い不具合です ))

 
papaklass:
ポジションについては、PosirionTotal()があります。OrdersTotal() は、保留中の注文のみ。

if (PositionTotal()== 1 ) )

同様ノーリアクション

// ノーマルオープン

if ( TimeActivation ( 1 ) )

{

if ( _1_operation == 1 && Buy ( 0.10 ) == 1 ) { Sleep (600000); }.

if ( _1_operation == -1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }.

}

// テイクまたはストップの前にクローズすることはできません

if ( TimeActivation ( 2 ))

{

if ( PositionTotal() == 1 ) /// NOT WORKING))

{

if ( _1_operation == 1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }.

if ( _1_operation == -1 && Buy ( 0.10 ) == 1 ) { Sleep (600000); }.

}

}

 
BaTTLeBLooM:

ありがとうございました。

そこで質問ですが、ある時間(例えば1日)後に注文を閉じるには、およそどのような コードが必要でしょうか?

お願いします。

おおよそこんな感じです:変数で開く手間が省けます。すぐに希望する期間を足す(例:1日=60*60*24)

そして、各ティック(または時間)ごとに、現在時刻が 制御時刻よりも長いかどうかを監視します。 もし長い場合は、それを閉じます // if (TimeCurrent() > MyControlTime) CloseMyPosition();

Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Дата и время / TimeCurrent - Документация по MQL5
 
BaTTLeBLooM:

if ( PositionTotal() == 1 ) )

同様ノーリアクション

// ノーマルオープン

if ( TimeActivation ( 1 ) )

{

if ( _1_operation == 1 && Buy ( 0.10 ) == 1 ) { Sleep (600000); }.

if ( _1_operation == -1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }.

}

// テイクまたはストップの前にクローズすることはできません

if ( TimeActivation ( 2 ))

{

if ( PositionTotal() == 1 ) /// NOT WORKING))

{

if ( _1_operation == 1 && Sell ( 0.10 ) == 1 ) { Sleep (600000); }.

if ( _1_operation == -1 && Buy ( 0.10 ) == 1 ) { Sleep (600000); }.

}

}

実は、ここに書かれていることは明確ではありませんが、PositionTotal()は明らかに関係ないのです。

チェックする前にPrint() を入れて、=1 ?

Print("PositionsTotal=",PositionsTotal());
if ( PositionsTotal() == 1 ) /// НЕ ХРЕНА НЕ РАБОТАЕТ )))
 
tol64:

Konstantin Gruzdev氏は、論文の中で「スパイ」と「エージェント」を使った面白い方法を提案しています。))しかし、彼の「エージェント」であるexSpy Control panel MCMは、私のために働きたくありません。

それでは、記事で紹介されているバリアントについて見ていきたいと思います。今までのところ、スパイの専門家を何人か作っていますが、とてもうまくいっています。

MetaDriver

この技術はテスターでは使えないと思います。

効くんです。

 
MetaDriver:

お願いします。

おおよそこのような方法です。開店の時間を変数に格納する必要があります。すぐに必要な時間間隔を追加する(例:1日=60*60*24)

そして、各ティック(または時間)ごとに、現在時刻が 制御時刻よりも長いかどうかを監視します。 もし長い場合は、それを閉じます // if (TimeCurrent() > MyControlTime) CloseMyPosition();

変数に入れるのも一つの方法ですが、端末・アドバイザーを再起動しても、より確実なクロージングが必要な場合は、メジックを使って注文を識別し、その開始時刻を確認することができます。

//закрывает ордера с заданным меджиком по прошествию определенного периода(в сек)
void closeOrderByTime(int magic,int period) {
        MqlTradeRequest request;
        MqlTradeResult tradeResult;
        MqlTradeCheckResult checkResult;
        ulong ticket = -1;
        int cnt = OrdersTotal();
        for (int i=cnt-1; i>=0; i--) {  
                ticket = OrderGetTicket(i);
                if (OrderGetInteger(ORDER_MAGIC) == magic && ticket>0 && TimeCurrent() > OrderGetInteger(ORDER_TIME_SETUP)+period) {
                        request.action = TRADE_ACTION_REMOVE;
                        request.order = ticket;
                        if(OrderCheck(request,checkResult) ) {
                                OrderSend(request, tradeResult);
                        } else {
                                MessageBox("Ошибка");
                        }
                }
        }
}