どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 75 1...686970717273747576777879808182...1178 新しいコメント Victor Nikolaev 2013.08.16 00:12 #741 MisterD: また、次のコードのどこに間違いがあるか教えてください。 deinit "の瞬間にループを呼び出す。 最後の注文以外は削除されます。 この行が一番エラーになりやすいと思います >>for (int i=1; i<=OrdersTotal(); i++) << しかし、論理的にはすべて正しいように思えるのですが......何か見落としているのでしょうか? ありがとうございました。 ループを逆から行う //------------------------------------------------------------------------------------------- for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS)==true) { int Type=OrderType(); if (OrderSymbol()!= Symbol() || Type <2)continue; int Ticket=OrderTicket(); bool Modify =OrderDelete(Ticket); if (Modify == true) Alert ("Ордер Удалён");continue; if (Modify != true) Alert ("Удаление ордера не удалась"); } } //------------------------------------------------------------------------------------------- Mikhail Kozhemyako 2013.08.16 03:31 #742 MisterD: また、次のコードのどこに間違いがあるか教えてください。 deinit "の瞬間にループを呼び出す。 最後の注文以外は削除されます。 この行が一番エラーになりやすいと思います >>for (int i=1; i<=OrdersTotal(); i++) << しかし、論理的にはすべて正しいように思えるのですが......何か見落としているのでしょうか? ありがとうございました。 //------------------------------------------------------------------------------------------- for (int i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { int Type=OrderType()。 if (OrderSymbol()!= Symbol() || Type <2)continue; int Ticket=OrderTicket(); bool Modify =OrderDelete(Ticket)。 if (Modify == true) Alert ("Order Deleted"); continue; if (Modify != true) Alert ("Order deleted failed"); を続ける。 } } //------------------------------------------------------------------------------------------- こんな風に試してみてください。 for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,...................... askyra_ya.ru 2013.08.16 06:11 #743 こんにちは。少し手助けが必要です。利益の面で最も太いロットの1つを閉じる機能があります。 ループさせる必要がある この機能の使い方を教えてください。例えば、私の口座の資本が5ピップス以上であれば、この機能は機能するはずです。 void ClosePosWithMaxProfitInCurrency(string sy="", int op=-1, int mn=-1) { double pr=0; int i, k=OrdersTotal(), np=-1; if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (mn<0 || OrderMagicNumber()==mn) { if (pr<OrderProfit()+OrderSwap()) { pr=OrderProfit()+OrderSwap(); np=i; } } } } } if (np>=0) { if (OrderSelect(np, SELECT_BY_POS, MODE_TRADES)) { ClosePosBySelect(); } } } TarasBY 2013.08.16 07:49 #744 sannin:こんにちは。少し手助けが必要です。利益の面で最も太いロットの1つを閉じる機能があります。ループさせる必要がある 例えば、私の口座の資本が5pips以上であれば、この機能は機能するはずです。例えば、口座の自己資本が5pips(4文字分)より大きい場合、実際の市場では、注文数が 3~4より多い場合、簡単にマイナスになります(削除の結果によるものです)。:))) P.S. 私の見るところ、あなたは既製のコードを必要とし、そのような問題を解くためのアルゴリズムはあなたにとって無用の長物です askyra_ya.ru 2013.08.16 07:53 #745 TarasBY: 5 pips (for 4 signs) - 実際の市場では、注文の数が3-4より大きい場合、(除去の結果によって)マイナスに回すことは容易である。:))) 私は一人...最近ゴールドに注目しているのですが...思ったより反応が早いです 私はまだこのような機能を扱ったことがありません・・・だからサポートをお願いしているのです bistreevseh 2013.08.16 09:13 #746 こんにちは、私はエキスパートアドバイザーの開発に 問題がある、それはインジケータで閉じるために規定された条件が、注文を閉じない、それは事前に感謝し、何を説明してください ファイル: tradingexper1111t.mq4 14 kb TarasBY 2013.08.16 09:48 #747 sannin: さて、私ですが...最近ゴールドに注目しているのですが...思ったよりスピードがありません このフォームの機能をまだ使いこなせていないので・・・以下、サポートのお願いです。 まず、商品の集合ポジションのBUラインを計算します(pips単位で採算が取れるようになったら、注文を決済する条件を決めるために使用します)。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ //| Определение Уровня БезУбытка по символу | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ double fGet_BreakEven (string fs_Symbol, // Symbol double fd_DeltaLots, // разность объемов ордеров Buy и Sell double fd_Profit) // текущий профит по открытым ордера { if (fd_DeltaLots == 0.) return (0.); double ld_BU = 0., ld_tickvalue = MarketInfo (fs_Symbol, MODE_TICKVALUE); // цена одного пункта //---- //---- Уровень общего безубытка для открытых ордеров if (fd_DeltaLots > 0.) ld_BU = MarketInfo (fs_Symbol, MODE_BID) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT); else if (fd_DeltaLots < 0.) ld_BU = MarketInfo (fs_Symbol, MODE_ASK) - (fd_Profit / (ld_tickvalue * fd_DeltaLots)) * MarketInfo (fs_Symbol, MODE_POINT); //---- return (ld_BU); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ そして、現在の価格とブレイクイーブンラインの差を計算し、「差」が満足できるものであれば、注文を削除する手続きに進みます。まず、最も利益率の高い/損失の大きい注文のTicketを見つけることです。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ // Получаем Тикет самого прибыльного/убыточного ордера | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int fGet_TicketWithControlProfit (string fs_Symbol = "", // Инструмент int fi_Magic = -1, // Magic int fi_Type = -1, // OrderType int fi_TypeProfit = 0) // Профитность ордера среди остальных ордеров: // >= 0 - с самым большим профитом; // < 0 - самый убыточный { double ld_Profit = 0., ld_curProfit; int li_Total = OrdersTotal(), li_Ticket = -1; //---- if (fs_Symbol == "") fs_Symbol = Symbol(); if (fi_TypeProfit < 0) ld_Profit = 10000000000.; for (int i = li_Total - 1; i >= 0; i--) { if (!OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != fs_Symbol) continue; if (fi_Magic > -1) if (OrderMagicNumber() != fi_Magic) continue; if (fi_Type > -1) if (OrderType() != fi_Type) continue; if (fi_Type > 1) continue; ld_curProfit = OrderProfit() + OrderSwap() + OrderCommission(); if (fi_TypeProfit >= 0) {if (ld_Profit <= ld_curProfit) continue;} else if (ld_Profit >= ld_curProfit) continue; ld_Profit = ld_curProfit; li_Ticket = OrderTicket(); } //---- return (li_Ticket); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ 削除はどちらか一方でも可能です。削除させてください。 //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ //| Автор : TarasBY, taras_bulba@tut.by | //+-----------------------------------------------------------------------------------+ //| Функция закрытия "своих" ордеров по признаку | //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ int fClose_AllOrdersByProfit (string fs_Symbol = "", // Инструмент int fi_Magic = -1, // Magic int fi_Type = -1, // OrderType int fi_TypeProfit = 0) // Направление закрытия ордеро по профитности: // >= 0 - начиная от самого большого профита; // < 0 - начиная от самого маленького профита; { int li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit), li_cnt = 0; //---- while (li_Ticket > 0) { //---- Здесь вставите свою процедуру закрытия //---- что-то типа: //ClosePosByTicket (li_Ticket); li_Ticket = fGet_TicketWithControlProfit (fs_Symbol, fi_Magic, fi_Type, fi_TypeProfit); li_cnt++; } //---- return (li_cnt); } //IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+ さらに正しいユニットを組み立てるのは、それほど難しいことではありません。それをやるか、仕事に 行くしかないでしょう......。:) elllfix 2013.08.16 11:05 #748 変数に価格値を代入したい。 a=(NormalizeDouble(OrderOpenPrice(),5)); しかし、なぜか1.3360と4桁の値で描画される 間違いを教えてください。 Mikhail Kozhemyako 2013.08.16 11:08 #749 lottamer: 変数に価格値を代入したい。 しかし、なぜか1.3360と4桁の値で描画される エラーを教えて ください。 もしかしてDCは4桁?または、DoubleToStr(YourPrice,5)を使用せずに価格を出力する。 elllfix 2013.08.16 11:12 #750 Sepulca: もしかしてDCは4桁?または、DoubleToStr(YourPrice,5)を使用せずに価格を表示する。 DCは5桁... WITHOUT DoubleToStr(YourPrice,5) とはどういう意味ですか? DoubleToStr(YourPrice,5) がどこにもないのですが。 1...686970717273747576777879808182...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
また、次のコードのどこに間違いがあるか教えてください。
deinit "の瞬間にループを呼び出す。
最後の注文以外は削除されます。
この行が一番エラーになりやすいと思います >>for (int i=1; i<=OrdersTotal(); i++) <<
しかし、論理的にはすべて正しいように思えるのですが......何か見落としているのでしょうか?
ありがとうございました。
ループを逆から行う
また、次のコードのどこに間違いがあるか教えてください。
deinit "の瞬間にループを呼び出す。
最後の注文以外は削除されます。
この行が一番エラーになりやすいと思います >>for (int i=1; i<=OrdersTotal(); i++) <<
しかし、論理的にはすべて正しいように思えるのですが......何か見落としているのでしょうか?
ありがとうございました。
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
こんな風に試してみてください。
こんにちは。少し手助けが必要です。利益の面で最も太いロットの1つを閉じる機能があります。
ループさせる必要がある
この機能の使い方を教えてください。例えば、私の口座の資本が5ピップス以上であれば、この機能は機能するはずです。
}
こんにちは。少し手助けが必要です。利益の面で最も太いロットの1つを閉じる機能があります。
ループさせる必要がある
例えば、私の口座の資本が5pips以上であれば、この機能は機能するはずです。
例えば、口座の自己資本が5pips(4文字分)より大きい場合、実際の市場では、注文数が 3~4より多い場合、簡単にマイナスになります(削除の結果によるものです)。:)))
P.S. 私の見るところ、あなたは既製のコードを必要とし、そのような問題を解くためのアルゴリズムはあなたにとって無用の長物です
5 pips (for 4 signs) - 実際の市場では、注文の数が3-4より大きい場合、(除去の結果によって)マイナスに回すことは容易である。:)))
私は一人...最近ゴールドに注目しているのですが...思ったより反応が早いです
私はまだこのような機能を扱ったことがありません・・・だからサポートをお願いしているのです
さて、私ですが...最近ゴールドに注目しているのですが...思ったよりスピードがありません
このフォームの機能をまだ使いこなせていないので・・・以下、サポートのお願いです。
まず、商品の集合ポジションのBUラインを計算します(pips単位で採算が取れるようになったら、注文を決済する条件を決めるために使用します)。
そして、現在の価格とブレイクイーブンラインの差を計算し、「差」が満足できるものであれば、注文を削除する手続きに進みます。まず、最も利益率の高い/損失の大きい注文のTicketを見つけることです。
削除はどちらか一方でも可能です。削除させてください。
さらに正しいユニットを組み立てるのは、それほど難しいことではありません。それをやるか、仕事に 行くしかないでしょう......。:)
しかし、なぜか1.3360と4桁の値で描画される
間違いを教えてください。
変数に価格値を代入したい。
しかし、なぜか1.3360と4桁の値で描画される
エラーを教えて ください。
もしかしてDCは4桁?または、DoubleToStr(YourPrice,5)を使用せずに価格を出力する。
もしかしてDCは4桁?または、DoubleToStr(YourPrice,5)を使用せずに価格を表示する。
DCは5桁...
WITHOUT DoubleToStr(YourPrice,5) とはどういう意味ですか? DoubleToStr(YourPrice,5) がどこにもないのですが。