どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 451 1...444445446447448449450451452453454455456457458...1178 新しいコメント Vitek2010v 2014.01.29 16:47 #4501 //+------------------------------------------------------------------+//| 注文の削除と決済、数量によるフィルタリング//---------------------------------------------------------------------#property show_inputs//--------------------------------------------------------------------extern double MinLot = 0.01; //削除/クローズされる最小のロットextern double MaxLot = 0.1; //削除/バイパスされる最大ロット数extern bool Buy = false; //買い注文の方向性を削除/閉じるextern bool Sell = false; //売り注文の方向性を削除/閉じる extern bool pending = true; //保留中の注文を削除する。extern bool market = true; //マーケットポジションをクローズする。extern int slippage = 2; //マーケットポジションのクローズ時の価格のスリッページ//--------------------------------------------------------------------int start(){ ダブルSL,TP。 string txt=StringConcatenate("Script remove or close order, start ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS).TIME_SECONDS); RefreshRates()。 bool error=true とする。 int Error,OT,Ticket,nn; ダブルOOP,OL。 while(真) { for (int j = OrdersTotal()-1; j >= 0; j--) { if (OrderSelect(j, SELECT_BY_POS)) { if ((OrderSymbol() == Symbol())) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; Ticket = OrderTicket(); OOP = OrderOpenPrice()。 if (OT==OP_BUY) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Red)。 if (error) txt = StringConcatenate(txt,"\nClosed BUY Order",Ticket); else txt = StringConcatenate(txt,"\nClosing error ",GetLastError()); } if (OT==OP_SELL) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),スリッページ,Blue)。 if (error) txt = StringConcatenate(txt, "SELL order closed",Ticket;) else txt = StringConcatenate(txt,"\nError ",GetLastError()," close ",Ticket).この場合、"GetLastError() "をクリックします。 } if (OT>1) { error=OrderDelete(Ticket)です。 if (error) txt = StringConcatenate(txt,"\nOrderDeleted ",StrOrdersType(OT)," ",Ticket); else txt = StringConcatenate(txt,"\nError ",GetLastError()," removal ",StrOrdersType(OT)," ",Ticket).この場合、"Error "は "Error "となります。 } if (!エラー) { Error = GetLastError()。 if (Error<2) continue; if (Error==129) { Comment("価格が正しくありません",TimeToStr(TimeCurrent(),TIME_SECONDS)); スリープ(5000)。 RefreshRates()。 を続ける。 } if (Error==146) { j++; if (IsTradeContextBusy())スリープ(2000)。 を続ける。 } Comment("エラー",Error," 注文を閉じる N ",OrderTicket(), ",TimeToStr(TimeCurrent(),TIME_SECONDS)); } } } } int n=0; for (j = 0; j < オーダートータル(); j++) { if (OrderSelect(j, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; n++; } } } if (n==0) break; nn++です。 if (nn>10) {Comment("全取引の決済に失敗しました、まだ",n)があります; break;}。 Sleep(1000)です。 RefreshRates()。 } Comment(txt,"\nScript has finished its work ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); return(0)です。}//--------------------------------------------------------------------文字列 StrOrdersType(int t) { if (t==OP_BUY) return("買い"); if (t==OP_SELL) return("Sell"); if (t==OP_BUYLIMIT) return("BuyLimit")。 if (t==OP_SELLLIMIT) return("SellLimit")。 if (t==OP_BUYSTOP) return("BuyStop")。 if (t==OP_SELLSTOP) return("SellStop")。} //-------------------------------------------------------------------- ロットサイズごとにすべてのペアの未決済注文を閉じるには、スクリプトに何を追加または変更すればよいですか。 Any rookie question, so How can i convert 初心者の方からの質問 MQL4 MT4 MetaTrader Boris 2014.01.29 18:49 #4502 Vitek、SRC ボタンでコード挿入!読めない落書きを掘り起こす必要があるのか! Evgeniy Khaynatskas 2014.01.29 19:13 #4503 pu6ka: はい、Askの価格は表示されませんが、表示されます :) ビジュアライザーでは、一時停止を押した後、チャートのプロパティで「アスクラインを表示」を選択し、テストを続けることができます。MT4の価格チャートは、通常Bidでプロットされます。 テストの質は何によって決まり、どうすれば最大限に高めることができるのか。 削除済み 2014.01.29 19:25 #4504 Zver4991: そして、テストの質は何に依存し、どうすれば最大値に向かって向上させることができるのでしょうか。 正直なところ、よくわかりません。まだ必要ない、ホームページで調べよう 削除済み 2014.01.30 05:54 #4505 プロフェッショナルの皆様へ。 サイクルを使用せずに、保留中の注文の グリッドを開く方法を教えていただけませんか? もし難しければ、少なくともそのようなコードの大まかな例を示してください。 グリッドの連続した順序ごとにステップとロットサイズを変更する可能性を持つ。 Alexey Subbotin 2014.01.30 10:08 #4506 Forexman77: 行を入れました。int Ticketの代わりに、エラーが出る。 '=' - 左角括弧、配列に期待される('=' - 左角括弧、配列に期待される) '>' - 左角括弧は配列を表すものと思われます ('=' - 左角括弧は配列を表すものと思われます) '>' - 予期しないトークン('>' - Unexpected token) ')'- 期待される課題('' - 期待される課題) 'continue' - 'break' または 'continue' は、いくつかのループ内でのみ使用されます ) などなど。 つまり、Ticketは旧バージョンのどこかでまだ使われているのです。コードをきれいにする必要がある... Alexey Subbotin 2014.01.30 10:12 #4507 1mql: プロフェッショナルの皆様へ。 ループを使用せずに、保留中の注文のグリッドを開く方法を教えていただけませんか? もし難しければ、少なくともそのようなコードの大まかな例を示してください。 グリッドで後続の注文のステップとロットサイズをそれぞれ変更できるようにした場合。 はい、実はループの中と同じなんです...。...ただし、ループはなし。ループで開く方法を示し、ループを使いたくない理由は、何を目指しているのかが不明 だからです。 Vitek2010v 2014.01.30 10:56 #4508 borilunad: Vitekさん、SRC ボタンでコードを貼り付けてくださいね。誰が読めない走り書きを掘り起こす必要があるのでしょうか! //+------------------------------------------------------------------+ //| удаления и/или закрытие ордера, с фильтрацией его по объему | //--------------------------------------------------------------------- #property show_inputs //-------------------------------------------------------------------- extern double MinLot = 0.01; //минимальный лот который удаляем/закываем extern double MaxLot = 0.1; //максимальный лот который удаляем/закываем extern bool Buy = false; //удалять/закрывать направление buy ордеров extern bool Sell = false; //удалять/закрывать направление sell ордеров extern bool pending = true; //удалить отложенные ордера extern bool market = true ; //закрыть рыночные позиции extern int slippage = 2; //проскальзывание цены при закрытии рыночных позиций //-------------------------------------------------------------------- int start() { double SL,TP; string txt=StringConcatenate("Скрипт удаления или закрытие ордера, старт ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); RefreshRates(); bool error=true; int Error,OT,Ticket,nn; double OOP,OL; while(true) { for (int j = OrdersTotal()-1; j >= 0; j--) { if (OrderSelect(j, SELECT_BY_POS)) { if ((OrderSymbol() == Symbol())) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; Ticket = OrderTicket(); OOP = OrderOpenPrice(); if (OT==OP_BUY) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Bid,Digits),slippage,Red); if (error) txt = StringConcatenate(txt,"\nЗакрыт ордер BUY ",Ticket); else txt = StringConcatenate(txt,"\nОшибка закрытия ",GetLastError()); } if (OT==OP_SELL) { error=OrderClose(Ticket,OrderLots(),NormalizeDouble(Ask,Digits),slippage,Blue); if (error) txt = StringConcatenate(txt,"\nЗакрыт ордер SELL ",Ticket); else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," закрытия ",Ticket); } if (OT>1) { error=OrderDelete(Ticket); if (error) txt = StringConcatenate(txt,"\nУдален ордер ",StrOrdersType(OT)," ",Ticket); else txt = StringConcatenate(txt,"\nОшибка ",GetLastError()," удаления ",StrOrdersType(OT)," ",Ticket); } if (!error) { Error = GetLastError(); if (Error<2) continue; if (Error==129) { Comment("Неправильная цена ",TimeToStr(TimeCurrent(),TIME_SECONDS)); Sleep(5000); RefreshRates(); continue; } if (Error==146) { j++; if (IsTradeContextBusy()) Sleep(2000); continue; } Comment("Ошибка ",Error," закрытия ордера N ",OrderTicket(), " ",TimeToStr(TimeCurrent(),TIME_SECONDS)); } } } } int n=0; for (j = 0; j < OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) { OL = OrderLots(); if (OL<MinLot || OL>MaxLot) continue; OT = OrderType(); if (!market && OT<2) continue; if (!pending && OT>1) continue; n++; } } } if (n==0) break; nn++; if (nn>10) {Comment("Не удалось закрыть все сделки, осталось еще ",n);break;} Sleep(1000); RefreshRates(); } Comment(txt,"\nСкрипт закончил свою работу ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); return(0); } //-------------------------------------------------------------------- string StrOrdersType(int t) { if (t==OP_BUY) return("Buy"); if (t==OP_SELL) return("Sell"); if (t==OP_BUYLIMIT) return("BuyLimit"); if (t==OP_SELLLIMIT) return("SellLimit"); if (t==OP_BUYSTOP) return("BuyStop"); if (t==OP_SELLSTOP) return("SellStop"); } //-------------------------------------------------------------------- すべてのペアの未決済注文をロットサイズごとに決済するためには、何を追加または変更すればよいですか。 返書|消す|エディット 削除済み 2014.01.30 19:12 #4509 Vitek2010: すべてのペアの未決済注文をロットサイズごとに決済するためには、何を追加または変更すればよいですか。 返書|消す|エディット 最後のエクスターン以下。 extern int slippage = 2; // 成行決済時の価格スリッページ をもう1つ入れる。 extern bool total_symb = true; //すべてのペアにおいて と各ラインに表示されます。 if((OrderSymbol() ==Symbol())) и if(OrderSymbol() ==Symbol()) これに置き換えます。 if(OrderSymbol() ==Symbol() || total_symb) 理論的にはうまくいくはずなので、確認してみてください。 削除済み 2014.01.31 06:08 #4510 質問が発生した、エキスパートアドバイザーや スクリプトを記述することが 可能である、その日に例えば2%の損失を達成するために、すべてのトランザクションを閉じますか? 1...444445446447448449450451452453454455456457458...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
//--------------------------------------------------------------------
ロットサイズごとにすべてのペアの未決済注文を閉じるには、スクリプトに何を追加または変更すればよいですか。
はい、Askの価格は表示されませんが、表示されます :)
ビジュアライザーでは、一時停止を押した後、チャートのプロパティで「アスクラインを表示」を選択し、テストを続けることができます。MT4の価格チャートは、通常Bidでプロットされます。
テストの質は何によって決まり、どうすれば最大限に高めることができるのか。
そして、テストの質は何に依存し、どうすれば最大値に向かって向上させることができるのでしょうか。
プロフェッショナルの皆様へ。
サイクルを使用せずに、保留中の注文の グリッドを開く方法を教えていただけませんか?
もし難しければ、少なくともそのようなコードの大まかな例を示してください。
グリッドの連続した順序ごとにステップとロットサイズを変更する可能性を持つ。
行を入れました。
int Ticketの代わりに、エラーが出る。
'=' - 左角括弧、配列に期待される('=' - 左角括弧、配列に期待される)
'>' - 左角括弧は配列を表すものと思われます ('=' - 左角括弧は配列を表すものと思われます)
'>' - 予期しないトークン('>' - Unexpected token)
')'- 期待される課題('' - 期待される課題)
'continue' - 'break' または 'continue' は、いくつかのループ内でのみ使用されます )
などなど。
つまり、Ticketは旧バージョンのどこかでまだ使われているのです。コードをきれいにする必要がある...
プロフェッショナルの皆様へ。
ループを使用せずに、保留中の注文のグリッドを開く方法を教えていただけませんか?
もし難しければ、少なくともそのようなコードの大まかな例を示してください。
グリッドで後続の注文のステップとロットサイズをそれぞれ変更できるようにした場合。
Vitekさん、SRC ボタンでコードを貼り付けてくださいね。誰が読めない走り書きを掘り起こす必要があるのでしょうか!
すべてのペアの未決済注文をロットサイズごとに決済するためには、何を追加または変更すればよいですか。
すべてのペアの未決済注文をロットサイズごとに決済するためには、何を追加または変更すればよいですか。
最後のエクスターン以下。
extern int slippage = 2; // 成行決済時の価格スリッページ
をもう1つ入れる。
extern bool total_symb = true; //すべてのペアにおいて
と各ラインに表示されます。
if((OrderSymbol() ==Symbol()))
и
if(OrderSymbol() ==Symbol())
これに置き換えます。
if(OrderSymbol() ==Symbol() || total_symb)
理論的にはうまくいくはずなので、確認してみてください。