アドバイザーを無料でお書きします - ページ 85 1...787980818283848586878889909192...171 新しいコメント Maksim Sovenko 2018.10.19 11:23 #841 Evgenij Litvintsev:こんにちは!多分、誰かが私の戦略を自動化することに興味を持つでしょう。今は動いているが、半自動モードなので、自動化したい。 取引結果を見ることはできますか? Николай 2018.10.20 15:34 #842 こんばんは、チケットの注文、ロット、利益を一つの関数で取得する方法をご教示ください。 double OldTicketSell()// 最遠の売り注文を 探す {ダブルMaxDist=0,oldprofit,lot;int ticket=0;double BID=MarketInfo(Symbol(),MODE_BID);double ASK=MarketInfo(Symbol(),MODE_ASK);for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK)){MaxDist=MathAbs(OrderOpenPrice()-ASK)。ticket=OrderTicket()。oldprofit = OrderProfit();lot = OrderLots();}}}return(ticket)です。} 機能は明確で、見つかったデータをどうやって取り出すか、ロットやプロフィットの下にコピーする必要があるかは不明です。 I will write an コーディングのヘルプ MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Konstantin Nikitin 2018.10.20 15:53 #843 Николай:こんばんは、チケット注文、ロット、利益を1つの関数で取得する方法を教えてください。関数は理解できるのですが、そこから見つかったデータをどのように引き出すのか、ロットや利益の下にコピーすればよいのかが不明です。 このようにすることができます struct InfoOrder { int ticket; double lot, profit, swap, commission, sl, tp; datetime timeOpen; string comment; } infoOrder; void OldSell(void)// Находим самый дальний ордер на продажу { double MaxDist=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK)) { MaxDist=MathAbs(OrderOpenPrice()-ASK); infoOrder.ticket=OrderTicket(); infoOrder.profit = OrderProfit(); infoOrder.lot = OrderLots(); } } } return; } Николай 2018.10.20 16:58 #844 Konstantin Nikitin:このように行くことができます。 それはいいのですが、私はダミーで、自分の知識の範囲(ちょっと勉強しただけ)でEAを書こうとして いるので、変数が構造体であることは理解できるのですが、この構造体からどうやってデータを取り出すのかが、よく分かりません。例えば、最も遠い注文を見つけた場合、利益はロットで割る必要があり、現在の価格からそのロットまでのポイント数を得ることができます。そして、反対注文の利益を求め(求め方は知っている)、それを先ほど計算した反対注文のポイント数で割ると、ロット数が求まり、このロット数を使って、見つかった遠い注文を完全または部分的に決済します。 Николай 2018.10.20 17:02 #845 Konstantin Nikitin:このようにすることができます また、サイクル内の注文の始 値を比較して、価格から最も遠い注文を見つけることは可能でしょうか、さらに簡単だと思うのですが? Konstantin Nikitin 2018.10.20 17:16 #846 Николай:また、サイクル内の注文の始 値を比較して、価格から最も遠い注文を見つけることは可能でしょうか、さらに簡単だと思うのですが?もちろん、そうです。そして、それが簡単かどうかは、何を必要としているかによります。 これは、上記のご質問に対する例です。 struct InfoOrder { int ticket; double lot, profit, swap, commission, sl, tp; datetime timeOpen; string comment; } infoOrder; void OnTick() { OldSell(); Print("Ticket: ", infoOrder.ticket); Print("Profit: ", infoOrder.profit); Print("Lot: ", infoOrder.lot); Print("-----=====-----"); return; } void OldSell(void)// Находим самый дальний ордер на продажу { double MaxDist=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK)) { MaxDist=MathAbs(OrderOpenPrice()-ASK); infoOrder.ticket=OrderTicket(); infoOrder.profit = OrderProfit(); infoOrder.lot = OrderLots(); } } } return; } Николай 2018.10.20 18:04 #847 Konstantin Nikitin:もちろん、できますよ。それが簡単かどうかは、何を必要としているかで決まります。 そして、上の質問に対する例です。 これだけ見ると、自分がいかにタレコミ屋であるかを思い知らされますね。つまり、 OldSell(void)関数の結果がInfoOrder 構造体に書き込まれ、 infoOrder.ticket,infoOrder.profit,infoOrder.lot 変数の値が使用 できるようになります。 //-Структура для нахождения самого дальнего ордера на продажу struct InfoOrder { int ticket; double lot, profit, swap, commission, sl, tp; datetime timeOpen; string comment; } infoOrder; void OnTick() { OldSell(); Print("Ticketbuy: ", infoOrder.ticket); Print("Profitbuy: ", infoOrder.profit); Print("Lotbuy: ", infoOrder.lot); Print("Ticketsell: ", infoOrder.ticket); Print("Profitsell: ", infoOrder.profit); Print("Lotsell: ", infoOrder.lot); Print("-----=====-----"); return; } void OldSell(void)// Находим самый дальний ордер на продажу { double MaxDist=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY && MaxDist<MathAbs(OrderOpenPrice()-BID)) { MaxDist=MathAbs(OrderOpenPrice()-BID); infoOrder.ticketbuy=OrderTicket(); infoOrder.profitbuy = OrderProfit(); infoOrder.lotbuy = OrderLots(); } if(OrderType()==OP_SELL && MaxDist<MathAbs(OrderOpenPrice()-ASK)) { MaxDist=MathAbs(OrderOpenPrice()-ASK); infoOrder.ticketsell=OrderTicket(); infoOrder.profitsell = OrderProfit(); infoOrder.lotsell = OrderLots(); } } } return; } Николай 2018.10.20 18:06 #848 Konstantin Nikitin:もちろん、できますよ。それが簡単かどうかは、何を必要としているかで決まります。 そして、上の質問に対する例です。 プリント変数の変更忘れ Konstantin Nikitin 2018.10.20 18:29 #849 Николай: これだけ見ると、自分がいかにダミーであるかを思い知らされます。そこで、void OldSell(void)関数の結果をInfoOrder 構造体に書き込んで、 infoOrder.ticket,infoOrder.profit,infoOrder.lot を使えるようにします。少し一般化しましたが、よかったでしょうか? //-Структура для нахождения самого дальнего ордера на продажу struct InfoOrder { int ticket; double lot, profit, swap, commission, sl, tp, MaxDist; datetime timeOpen; string comment; } infoOrder; void OnTick() { if( OldOrder(OP_BUY) ) { Print("Ticketbuy: ", infoOrder.ticket); Print("Profitbuy: ", infoOrder.profit); Print("Lotbuy: ", infoOrder.lot); Print("MaxDistbuy: ", infoOrder.MaxDist); Print("-----=====-----"); } if( OldOrder(OP_SELL) ) { Print("Ticketsell: ", infoOrder.ticket); Print("Profitsell: ", infoOrder.profit); Print("Lotsell: ", infoOrder.lot); Print("MaxDistsell: ", infoOrder.MaxDist); Print("-----=====-----"); } return; } bool OldOrder(const int type)// Находим самый дальний ордер на продажу { bool res = false; double MaxDist=0; double BID=MarketInfo(Symbol(),MODE_BID); double ASK=MarketInfo(Symbol(),MODE_ASK); for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { switch(type) { case OP_BUY: if(OrderType()!=OP_BUY) break; if(MaxDist<=MathAbs(OrderOpenPrice()-BID)) break; infoOrder.MaxDist=MathAbs(OrderOpenPrice()-BID); infoOrder.ticket=OrderTicket(); infoOrder.profit = OrderProfit(); infoOrder.lot = OrderLots(); res = true; break; case OP_SELL: if(OrderType()!=OP_SELL) break; if(MaxDist>=MathAbs(OrderOpenPrice()-ASK)) break; infoOrder.MaxDist=MathAbs(OrderOpenPrice()-ASK); infoOrder.ticket=OrderTicket(); infoOrder.profit = OrderProfit(); infoOrder.lot = OrderLots(); res = true; break; } } } return res; } こんな感じ。 Николай 2018.10.20 18:49 #850 EAでこの構造を見つけたのですが、これは何を定義しているのでしょうか? struct TMartinData { int BUY_Positions; double BUY_LastPrice; double BUY_StopPrice; double BUY_Lots; datetime BUY_LastTime; bool BUY_AllWD; int SELL_Positions; double SELL_LastPrice; double SELL_StopPrice; double SELL_Lots; datetime SELL_LastTime; bool SELL_AllWD; } MartinData; void OnTick() void FillMartinData() { datetime bfirst = TimeCurrent()+1; datetime blast = 0; datetime sfirst = TimeCurrent()+1; datetime slast = 0; MartinData.BUY_Positions = 0; MartinData.SELL_Positions = 0; MartinData.BUY_Lots = 0; MartinData.SELL_Lots = 0; MartinData.BUY_LastPrice = -1; MartinData.SELL_LastPrice = -1; MartinData.BUY_StopPrice = -1; MartinData.SELL_StopPrice = -1; MartinData.BUY_LastTime = 0; MartinData.SELL_LastTime = 0; MartinData.BUY_AllWD = true; MartinData.SELL_AllWD = true; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNum) { if (OrderType()==OP_BUY) { MartinData.BUY_Positions++; if (OrderOpenTime()<bfirst) { MartinData.BUY_Lots = OrderLots(); MartinData.BUY_StopPrice = OrderStopLoss(); bfirst = OrderOpenTime(); } if (OrderOpenTime()>blast) { MartinData.BUY_LastPrice = OrderOpenPrice(); blast = OrderOpenTime(); } if (OrderStopLoss()<OrderOpenPrice()) MartinData.BUY_AllWD = false; } else if (OrderType()==OP_SELL) { MartinData.SELL_Positions++; if (OrderOpenTime()<sfirst) { MartinData.SELL_Lots = OrderLots(); MartinData.SELL_StopPrice = OrderStopLoss(); sfirst = OrderOpenTime(); } if (OrderOpenTime()>slast) { MartinData.SELL_LastPrice = OrderOpenPrice(); slast = OrderOpenTime(); } if ((OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice())) MartinData.SELL_AllWD = false; } } } MartinData.BUY_LastTime = blast; MartinData.SELL_LastTime = slast; if (MartinData.BUY_Positions==0) MartinData.BUY_AllWD = false; if (MartinData.SELL_Positions==0) MartinData.SELL_AllWD = false; } 1...787980818283848586878889909192...171 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは!多分、誰かが私の戦略を自動化することに興味を持つでしょう。今は動いているが、半自動モードなので、自動化したい。
取引結果を見ることはできますか?
こんばんは、チケットの注文、ロット、利益を一つの関数で取得する方法をご教示ください。
double OldTicketSell()// 最遠の売り注文を 探す
}
機能は明確で、見つかったデータをどうやって取り出すか、ロットやプロフィットの下にコピーする必要があるかは不明です。
こんばんは、チケット注文、ロット、利益を1つの関数で取得する方法を教えてください。
関数は理解できるのですが、そこから見つかったデータをどのように引き出すのか、ロットや利益の下にコピーすればよいのかが不明です。
このようにすることができます
このように行くことができます。
このようにすることができます
また、サイクル内の注文の始 値を比較して、価格から最も遠い注文を見つけることは可能でしょうか、さらに簡単だと思うのですが?
また、サイクル内の注文の始 値を比較して、価格から最も遠い注文を見つけることは可能でしょうか、さらに簡単だと思うのですが?
もちろん、そうです。そして、それが簡単かどうかは、何を必要としているかによります。
これは、上記のご質問に対する例です。
もちろん、できますよ。それが簡単かどうかは、何を必要としているかで決まります。
そして、上の質問に対する例です。
もちろん、できますよ。それが簡単かどうかは、何を必要としているかで決まります。
そして、上の質問に対する例です。
これだけ見ると、自分がいかにダミーであるかを思い知らされます。そこで、void OldSell(void)関数の結果をInfoOrder 構造体に書き込んで、 infoOrder.ticket,infoOrder.profit,infoOrder.lot を使えるようにします。少し一般化しましたが、よかったでしょうか?
こんな感じ。
EAでこの構造を見つけたのですが、これは何を定義しているのでしょうか?