ライブラリ: MT4Orders - ページ 26 1...192021222324252627282930313233...95 新しいコメント fxsaber 2018.11.13 13:27 #251 ilvic:mt4バリアントの例を教えてください。https://www.mql5.com/ja/code/7712あなたがSpreaderで行ったことと似ています。残念ながら、MQL4_To_MQL5.mqhは変換とインジケータのために作成されたものではありません。しかし、それらはコードに存在します //インジケーター double fast1=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,1); double fast2=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,2); double slow1=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,1); double slow2=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,2); 私はそれを追加しません。おそらく誰かが同意するでしょう。このトピックに関する記事がありました。 ilvic 2018.11.16 18:02 #252 fxsaber mt5ではmt4に比べて動作がおかしい。取引を開いてすぐに閉じてしまいます。 何が問題なのでしょうか? #ifdef __MQL5__ double MarketInfo( const string Symb, const ENUM_SYMBOL_INFO_DOUBLE Property ) { return(SymbolInfoDouble(Symb, Property)); } int MarketInfo( const string Symb, const ENUM_SYMBOL_INFO_INTEGER Property ) { return((int)SymbolInfoInteger(Symb, Property)); } #define StrToInteger StringToInteger #define StrToDouble StringToDouble #define MODE_MINLOT SYMBOL_VOLUME_MIN #define MODE_POINT SYMBOL_POINT #define MODE_BID SYMBOL_BID #define MODE_ASK SYMBOL_ASK void OnInit( void ) { init(); } #include <MT4Orders.mqh> #endif // __MQL5__ #include "simple_copier.mq4" ファイル: simple_copier.mq4 16 kb fxsaber 2018.11.16 23:23 #253 ilvic:エフエックスセイバーmt5ではmt4に比べて動作がおかしい。取引を開いてすぐに閉じる。何が問題なのでしょうか?早速コードを見てみました。MT4でこのような条件が書かれているのはおかしい。 if(!OrderSend(symbol_,type_,LotNormalize(lot_),price_,slip,0,0,"C4F"+IntegerToString(ticket_))) Print("Error: ",GetLastError()," during setting the pending order.");絶対にPrintにならない。そして、このコードは確かにHDDキラーだ。 クロスプラットフォーム用にいじってみた。 ファイル: simple_copier.mq4 9 kb ilvic 2018.11.18 23:21 #254 fxsaber 助けてくれてありがとう。しかし、問題は同じです。 注文を出すとすぐに閉じてしまいます。そして、1秒ごとにグルグル回り、止まりません。 mt4ではこのような問題はありません。 fxsaber 2018.11.18 23:34 #255 ilvic:助けてくれてありがとう。しかし、問題は同じだ。注文を出すとすぐに閉じてしまいます。そして、1秒ごとにぐるぐると、止まることなく。mt4にはそのような問題はありません。残念ながら、私はあなたの問題を理解する機会がありません。 fxsaber 2018.11.26 14:25 #256 // 変更リスト: // 26.11.2018 // 修正: MT4のマジックポジションとクローズポジションコメント:オープニングトレードの対応するフィールドは、クローズトレードのフィールドよりも優先順位が高い。 // 修正: MT4-OrdersTotal および MT4-OrderSelect の計算中に MT5-OrdersTotal および MT5-PositionsTotal が稀に変更された場合、その変更が考慮されるようになりました。 //修正: ポジションをオープンしたが、MT5によって削除される時間がなかった注文は、ライブラリによって考慮されなくなりました。ハイライトこれは #include <MT4Orders.mqh> #include <Debug.mqh> //https://c.mql5.com/3/173/Debug.mqh #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0); int Total = _P(OrdersTotal()); while (!IsStopped()) { const int NewTotal = OrdersTotal(); if (Total != NewTotal) { _P(NewTotal); // if (NewTotal < Total) // Alert("https://www.mql5.com/ru/forum/290673#comment_9493241"); Total = NewTotal; } } } 以前はヘッジ口座で 2018.11.26 15:27:46.513 void OnStart(), Line = 10: OrdersTotal() = 1 2018.11.26 15:27:56.128 void OnStart(), Line = 18: NewTotal = 2 2018.11.26 15:27:56.128 void OnStart(), Line = 18: NewTotal = 1 今はこれだけです。 2018.11.26 15:30:29.224 void OnStart(), Line = 10: OrdersTotal() = 1 ネッティング口座の場合、すべてのケースでMT5の原因(約定した注文が削除されない)をまだ克服できていない。つまり、ライブラリは、すべてのケースでMT5-プラットフォームの欠陥を回避する方法を知らない(実際には、そうすべきではない)。 fxsaber 2018.11.26 15:57 #257 取引、自動取引システム、取引戦略のテストに関するフォーラムライブラリMT4Ordersfxsaber, 2017.04.20 06:20 最新バージョンは常にこちら です。更新しました。 fxsaber 2018.11.28 06:29 #258 fxsaber:ライブラリは、すべてのケースでMT5プラットフォーム自体の欠陥を回避することはできません(実際、できないはずです)。例えば、この ポジションを建てる 成行注文が発注され、OrdersTotalが1つ増えました。 約定してOrdersTotalは1つ減りましたが、PositionsTotalは1つも増えませんでした。つまり、ポジションはあるが、ターミナルはそれを知らない。たとえば、ポジションも注文もありません - PositionsTotal = 0、OrdersTotal = 0。 成行注文を発注します。この場合、PositionsTotal = 0、OrdersTotal = 1 です。 成行注文が約定 - OrdersTotal = 0。しかし、PositionsTotal = 0で ある!このような状況に遭遇するのは大変な労力を要する。それに気づくのはさらに難しい。しかし、MT5 はこのようなトリックを作成します。 MT4Ordersはこのようなことをできるだけ避けようとしていますが、常に可能というわけではありません。TSの作者が純粋なMQL5またはSBでプラットフォームのそのような欠陥を考慮しようとしているかどうか、我々は推測することしかできません。可能性は低い。 ディスカッション プロフィット・ジェネレーターEA 気配値表示 - 取引操作 fxsaber 2018.12.05 19:43 #259 // ビジュアライザーに取引注文を手動で送信する方法のデモンストレーション。 #include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) bool IsModify() { static long PrevTime = 0; const long NewTime = FileGetInteger(__FILE__, FILE_MODIFY_DATE); const bool Res = (PrevTime != NewTime); if (Res) PrevTime = NewTime; return(Res); } bool CreateFile() { uchar Bytes[]; return(FileSave(__FILE__, Bytes) && IsModify()); } string GetCommand() { uchar Bytes[]; FileLoad(__FILE__, Bytes); return(CharArrayToString(Bytes)); } bool OrdersScan( const int Type ) { for (int i = ::OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type)) return(true); return(false); } bool SendCommand( const string Command, const double Lot = 1, const int Offset = 100 ) { bool Res = false; if (Command == "open buy") Res = (OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0) > 0); else if (Command == "open sell") Res = (OrderSend(_Symbol, OP_SELL, Lot, Bid, 0, 0, 0) > 0); else if (Command == "open buylimit") Res = (OrderSend(_Symbol, OP_BUYLIMIT, Lot, Ask - Offset * _Point, 0, 0, 0) > 0); else if (Command == "open selllimit") Res = (OrderSend(_Symbol, OP_SELLLIMIT, Lot, Bid + Offset * _Point, 0, 0, 0) > 0); else if (Command == "close buy") Res = OrdersScan(OP_BUY) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close sell") Res = OrdersScan(OP_SELL) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close buylimit") Res = OrdersScan(OP_BUYLIMIT) && OrderDelete(OrderTicket()); else if (Command == "close selllimit") Res = OrdersScan(OP_SELLLIMIT) && OrderDelete(OrderTicket()); return(Res); } bool TesterManual() { static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE) && CreateFile(); return(IsVisual && IsModify() && SendCommand(GetCommand())); } void OnTick() { TesterManual(); } fxsaber 2018.12.06 09:04 #260 Форум потрейдингу, автоматическим торговым системам и тестированию торговых стратегий Библиотеки:MT4Orders fxsaber, 2018.12.05 19:43 // ビジュアライザーに取引注文を手動で送信する方法のデモ。 #include <MT4Orders.mqh> //https://www.mql5.com/ru/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) bool IsModify() { static long PrevTime = 0; const long NewTime = FileGetInteger(__FILE__, FILE_MODIFY_DATE); const bool Res = (PrevTime != NewTime); if (Res) PrevTime = NewTime; return(Res); } bool CreateFile() { uchar Bytes[]; return(FileSave(__FILE__, Bytes) && IsModify()); } string GetCommand() { uchar Bytes[]; FileLoad(__FILE__, Bytes); return(CharArrayToString(Bytes)); } bool OrdersScan( const int Type ) { for (int i = ::OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type)) return(true); return(false); } bool SendCommand( const string Command, const double Lot = 1, const int Offset = 100 ) { bool Res = false; if (Command == "open buy") Res = (OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0) > 0); else if (Command == "open sell") Res = (OrderSend(_Symbol, OP_SELL, Lot, Bid, 0, 0, 0) > 0); else if (Command == "open buylimit") Res = (OrderSend(_Symbol, OP_BUYLIMIT, Lot, Ask - Offset * _Point, 0, 0, 0) > 0); else if (Command == "open selllimit") Res = (OrderSend(_Symbol, OP_SELLLIMIT, Lot, Bid + Offset * _Point, 0, 0, 0) > 0); else if (Command == "close buy") Res = OrdersScan(OP_BUY) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close sell") Res = OrdersScan(OP_SELL) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close buylimit") Res = OrdersScan(OP_BUYLIMIT) && OrderDelete(OrderTicket()); else if (Command == "close selllimit") Res = OrdersScan(OP_SELLLIMIT) && OrderDelete(OrderTicket()); return(Res); } bool TesterManual() { static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE) && CreateFile(); return(IsVisual && IsModify() && SendCommand(GetCommand())); } void OnTick() { TesterManual(); } 1...192021222324252627282930313233...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
mt4バリアントの例を教えてください。
https://www.mql5.com/ja/code/7712
あなたがSpreaderで行ったことと似ています。
残念ながら、MQL4_To_MQL5.mqhは変換とインジケータのために作成されたものではありません。しかし、それらはコードに存在します
私はそれを追加しません。おそらく誰かが同意するでしょう。このトピックに関する記事がありました。
fxsaber
mt5ではmt4に比べて動作がおかしい。取引を開いてすぐに閉じてしまいます。
何が問題なのでしょうか?
エフエックスセイバー
mt5ではmt4に比べて動作がおかしい。取引を開いてすぐに閉じる。
何が問題なのでしょうか?
早速コードを見てみました。MT4でこのような条件が書かれているのはおかしい。
絶対にPrintにならない。そして、このコードは確かにHDDキラーだ。
クロスプラットフォーム用にいじってみた。
fxsaber
助けてくれてありがとう。しかし、問題は同じです。
注文を出すとすぐに閉じてしまいます。そして、1秒ごとにグルグル回り、止まりません。
mt4ではこのような問題はありません。
助けてくれてありがとう。しかし、問題は同じだ。
注文を出すとすぐに閉じてしまいます。そして、1秒ごとにぐるぐると、止まることなく。
mt4にはそのような問題はありません。
残念ながら、私はあなたの問題を理解する機会がありません。
ハイライトこれは
以前はヘッジ口座で
今はこれだけです。
ネッティング口座の場合、すべてのケースでMT5の原因(約定した注文が削除されない)をまだ克服できていない。つまり、ライブラリは、すべてのケースでMT5-プラットフォームの欠陥を回避する方法を知らない(実際には、そうすべきではない)。
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリMT4Orders
fxsaber, 2017.04.20 06:20
最新バージョンは常にこちら です。更新しました。
例えば、この
ポジションを建てる 成行注文が発注され、OrdersTotalが1つ増えました。
たとえば、ポジションも注文もありません - PositionsTotal = 0、OrdersTotal = 0。
成行注文を発注します。この場合、PositionsTotal = 0、OrdersTotal = 1 です。
成行注文が約定 - OrdersTotal = 0。しかし、PositionsTotal = 0で ある!
このような状況に遭遇するのは大変な労力を要する。それに気づくのはさらに難しい。しかし、MT5 はこのようなトリックを作成します。
MT4Ordersはこのようなことをできるだけ避けようとしていますが、常に可能というわけではありません。TSの作者が純粋なMQL5またはSBでプラットフォームのそのような欠陥を考慮しようとしているかどうか、我々は推測することしかできません。可能性は低い。
Форум потрейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки:MT4Orders
fxsaber, 2018.12.05 19:43