注文を部分決済するときに、アラートメッセージ「OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties」がアラートウィンドウに表示されます。
Константы, перечисления и структуры / Состояние окружения / Информация о запущенной MQL5-программе - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
MQLのヘルプは他の言語と同じ
で、少なくとも簡単なコードを書く基本的な経験があることを前提にしています。
だから、「//プレースホルダ」という言葉があるのですが、ほとんどの人はテストして確認することもないでしょう。
ushortfill_symbol='filler'// 充填剤
そんな感じです。
こことこういう場合は、このフィールドを省いていいということでしょうか。
のように
(使い道が正しいという意味で)
であり、第2パラメータは省略可能である。
いいえ、そうではありません。
デフォルト値 "というものがあります。
しかし、「 デフォルト値」を使うのは簡単です。関数の説明のヘルプに符号= , があれば、これがデフォルト値で、この場所に自分で何も書かなければ、コンパイラは ヘルプに書かれている値を使うことになります。
イゴール・マカヌ
ありがとうございます、いろいろとクリアになりました。最初の知識がなければ、すべてを行うことは難しい
現在のシンボルの日足チャートの終値から計算される、期間14、シフト0の単純移動平均 です。最初のバーの値を取ります(ゼロは現在の日)。
移動平均の始値と終値の間の価格を0シフトで素早く取得する方法はないでしょうか?それとも厄介なことに、この関数には既成の変数がないのです。
皆さん、ごきげんよう。
注文を部分決済するときに、アラートメッセージ「OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties」がアラートウィンドウに表示されます。
しかし、実際には正しい注文部分が決済されており、EAは注文の開始と決済の両方を正しく実行しています。ドキュメントにもフォーラムにも、そのようなエラーは見つかりませんでした。エラーの翻訳では「EAは取引を許可されて いません」となっていますが、実際にはそうではなく、EAが取引していることが確認できます。
もしかしたら、誰かがそのような問題に直面したことがあるのでしょうか?
パーシャルクローズ用メソッドコード
//Закрытие ордера на продажу //NumberOrder = тикет ордера, 0 - закрытие всех ордеров //ValueClose = объем закрытия ордера bool CloseOrderSell(int NumberOrder, double ValueClose) { if (NumberOrder == 0) { for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL) { if(OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clrMaroon) == false) { Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket()); return false; } else { if (EnableMgs == true) Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота"); return true; } } } } else { if (OrderSelect(NumberOrder, SELECT_BY_TICKET) == true) { ValueClose = NormalizeDouble(ValueClose * OrderLots(), 2); if(OrderClose(OrderTicket(), ValueClose, Ask, Slippage, clrMaroon) == false) { Print("Ошибка #" + (string)GetLastError() + " закрытия ордера на продажу #" + (string)OrderTicket()); return false; } else { if (EnableMgs == true) Print("Ордер на продажу #"+ (string)OrderTicket() +" закрыт на " + (string)ValueClose + " лота"); return true; } } else Print("Ошибка #" + (string)GetLastError() + " выбора ордера на продажу #" + (string)NumberOrder + " при закрытии ордера"); } return false; }スライドで0シフトしてオープニングとクローズの間の真ん中の価格を素早く取得する方法はないでしょうか、現在のバーのことですね?それとも厄介なことに、この関数には既成の変数がないのです。
フクロウ用かインジケーター用か?
両者は足が違うので、別のスライドが必要です)
皆さん、ごきげんよう。
注文を部分決済するときに、アラートウインドウに「OrderClose (28800839, 0.01) error (method: CloseOrderPartial) - trade is not allowed in the expert properties」と表示されることがある。
問題は手法ではなく、決算の条件にあると思います。
ログには何と書いてあるのですか?スクリーンショットを撮れますか?
フクロウと七面鳥は足が違うので、滑りが違います。)
ノーマルスムージング(指数平滑化加重平均やその他もある)。私は、単純な、多分平滑化された移動平均が 必要で、それは愚かにも、オープニングとクローズの間の中央を通過します。そんなものはない、やるしかない、と悟った。私みたいなアホがやってきて、こんな単純なものを非常に複雑な状況で使うとは誰も思わないだろうが、こんな複雑な変数(Simle...)を作ることを思いついたのである。
...何を計算しているのかわからず、ただ価格を描き直している人。大口投資家が平均化(200,30,21,14,7など)を気にしているかどうかもわからない。なかったら、後でやります。
問題は手法ではなく、決算の条件にあると思います。
ログブックには何と書いてある?スクリーンショットをいただけますか?
こんにちは。
ありがとうございました。確かに、私は気づいていませんでしたが、警告が出るのは私のEAではなく、同じペアで並行して動作している別のEAです。不思議なのは、2つ目のEAの警告が、並行して作業しているときだけ出ていることです。
普通に平滑化したもの(指数平滑化加重平均とかもある)。私は愚かなことに、オープニングとクロージングの間の中央を通過する単純な平滑化された移動平均が 必要です。
ということで、自分で足し算と割り算をして、(MA1+MA2+MA3)÷3=平均MA。
バッファでカウントする場合は、iMAOnArray