inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
Print( "====================================================", TimeCurrent() ) ;
//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовif(!SymbolInfoTick(_Symbol,latest_price))
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
return;
}
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
Print( "====================================================", TimeCurrent() ) ;
//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовif(!SymbolInfoTick(_Symbol,latest_price))
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult); // получите (запросите) результаты исполнения / сделки и распечатайте, будет понятней
}
return;
}
Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это –...
use https://www.mql5.com/ru/docs/dateandtime/timecurrent
第二版関数呼び出し
一般的には、https://www.mql5.com/ru/docs/dateandtime/timetostruct貴重な情報をありがとうございました。
どういう構造で、どういう仕組みになっているかは理解していますが、細かいところまではまだ理解できていません。
私はまだ、その微妙なニュアンスをつかみきれていません。わかりやすい例文で、新しい教材をよりよく学べるようになりました。
mql5で以下の条件のコードの書き方を教えていただけると幸いです
構造体を使った注文の開き方は勉強しました。
if(Hour()==10)
をクリックすると、注文が開始されます。
パターンを書かなくても注文を開けることができる...。条件の書き込みのみ。
また、お世話になります。
は、バーの価格と時間をどのように決定したいかでなければなりません。
というか、チャート上の時間+価格値におけるマウスクリックの座標であり、バーはiBarShift()で定義する必要があります。そう、それが、さらに理解されるのです。ありがとうございました)
貴重な情報をありがとうございました。
どういう構造で、どういう仕組みになっているかは理解しているが、内情はまだ把握できていない
新しい教材は例題で覚えた方がいいんです。わかりやすい例文で、新しい教材をよりよく学べるようになりました。
mql5で以下の条件のコードの書き方を教えていただけると幸いです
構造体を使った注文の開き方は既に勉強済みです。
if(Hour()==10)
をクリックすると、注文が開始されます。
パターンを書かなくても注文を開けることができる...。ただ、状態の記録です。
また、お世話になります。
どうもありがとうございました。すべてが明確に、理解できるようになりました。
皆さんこんにちは!
私はmql4からmql5への移行を試みています。私はテストのために注文を開く簡単なコードを作成しました。テスターでは、EAが注文を開く。Print()という関数をvoid OnTick()関数の先頭に置き、Expert Advisorが1ティック ごとにこの関数に入り、ジャーナルのティックごとに印刷されるようにしました。そして、5回目にエキスパートアドバイザーはPrint()関数を 何も入力せず、自動車 登録ジャーナルに何も印刷 しません。Expert Advisorでは、可視化および最適化は無効です。
4のように、ティックごとにジャーナルにPrint() が出力されるようにコードを変更する方法をご教示ください。
助けてくれる人に感謝します。
以下は私のコードです。
EAの入金額を10万円まで増やしました。その結果、すべてのティックでジャーナルにPrint()が出力されます...。 しかし、1つの取引もオープンしていません。
しかし、私はそれがお得な情報を開き、Print() が印刷さ れるようにする必要があります。
皆さんこんにちは!
私はmql4からmql5への移行を試みています。私はテストのために注文を開く簡単なコードを作成しました。テスターでは、私のEAが注文をオープンしています。Print()という関数をvoid OnTick()関数の先頭に置き、Expert Advisorが1ティック ごとにこの関数に入り、ジャーナルのティックごとに印刷されるようにしていました。そして、5回目にエキスパートアドバイザーはPrint()関数を 何も入力せず、自動車 登録ジャーナルに何も印刷 しません。Expert Advisorでは、可視化および最適化は無効です。
4のように、ティック毎にジャーナルにPrint() が出力されるようにコードを変更する方法をご教示ください。
助けてくれる人に感謝します。
以下は私のコードです。
EAの入金額を10万円まで増やしました。その結果、すべてのティックでジャーナルにPrint()が出力されます...。 しかし、1つの取引もオープンしていません。
しかし、私は、取引が開かれ、Print()が印刷された 必要があります。
ログを見る、印刷されたものを見る、各ステップでそこに情報が入力されている。おそらく、注文の開始時に何か問題があり、EAが動作していないのだと思います。
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
MQL4から端末データに繰り返しアクセスする必要があるかどうかは、すでに説明したとおりですが、次にOrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716
1秒間に数百万回出力が増加するので、1ティックあたり100500回使うことも可能だと思います。
マーケットウォッチウィンドウに表示されるシンボルの数が多ければ多いほど、端末の負荷も大きくなります。
つまり、端末を賢く使えば、何もフリーズすることはありません。マーケットウォッチウィンドウには、使用する10個のシンボルがあります。
同時に開くことのできるチャートの 数は確認していませんが、ヒストリーを1000本までに制限すれば、数十個のチャートウィンドウを問題なく開くことができると思います。
100
ログを見ると、各ステップで記録された情報が印刷されているんです。おそらく、注文を開始する際に何か問題があり、EAが動作していないのでしょう。
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
ご指摘ありがとうございます。
本当にダメなんです。と書かれています。
2020.10.27 06:40:45.311 テスター EURUSD: 履歴データは2018.01.02 00:00から開始 されます。
2020.10.27 06:40:45.312 Core 1 connecting to 127.0.0.1:3000
2020.10.27 06:40:45.312 Core 1 接続し ました。
2020.10.27 06:40:45.320 Core 1 authorized (agent build 2650)
2020.10.27 06:40:45.323 Tester EURUSD,M1 (Alpari-MT5-Demo): expertsGRAAL.ex5 のテスト 2020.09.01 00:00 から 2020.09.03 00:00 まで。
2020.10.27 06:40:45.327 Core 1 共通の同期が完了しま した。
2020.10.27 06:40:45.328 Tester 解析した履歴の品質は100% です。
2020.10.27 06:40:45.348 Core 1 test expertsGRAAL.ex5 on EURUSD,M1 thread finished.
2020.10.27 06:40:45.348 コア1
2020.10.27 06:40:45.348 Core 1 ログイン (ビルド 2650)
2020.10.27 06:40:45.348 Core 1 通貨が USD のアカウント情報が見つ かりました。
2020.10.27 06:40:45.348 Core 1 1482 バイトのテスター・パラメータをロード。
2020.10.27 06:40:45.348 Core 1 1724 バイトの入力パラメータを読み込んだ。
2020.10.27 06:40:45.348 Core 1 利益をpipsで計算、初期預金10000円、レバレッジ1:100。
2020.10.27 06:40:45.348 Core 1 正常に初期化されました。
2020.10.27 06:40:45.348 Core 1 合計731バイトの初期化データを受信 しました。
2020.10.27 06:40:45.348 Core 1 Intel Core i5-6400 @ 2.70GHz、7883MB。
2020.10.27 06:40:45.348 Core 1 EURUSD: 同期されるシンボル
2020.10.27 06:40:45.348 Core 1 EURUSD: シンボルは既に同期、18バイトを受信。
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 2019.01.02 06:00 からキャッシュされた履歴が ある。
2020.10.27 06:40:45.348 Core 1 EURUSD,M1 (Alpari-MT5-Demo): 各ティック生成 中
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: tests of expertsGRAAL.ex5 from 2020.09.01 00:00 to 2020.09.03 00:00 started with inputs:
2020.10.27 06:40:45.348 Core 1 StopLoss=30
2020.10.27 06:40:45.348 Core 1 TakeProfit=100
2020.10.27 06:40:45.348 Core 1 Lot=0.1
2020.10.27 06:40:45.348 Core 1 最終残高 10000.00 pips
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated.テストは0:00:00.019で通過しました。
2020.10.27 06:40:45.348 Core 1 270 Mbのメモリ使用、35 Mbのヒストリーデータ、64 Mbのティックデータを含む。
2020.10.27 06:40:45.348 Core 1 log file "C:\Usersa1960﹑AppData﹑Roaming﹑MetaQuotes﹑Tester36A64B8C79A6163D85E6173B54096685 ◇Agent-127.0.0.1-3000 ◇logsⒸ20201027.log translated translated by YAYOI
2020.10.27 06:40:45.371 Core 1 接続を終了 しました。
1日単位でテストしています。つまり、Expert Advisorは1440個の注文を開く必要があります。問題なのかもしれません。もしかしたら、同時に開く注文の数に制限があるのかもしれませんね。
確認したところ、EAの預かり金が1万あったときに、300件しか注文を開かず、残りをお金に関する何らかの理由で取り逃がしたからかもしれません(仕訳で理解しました)。その後、EAの預かり金を10万円に増やしたところ、それ以上飛ばす権利がなくなりました。そして、注文を受け付けるのを完全に止めてしまった。
しかし、その後、EAの預かり金を再び1万円に減らした。しかし、私のExpert Advisorは相変わらず何も開かず、常に私が上に述べた値を書き込んでいます。
もう1つEAを作りました。そこに同じコードをダウンロードした。10,000のデポジットがあります。私は同じ問題を得た:私は注文を開いていない。
私のEAを正しく動作させる方法をご教示ください。同じメッセージが送信されますが、私の強調された黄色の線は270 mbではなく271 mbとなっています。
私はWindows 10を使用しています。64bit OSと8GB RAMを使用しています。
ありがとうございます。
ご指摘ありがとうございます。
本当にダメなんです。と書かれています。
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated.0:00:00.019にテストが通過しました。
2020.10.27 06:40:45.348 Core 1 270 Mbのメモリ使用、35 Mbのヒストリーデータ、64 Mbのティックデータを含む。
2020.10.27 06:40:45.348 Core 1 log file "C:\Usersa1960﹑AppData﹑Roaming﹑MetaQuotes﹑Tester36A64B8C79A6163D85E6173B54096685 ◇Agent-127.0.0.1-3000 ◇logsⒸ20201027.log written.
2020.10.27 06:40:45.371 Core 1 接続を終了 しました。
1日単位でテストしています。つまり、Expert Advisorは1440個の注文を開く必要があります。問題なのかもしれません。もしかしたら、同時に開く注文の数に制限があるのかもしれませんね。
確認したところ、EAの預かり金が1万あったときに、300件しか注文を開かず、残りをお金に関する何らかの理由で取り逃がしたからかもしれません(仕訳で理解しました)。その後、EAの預かり金を10万円に増やしたところ、それ以上飛ばす権利がなくなりました。そして、注文を受け付けるのを完全に止めてしまった。
どうすれば私のEAを正常に動作させることができるのか、アドバイスをお願いします。
必ず以前のように使えるようにする。
1日に1440件の注文がある場合、Expert Advisorは、分足の開始を確認するか、より簡単には1分足のバーの出現を確認する必要があります。そして、この瞬間に開くのです。あなたはそれを持っていないので、EAはすべてのティックでポジションを開き、それは現在の引用符で私たちのシンボルによると厳しい条件そのものである。この条件が満たされないと、ダニを見逃してしまうことがあります。そしてある時、重大なエラーが発生する。
また、注文執行の 種類(ポジションを作成するための注文) All or nothing.
アドバイスお願いします
新しいティックが入ったときにサーバーの時刻が更新されないのはなぜですか?
EAが起動した瞬間は全て正常に動作しているのですが、その後時間が経過しても現在の分の新しい値が変数に入ってきません。
つまり、変数int M = TimeMinute(TimeCurrent()) で得られる数値によってExpert Advisorが動作するのです。
実はこのコード行はリファレンスにあったもので、うまくいかないのです。
たとえば、12時に起動すると、 サーバーから返された現在の時刻は 変数内の時刻に対応しますが、その後、時計ではすでに15~20分経過しているにもかかわらず、変数は12時のままです