初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 360 1...353354355356357358359360361362363364365366367...1504 新しいコメント Alexander Layzerevich 2015.05.20 08:19 #3591 こんにちは。MT4でEAを取引する際に、どのようにコードを正しく書けばよいのか、プログラミングの初心者ですが、アドバイスをお願いします。最後に決済された注文を選択して、その利益を比較しなければなりません。 その利益が0より大きい場合は何もせず、0より小さい場合は何かをしなければならないのです。double GetSizeLot(double lastlot=0) //Функция возвращает значение лотов { double Lot2,MinLots,MaxLots; int j=OrdersHistoryTotal(); MinLots=Lots; MaxLots=MaxLot; if(!DynamicLot)Lot2=Lots; if(lastlot<Lot2)lastlot=Lot2; if(OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) { if(OrderProfit()<0) lastlot=lastlot*Martin; if(OrderProfit()>0) lastlot=Lot2; } Lot2=lastlot; if(Lot2 < MinLots) Lot2 = MinLots; if(Lot2 > MaxLots) Lot2 = MaxLots; return(NormalizeDouble(Lot2,2)); }尊敬していますよ、アレクサンダーさん。 Vladimir Pastushak 2015.05.21 08:14 #3592 Menshikov:こんにちは。MT4でEAを取引する際に、どのようにコードを正しく書けばよいのか、プログラミングの初心者ですが、アドバイスをお願いします。最後に決済された注文を選択して、その利益を比較しなければなりません。 その利益が0より大きい場合は何もせず、0より小さい場合は何かをしなければならないのです。尊敬していますよ、アレクサンダーさん。//+------------------------------------------------------------------+ datetime time=0; double profit=0,lots=0; for(int i=OrdersHistoryTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if(OrderSymbol()==_Symbol) if(OrderMagicNumber()==MagicNumber || MagicNumber==-1) if(OrderCloseTime()>time) // находим последний в истории ордер { time=OrderCloseTime(); // запомним время profit=OrderProfit(); // запомним профит his_lt=OrderLots(); // запомним лот } if(profit<0) //если профит меньше нуля lots=his_lt*2; // Увеличим в два раза //+------------------------------------------------------------------+ Alexander Layzerevich 2015.05.21 11:53 #3593 Vladimir Pastushak: ありがとうございました。 Artyom Trishkin 2015.05.22 14:27 #3594 Vladimir Pastushak: 時間は何のためにあるのだろう、どうせリストの最後のものを選ぶのなら、なぜ閉店時間を覚えているのだろう、サイクルはどうなっているのだろう。そして、スワップやコミッションを検討してはいかがでしょうか。OrderProfit()>0であっても、実際の利益はマイナスになる場合があります。注文のリストを直接操作する場合、クローズの時間までに最後の1つを検索するループからコードのチャンクを残してはいけません。ひとつは信頼性・確実性、もうひとつはスピードです。そして、寄せ集めがあるんですね。 Vladimir Pastushak 2015.05.22 14:58 #3595 Artyom Trishkin: 時間は何のためにあるのだろう、どうせリストの最後のものを選ぶのなら、なぜ閉店時間を覚えているのだろう、サイクルはどうなっているのだろう。そして、スワップやコミッションを検討してはいかがでしょうか。OrderProfit()>0であっても、実際の利益はマイナスになる場合があります。注文のリストを直接操作する場合、クローズの時間までに最後の1つを検索するループからコードのチャンクを残してはいけません。ひとつは信頼性・確実性、もうひとつはスピードです。あなたが持っているのは、ごちゃごちゃしたものです。あなたが言いたいのは、次のことです。 if(OrderSelect(OrdersHistoryTotal(),SELECT_BY_POS,MODE_HISTORY))しているのでしょうか?相手は利益命令を出しただけなのに、なぜ頼んでいないことを押し付けるのか?しかし、私はあなたに同意します.... BEGEMOT32 2015.05.23 13:08 #3596 MT4でMQL4のオープンオーダーを20バー後にクローズする方法、つまり、オーダーがオープンされ20本の新しいバーが表示されたら、それをクローズする方法を教えてください。(注文は常に1件のみ)。何らかの理由で、このコードはストラテジーテスターで 動作しないので、そのために必要なのです。このコードは次のような意味を持っています。未決済の注文があるかどうかを調べ、なければ注文を出し、1本目のバーのオープン価格を「z」変数に記録し、その後1ティックごとに20本目のバーのオープン価格を調べ、1本目が最終的に20本目に到達するとその価格は「z」変数に記録した価格と同じになって、注文は決済されます。(もちろん、プロセス中に、価格が一致することができますが、それは非常にまれであろう、加えて、我々は変数に1番目のバーのより多くのパラメータを書き込むことができます)。double z; //объявление переменной //ОТКРЫТИЕ ОРДЕРА if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер { OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, Bid+150*Point, Bid-10*Point); z = Open[1]; // здесь переменной "z" присваивается цена открытия 1-го бара } else Print("ORDER NE USTANOVLEN!!!"); //ЗАКРЫТИЕ ОРДЕРА if (z==Open[20]) //если цена записанная в переменную "z" равна цене 20-го бара, то закрывать ордер { //-----------------код закрывает все ордера-------------------- bool result; int error; while (OrdersTotal()>0) { if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE); if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE); if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error, " ",Symbol()); } else error=0; } else Print( "Error when order select ", GetLastError()); } //------------конец кода закрывающего ордер------------------ } else Print("ORDER NE ZAKRYT!!!"); BEGEMOT32 2015.05.23 13:33 #3597 BEGEMOT32:MT4でMQL4のオープンオーダーを20バー後にクローズする方法、つまり、オーダーがオープンされ20本の新しいバーが表示されたら、それをクローズする方法を教えてください。(注文は常に1件のみ)。何らかの理由で、このコードはストラテジーテスターで 動作しないので、そのために必要なのです。このコードは次のような意味を持っています。未決済の注文があるかどうかを調べ、なければ注文を出し、1本目のバーのオープン価格を「z」変数に記録し、その後1ティックごとに20本目のバーのオープン価格を調べ、1本目が最終的に20本目に到達するとその価格は「z」変数に記録した価格と同じになって、注文は決済されます。(もちろん途中で価格が一致することもありますが、それは非常にまれなことで、さらに、1本目のバーのパラメータを変数に書き込むことができます)。 それです、私は自分でそれを理解しました、私はint start()の外で変数を宣言するべきだったのです - 今それはうまく動作します。 Vladimir Pastushak 2015.05.23 16:27 #3598 BEGEMOT32: それだ、自分でわかったんだ、int start()の外で変数を宣言すべきだったんだ - 今はうまくいくよあなたのコードを少し簡略化しましたが、まだエラーがあります。//ОТКРЫТИЕ ОРДЕРА if(OrdersTotal()==0) // если нет открытых ордеров то открывать ордер if(OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Bid+150*Point,Bid-10*Point)<0) Print("ORDER NE USTANOVLEN!!!"); //-----------------код закрывает все ордера-------------------- bool result; int error; while(OrdersTotal()>0) { if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { if(iBarShift(OrderSymbol(),Period(),OrderOpenTime())==20) { if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE); if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE); if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket()); } if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error," ",Symbol()); } else error=0; } else Print("Error when order select ",GetLastError()); } chama 2015.05.24 13:15 #3599 多通貨EAを書いているが、異なる通貨にリンクさせると同時に異なる価格を返してくるのが理解できない要するに、コードです。at InitEventSetTimer(60);OnTimer()内MqlTick last_tick; if(SymbolInfoTick("EURNZD",last_tick)) { Print("Last Ask: ", last_tick.ask); }例えば、EURNZDでEAをテストする場合。2015.05.18 00:07:00Lat Ask: 1.5370他の通貨ペアを使用する場合2015.05.18 00:07:00Lat Ask: 1.5323この値は全く異なっており、2番目のケースでは、チャートによると、少なくとも数時間はそのような値が存在することはあり得ませんStrategy Testerでは全てのティックがトレードモードになっているので、メインペアでない場合はStrategy Testerの値はおおよその値になっている気がします追記し忘れましたが、これはメタトレード5 です一度目は価格がおかしく、二度目は正常な価格であることがわかりました forexman77 2015.05.25 13:51 #3600 1.ティックボリュームが 何回上下したか、履歴からわかるか?2.autochartisを削除してから数ヶ月経ちますが、ログメッセージが出続けています。ソフトがファイルを開こうとし続ける。オートカルティスを完全に消去する方法は?2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Volatility.ex4' [2] 2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Key Levels.ex4' [2] 2015.05.25 15:36:42.982 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Chart Patterns.ex4' [2] 1...353354355356357358359360361362363364365366367...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
MT4でEAを取引する際に、どのようにコードを正しく書けばよいのか、プログラミングの初心者ですが、アドバイスをお願いします。
最後に決済された注文を選択して、その利益を比較しなければなりません。 その利益が0より大きい場合は何もせず、0より小さい場合は何かをしなければならないのです。
尊敬していますよ、アレクサンダーさん。
こんにちは。
MT4でEAを取引する際に、どのようにコードを正しく書けばよいのか、プログラミングの初心者ですが、アドバイスをお願いします。
最後に決済された注文を選択して、その利益を比較しなければなりません。 その利益が0より大きい場合は何もせず、0より小さい場合は何かをしなければならないのです。
尊敬していますよ、アレクサンダーさん。
時間は何のためにあるのだろう、どうせリストの最後のものを選ぶのなら、なぜ閉店時間を覚えているのだろう、サイクルはどうなっているのだろう。そして、スワップやコミッションを検討してはいかがでしょうか。OrderProfit()>0であっても、実際の利益はマイナスになる場合があります。注文のリストを直接操作する場合、クローズの時間までに最後の1つを検索するループからコードのチャンクを残してはいけません。ひとつは信頼性・確実性、もうひとつはスピードです。あなたが持っているのは、ごちゃごちゃしたものです。
あなたが言いたいのは、次のことです。
しているのでしょうか?
相手は利益命令を出しただけなのに、なぜ頼んでいないことを押し付けるのか?しかし、私はあなたに同意します....
MT4でMQL4のオープンオーダーを20バー後にクローズする方法、つまり、オーダーがオープンされ20本の新しいバーが表示されたら、それをクローズする方法を教えてください。(注文は常に1件のみ)。何らかの理由で、このコードはストラテジーテスターで 動作しないので、そのために必要なのです。
このコードは次のような意味を持っています。未決済の注文があるかどうかを調べ、なければ注文を出し、1本目のバーのオープン価格を「z」変数に記録し、その後1ティックごとに20本目のバーのオープン価格を調べ、1本目が最終的に20本目に到達するとその価格は「z」変数に記録した価格と同じになって、注文は決済されます。(もちろん、プロセス中に、価格が一致することができますが、それは非常にまれであろう、加えて、我々は変数に1番目のバーのより多くのパラメータを書き込むことができます)。
MT4でMQL4のオープンオーダーを20バー後にクローズする方法、つまり、オーダーがオープンされ20本の新しいバーが表示されたら、それをクローズする方法を教えてください。(注文は常に1件のみ)。何らかの理由で、このコードはストラテジーテスターで 動作しないので、そのために必要なのです。
このコードは次のような意味を持っています。未決済の注文があるかどうかを調べ、なければ注文を出し、1本目のバーのオープン価格を「z」変数に記録し、その後1ティックごとに20本目のバーのオープン価格を調べ、1本目が最終的に20本目に到達するとその価格は「z」変数に記録した価格と同じになって、注文は決済されます。(もちろん途中で価格が一致することもありますが、それは非常にまれなことで、さらに、1本目のバーのパラメータを変数に書き込むことができます)。
それだ、自分でわかったんだ、int start()の外で変数を宣言すべきだったんだ - 今はうまくいくよ
あなたのコードを少し簡略化しましたが、まだエラーがあります。
多通貨EAを書いているが、異なる通貨にリンクさせると同時に異なる価格を返してくるのが理解できない
要するに、コードです。
at Init
OnTimer()内
例えば、EURNZDでEAをテストする場合。
2015.05.18 00:07:00Lat Ask: 1.5370
他の通貨ペアを使用する場合
2015.05.18 00:07:00Lat Ask: 1.5323
この値は全く異なっており、2番目のケースでは、チャートによると、少なくとも数時間はそのような値が存在することはあり得ません
Strategy Testerでは全てのティックがトレードモードになっているので、メインペアでない場合はStrategy Testerの値はおおよその値になっている気がします
追記し忘れましたが、これはメタトレード5 です
一度目は価格がおかしく、二度目は正常な価格であることがわかりました
オートカルティスを完全に消去する方法は?