OrderCloseが機能しない - ページ 5 12345 新しいコメント chua le 2014.02.27 08:27 #41 GumRaiさん、ありがとうございます。 chua le 2014.02.27 15:57 #42 こんにちは。 数種類の通貨チャートにEAを取り付けています。このEAは条件を満たした場合、一つのチャートに多くの注文を出します。1つのチャートに1つしか注文を出さないようにするには、どのようなコーディングが必要でしょうか? Keith Watford 2014.02.27 22:04 #43 chuale:こんにちは。数種類の通貨チャートにEAを取り付けています。このEAは条件を満たした場合、一つのチャートに多くの注文を出します。1つのチャートに1つの注文しか出さないようにするには、どのようなコーディングが必要でしょうか? 注文をループさせ、マジックナンバーとシンボルをチェック します。 すでに注文が開いている場合は、それ以上開かないようにします。 PS.あなたの質問はスレッドのタイトルと全く関係がないので、あなたは本当に新しいスレッドを開始する必要がありました :) Daniel Petrovai 2014.02.28 00:15 #44 chuale:thrdelさん、こんにちは。Time[0]はバー0の時刻を指しているのでしょうか?Time[1]、Time[2]などはあるのでしょうか?ググってみましたが、ネット上ではあまり情報がありません。また、このEAを2つの通貨ペアにつけた場合、OrderSelectはチャート自体の注文のみを選択するのか、それともターミナルにある全ての注文を選択するのか、どちらでしょうか? Time[0]は現在の バーが開始された時間 です。はい、Time[1]は前のバーが開始された時間、といった具合です。 同じEAを複数のチャートで動作させる場合、同じシンボルを異なるチャートで使用する場合でも、EAごとに「MagicMunber」変数が異なっていることを確認する必要があります。 そうすれば、EAがお互いの注文に干渉することはありません。 OrderSelect() はチャートからではなく、サーバーから値を取得します。 口座や注文の情報はサーバーに保存されているので、パソコンの電源を切ってもストップやTPの注文は実行されているのです。 Daniel Petrovai 2014.02.28 00:20 #45 chuale: こんにちは、thrdelさん。 "if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());" というコーディングに対して "implicit conversion from 'number' to 'string' postin forum.mq4 69" という警告メッセージが表示されるのはなぜでしょうか? Comment()でdouble変数を表示したり、Print()で印刷する場合は、DoubleToString()関数で 文字列に変換する必要があります。 int型変数では、変換は明白なので、IntToString()を使って変換しなくても、コンパイルして動作します。 Daniel Petrovai 2014.02.28 00:36 #46 chuale: こんにちは。 私はいくつかの異なる通貨のチャートにEAを添付します。このEAは条件を満たせば1つのチャートにたくさんの注文を出します。1つのチャートに1つの注文しか出さないようにするには、どのようなコーディングが必要でしょうか? こんにちは、Chualeさん。 あなたのEAを動作させるために、いくつかの変更を加えました。 MagicNumberは変数で、すべてのチャートで異なることを確認する必要があります。 もし、この変更がなぜ、どのように機能するのか説明して欲しいのであれば、私にPMしてください。 自分でテストを行い、どのように機能するかを見ることができます。私はUSDJPYでテストしました。 最大と最小の変数は、あなたの条件の値1と-1を置き換えているので、あなたは最適化することができ、他の値がよりよく動作するかどうかを確認します。 if(bar2 <-1) //changed to if(bar2 < Min if(bar2 > 1) //changed to if(bar2 > Max パラメータを最適化 する方法をご存知ですか? あなたが何か質問がある場合は、私に知らせてくださいまたはPM。 以下はそのコードです。 //+------------------------------------------------------------------+ //| chuale_test1.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.abc.com" #property version "1.00" #property strict extern double TakeProfit=150; extern double Lots=0.1; extern double StopLoss=300; extern int Max = 6; extern int Min = -9; extern int MagicNumber = 12345; extern int Slip = 3; double bar1; double bar2; double bar3; double bar3max,bar3min; int myTrades,ticket; datetime previousTime; int xMultiply; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int init() { //--- if(Digits==3) xMultiply=100; if(Digits==5) xMultiply=10000; //--- return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //--- return(0); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int start() { myTrades = CountTrades(); // bar1=(iClose(Symbol(),0,2)-iClose(Symbol(),0,3))*xMultiply; bar2=(iClose(Symbol(),0,1)-iClose(Symbol(),0,2))*xMultiply; bar3=(iClose(Symbol(),0,0)-iClose(Symbol(),0,1))*xMultiply; // if(myTrades>0) { if(bar3<Min) CloseThisSymbolAll("OP_BUY"); if(bar3>Max) CloseThisSymbolAll("OP_SELL"); } // if(Time[0]==previousTime) return(0); previousTime=Time[0]; // if(myTrades<1) { if(bar2>1) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Chua EA",MagicNumber,0,Green); if(ticket<0)Print("Error OP_BUY order failed. error : "+GetLastError()); return(0); } if(bar2<-1) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid+-TakeProfit*Point,"Chua EA",MagicNumber,0,Red); if(ticket<0)Print("Error OP_SELL order failed. error : "+GetLastError()); return(0); } } return(0); } //======================================================================== int CountTrades() { int count=0; int trade; for(trade=OrdersTotal()-1;trade>=0;trade--) { OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber) continue; if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber) if(OrderType()==OP_SELL || OrderType()==OP_BUY) count++; } return(count); } //======================================================================== void CloseThisSymbolAll(string direction) { string dir = direction; int trade; for(trade=OrdersTotal();trade>=0;trade--) { OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()!=Symbol()) continue; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if(OrderType()==OP_BUY && dir == "OP_BUY")OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Blue); if(OrderType()==OP_SELL&& dir == "OP_SELL")OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Red); } } } //======================================================================== chua le 2014.02.28 03:01 #47 こんにちは、thrdelさん。 あなたはとても親切で助けになります。ありがとうございます。 chua le 2015.04.21 02:02 #48 Thrdelさん、こんにちは。つまり、バックテスト ごとにMaxとMinの値を変えてみて、どれが一番最適な値なのかを判断しなければならないということでしょうか?ありがとうございます。 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは。
数種類の通貨チャートにEAを取り付けています。このEAは条件を満たした場合、一つのチャートに多くの注文を出します。1つのチャートに1つしか注文を出さないようにするには、どのようなコーディングが必要でしょうか?
こんにちは。
数種類の通貨チャートにEAを取り付けています。このEAは条件を満たした場合、一つのチャートに多くの注文を出します。1つのチャートに1つの注文しか出さないようにするには、どのようなコーディングが必要でしょうか?
注文をループさせ、マジックナンバーとシンボルをチェック します。
すでに注文が開いている場合は、それ以上開かないようにします。
PS.あなたの質問はスレッドのタイトルと全く関係がないので、あなたは本当に新しいスレッドを開始する必要がありました :)
thrdelさん、こんにちは。
Time[0]はバー0の時刻を指しているのでしょうか?Time[1]、Time[2]などはあるのでしょうか?ググってみましたが、ネット上ではあまり情報がありません。また、このEAを2つの通貨ペアにつけた場合、OrderSelectはチャート自体の注文のみを選択するのか、それともターミナルにある全ての注文を選択するのか、どちらでしょうか?
Time[0]は現在の バーが開始された時間 です。はい、Time[1]は前のバーが開始された時間、といった具合です。
同じEAを複数のチャートで動作させる場合、同じシンボルを異なるチャートで使用する場合でも、EAごとに「MagicMunber」変数が異なっていることを確認する必要があります。
そうすれば、EAがお互いの注文に干渉することはありません。
OrderSelect() はチャートからではなく、サーバーから値を取得します。
口座や注文の情報はサーバーに保存されているので、パソコンの電源を切ってもストップやTPの注文は実行されているのです。
こんにちは、thrdelさん。
"if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());" というコーディングに対して "implicit conversion from 'number' to 'string' postin forum.mq4 69" という警告メッセージが表示されるのはなぜでしょうか?
Comment()でdouble変数を表示したり、Print()で印刷する場合は、DoubleToString()関数で 文字列に変換する必要があります。
int型変数では、変換は明白なので、IntToString()を使って変換しなくても、コンパイルして動作します。
こんにちは。
私はいくつかの異なる通貨のチャートにEAを添付します。このEAは条件を満たせば1つのチャートにたくさんの注文を出します。1つのチャートに1つの注文しか出さないようにするには、どのようなコーディングが必要でしょうか?
こんにちは、Chualeさん。
あなたのEAを動作させるために、いくつかの変更を加えました。
MagicNumberは変数で、すべてのチャートで異なることを確認する必要があります。
もし、この変更がなぜ、どのように機能するのか説明して欲しいのであれば、私にPMしてください。
自分でテストを行い、どのように機能するかを見ることができます。私はUSDJPYでテストしました。
最大と最小の変数は、あなたの条件の値1と-1を置き換えているので、あなたは最適化することができ、他の値がよりよく動作するかどうかを確認します。
if(bar2 > Max
パラメータを最適化 する方法をご存知ですか?
あなたが何か質問がある場合は、私に知らせてくださいまたはPM。
以下はそのコードです。
こんにちは、thrdelさん。
あなたはとても親切で助けになります。ありがとうございます。
Thrdelさん、こんにちは。
つまり、バックテスト ごとにMaxとMinの値を変えてみて、どれが一番最適な値なのかを判断しなければならないということでしょうか?
ありがとうございます。