MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1808 1...180118021803180418051806180718081809181018111812181318141815...1953 新しいコメント Alexander Avksentyev 2021.12.10 17:34 #18071 こんにちは。コードを書く勉強をしているのですが、問題があります。テスターのコードは実行され、1つの取引を開き、それだけです。価格は変わらず、すべてが定位置で停止します。 難しくない人、アドバイスお願いします。 if (CountTrades() == 0) { double body = Close[1] - Open[1]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0) { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue)); { Print("Открыта Позиция BUY"); { if(Forder > 0) { TP = NormalizeDouble((Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()),_Digits); Forder = OrderModify(Forder,OrderOpenPrice(),0,TP,0); }Print("Ордер Модифицирован BUY "); }Print("Ошибка Модификации Ордера BUY"); } }Print("Ошибка Открытия Позиции BUY"); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0) { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red)); { Print("Открыта Позиция SELL"); { if(Forder > 0) { TP = NormalizeDouble((Bid-TakeProfit*_Point+OrderSwap()+OrderCommission()),_Digits); Forder = OrderModify(Forder,OrderOpenPrice(),0,TP,0); }Print("Ордер Модифицирован SELL "); }Print("Ошибка Модификации Ордера SELL"); } }Print("Ошибка Открытия Позиции Sell"); //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// } Tretyakov Rostyslav 2021.12.10 18:49 #18072 Alexander Avksentyev #:こんにちは。コードを書く勉強をしているのですが、問題があります。テスターのコードは実行され、1つの取引を開き、それだけです。価格は変わらず、すべてがその場でストップする。気にならない人、アドバイスお願いします。 Ask+TakeProfit*_Point+OrderSwap()+OrderCommission() スワップや手数料を価格に上乗せするのはどうするのですか? Alexander Avksentyev 2021.12.10 19:03 #18073 MakarFX #:スワップや手数料を価格に上乗せするのはどうするのですか? どうすればいいのでしょうか) (((Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()*_Point)) これは問題だと思いますか? Ivan Butko 2021.12.10 19:13 #18074 OnTimer機能のCommentや Print in logをビジュアライゼーション中にテスターで動作させるにはどうしたらいいですか? Tretyakov Rostyslav 2021.12.10 19:22 #18075 Alexander Avksentyev #:どうやって数えたらいいんだろう)それが問題だと思いますか? まず、スワップを開くと、スワップがない。 次に、手数料を1ドルとして、1.32500でポンドに注文を出すとします。 で、(TakeProfit)200*_Pointと(手数料)1$を足すと、2.32700のTakeに なる ...それは何年後でしょうか? Tretyakov Rostyslav 2021.12.10 19:22 #18076 Ivan Butko Commentや print in logを可視化中にテスターで動作させる方法を教えてください。 onTickにonTimerを追加 Ivan Butko 2021.12.10 19:27 #18077 MakarFX #: onTickにonTimerを追加 ありがとうございました。 Alekseu Fedotov 2021.12.10 19:28 #18078 Alexander Avksentyev #:どうやって数えたらいいんだろう)それが問題だと思いますか? いいえ、正しくありません。 OrderModifyでは、その方が正しいです。 そして、独立したブロックとしてより良い。 if (OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits); if(OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } Tretyakov Rostyslav 2021.12.10 19:28 #18079 Alexander Avksentyev #:どうやって数えたらいいんだろう)それが問題だと思いますか?それが問題なのではなく、おかしいと思うのです。テスターのフリーズに関しては、全コードを投稿してくれれば分かると思います。OrderCommission()*_Pointそれもおかしい。 _ポイントは小数点以下であり、いかなる方法でもポイントに変換されません。 Alexander Avksentyev 2021.12.10 20:04 #18080 MakarFX #:それが問題なのではなく、おかしいと思うのです。あとテスターのフリーズに関しては、コードを全部載せて見た方が良いよ。それもおかしい。 _Point は小数点以下であり、いかなる方法でもポイントに変換 されない int Login = 4950287; datetime time = D'2022.01.01 00:00:00'; string name = "AutoP_v.3.0"; datetime time1 = 0; double price, TP, lastlot, minlot; int Forder; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(AccountNumber() != Login) { int close = MessageBox("Неверный номер счёта","Ошибка",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else (AccountNumber() == Login); { int close = MessageBox("Проверка прошла успешно.Экcперт может приступить к работе.","Инициализация",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if (TimeCurrent() > time) { int close = MessageBox("Время работы закончилось!!!","Время работы",MB_OK|MB_ICONSTOP); return(INIT_FAILED); }else(TimeCurrent() < time); { int close = MessageBox("Проверка времени работы прошла успешно.Эксперт может приступить к работе!","Время работы",MB_OK|MB_ICONEXCLAMATION); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// if(Digits == 3 || Digits == 5) { TakeProfit *=10; TrailStart *=10; TrailDist *=10; TrailStep *=10; TrailTakeProfit *=10; Step *=10; Slippage *=10; } return(INIT_SUCCEEDED); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { double body = Close[1] - Open[1]; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Buy if (body > 0) { Forder = (OrderSend(_Symbol,OP_BUY,Lot,Ask,Slippage,0,0,"Коммент",Magic,0,Blue)); { Print("Открыта Позиция BUY"); { if(Forder > 0) if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Ask+TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован BUY "); else Print("Ошибка Модификации Ордера BUY = ",GetLastError()); } } }Print("Ошибка Открытия Позиции BUY"); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //Открытие позиции Sell if (body < 0) { Forder = (OrderSend(_Symbol,OP_SELL,Lot,Bid,Slippage,0,0,"Коммент Sell",Magic,0,Red)); { Print("Открыта Позиция SELL"); if (Forder > 0) if(OrderSelect(Forder, SELECT_BY_TICKET)) { TP = NormalizeDouble((Bid-TakeProfit*_Point),_Digits); if (OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0)) Print("Ордер Модифицирован SELL "); else Print("Ошибка Модификации Ордера SELL = ",GetLastError()); } } }Print("Ошибка Открытия Позиции BUY");} //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// //+------------------------------------------------------------------+ //| Tester function | //+------------------------------------------------------------------+ double OnTester() { //--- double ret=0.0; //--- //--- return(ret); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// int CountTrades() { int count = 0; for(int i = OrdersTotal()-1; i>=0; i++ ) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol() == _Symbol && OrderMagicNumber() == Magic) { count++; } } }return (count); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx// 全部あるんです。ご協力ありがとうございました。 1...180118021803180418051806180718081809181018111812181318141815...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。コードを書く勉強をしているのですが、問題があります。テスターのコードは実行され、1つの取引を開き、それだけです。価格は変わらず、すべてが定位置で停止します。
難しくない人、アドバイスお願いします。
こんにちは。コードを書く勉強をしているのですが、問題があります。テスターのコードは実行され、1つの取引を開き、それだけです。価格は変わらず、すべてがその場でストップする。
気にならない人、アドバイスお願いします。
Ask+TakeProfit*_Point+OrderSwap()+OrderCommission()
スワップや手数料を価格に上乗せするのはどうするのですか?
スワップや手数料を価格に上乗せするのはどうするのですか?
どうすればいいのでしょうか)
これは問題だと思いますか?
どうやって数えたらいいんだろう)
それが問題だと思いますか?
まず、スワップを開くと、スワップがない。
次に、手数料を1ドルとして、1.32500でポンドに注文を出すとします。
で、(TakeProfit)200*_Pointと(手数料)1$を足すと、2.32700のTakeに なる ...それは何年後でしょうか?
onTickにonTimerを追加
ありがとうございました。
どうやって数えたらいいんだろう)
それが問題だと思いますか?
いいえ、正しくありません。
OrderModifyでは、その方が正しいです。
そして、独立したブロックとしてより良い。
どうやって数えたらいいんだろう)
それが問題だと思いますか?
それが問題なのではなく、おかしいと思うのです。テスターのフリーズに関しては、全コードを投稿してくれれば分かると思います。
OrderCommission()*_Point
それもおかしい。
_ポイントは小数点以下であり、いかなる方法でもポイントに変換されません。それが問題なのではなく、おかしいと思うのです。あとテスターのフリーズに関しては、コードを全部載せて見た方が良いよ。
それもおかしい。
_Point は小数点以下であり、いかなる方法でもポイントに変換 されない全部あるんです。ご協力ありがとうございました。