[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 60 1...535455565758596061626364656667...631 新しいコメント Igor Makanu 2012.04.08 05:21 #591 7777877: パラメータ転送から参照によるパラメータ転送?ここで、パラメータ 転送を参考に、このようなスクリプトを作ってみてください。 int start(){ int res = 999; Print("func = ",func(res)," , res = ",res); return(0); } //__________________________ int func(int &a){ a = 10; return(a*10); } Expertタブには以下の記録が表示されます:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10 という質問に答えてみてください。 Sergey Dymov 2012.04.08 06:06 #592 ライブラリの接続方法を教えてください。mqhファイルには存在するのですが、コピーする際に 'strlib.mqh' - プログラムファイルを開くことができません。 削除済み 2012.04.08 06:12 #593 IgorM:リンク先のパラメータ 転送ですが、このようなスクリプトを作成してください。Expertタブに次のエントリーが表示されます。そして、なぜres =999を 割り当てたのに、ログではres = 10になっているのかという疑問にも答えてみてください。 以下は私の説明です。 Print関数は、ユーザー関数funcを呼び出します。パラメータres=999はfunc関数に渡される。func関数そのものを評価する場合は、パラメータa=10が使用されます。値a*10=100はfunc関数が呼び出された場所に戻される。つまり,呼び出さ れた関数(この場合はfunc)に,関連する型(この場合はres=999)の任意の値を渡すことができますが,関数自体はその値ですでに評価されます(すなわち,res=10となります).(この値は,関数自体の内部で初期化されます(特定のケースでは,呼び出された関数,つまりこの場合はfuncに渡された値と一致することもあります).そして、関数内で計算された値(この場合はfuncに)を関数呼び出し文字列に戻す際、変数(この場合はres)はすでに以前とは異なる値、つまり関数funcの計算時に受け取った値(つまりこの場合はres=10)を持つことになります。つまり、関数にパラメータを参照渡しする場合、評価された関数内で、パラメータの値が変化する可能性があり、さらに、計算された値が関数呼び出し文字列で返された後、このパラメータは、呼び出された関数の評価中に受け取った、変化した(特定のケースでは、同じ)値を持っていることになるのです。 うまくいったかな? Igor Makanu 2012.04.08 06:18 #594 7777877: パラメータが関数に参照 渡しされる場合,評価される関数内でパラメータの値が変更 されることがある それはそうだ 削除済み 2012.04.08 06:24 #595 IgorM: そうなんです。 グロッセ・ダンケ・ショーン!!!! 削除済み 2012.04.08 07:23 #596 注文の修正を行い、指定した時間に損切りの値を変更するようにしたいのですが、誤動作が始まってしまいますので教えてください。 以下は私のコードです。 extern int tp = 350; // 利益値 takeprofit extern int sl = 400; // 損失値 stoploss int ticket; int start() { //---- if (OrdersTotal()==0 && Hour( )==2 & )& Minute( )==0) // 注文はターミナルタイム2:00にオープン ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,".",123,0,Red); //---- if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // ここでは、選択したチケットの注文は端末時間の3時に変更しなければならないという条件を設定しています。の時間です。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは注文の選択、取引を指定しています OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //オープンポジション 価格から選択したチケットでの注文を変更、ポイントでSL値を変更、 TPは変更なし } //--。 } テスト中に問題が発生しました。Expert Advisorは、3時00分から3時59分まで、時間的に多くの無駄な修正を行うようになりました。Expert Advisorは毎秒変更しています。なぜ、コードが間違っているのか? [ARCHIVE!] Any rookie question, Need Help with Error MQL4 Learning Alekseu Fedotov 2012.04.08 08:09 #597 oleg_felix: 教えてください。注文の修正を行い、私が指定した時間にEAがストップロスの値を変更するようにしたいのですが、誤動作が始まってしまいます。 以下は私のコードです。 extern int tp = 350; // 利益確定値 extern int sl = 400; // ストップロス値 int ticketです。 int start() { //---- if (OrdersTotal()==0 && Hour( )==2 && Minute( )==0) // 端末時間2:00に注文開始 ticket=OrderSend(Symbol()、OP_SELL、1、Bid、0、Ask+sl*Point、Ask-tp*Point、""、123、0、赤)。 //---- if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // ここでは、選択したチケットの注文を端末時間に合わせて午後3時に変更する条件を指定しました。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは、注文の選択、トレードを指定しています。 OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // 選択したチケットで、オープンポジション価格から注文を変更し、SL値をポイントで変更、TPは変更せずにおく。 } //-- } エキスパートアドバイザーは、3時00分から3時59分まで、時間内に多くの無駄な修正を行うようになります。Expert Advisorは毎秒変更しています。なぜ、コードがおかしい? なぜオンタイムで...オンプロフィット!!!! 削除済み 2012.04.08 08:42 #598 ECN口座のオープンオーダーで、ストップとプロフィットを一度に発注できず、修正で行う場合の正しい関数の書き方 。 何か問題があるようなので、エラーの原因を教えてください。 extern int tp = 350; // 利益値 takeprofit extern int sl = 400; // 損失値 stoploss int ticket; int start() { //---- if (OrdersTotal()==0 && )Close[1]<Open[1] && High[1]<Bid) )==0) // 条件で注文開始 ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0t,",123,0,Red); //---- if (OrdersTotal()==1) ) // ここでは、選択された1つの注文を変更する条件を設定しています。 { OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは注文の選択、取引を指定しています OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); //オープンポジション 価格から、選択したチケットで注文を変更、SL値をポイントで変更、 TPは変更なし } }. [ARCHIVE!] Any rookie question, Need Help with Error MQL4 Learning 削除済み 2012.04.08 09:58 #599 oDin48: みんな、ライブラリの接続はどうすればいいんだ?EAをコンパイルしようとすると、次のようなメッセージが表示されます。 'strlib.mqh' - プログラムファイルを開くことができません。 Aラインを見つける。 #include <strlib.mgh> と置き換えてください。 #include <stdlib.mgh> Vadim Zhunko 2012.04.08 10:13 #600 7777877:パラメータ参照渡しとは何か、わかりやすく教えてください。ドキュメントを読みましたが、可能であることと、変数の識別の後に修飾子&を付けることが義務付けられていることのみ理解しました。解説付きの小型プログラムがあれば最高なのですが...。通常のパラメータ渡しと、参照によるパラメータ渡しの違いは何ですか?パラメータを 参照渡しする 一般的な意味は、変数そのものではなく、そのアドレスをパラメータに渡すことです。逆の場合は、変数のコピーがパラメータに渡されます。 1...535455565758596061626364656667...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ここで、パラメータ 転送を参考に、このようなスクリプトを作ってみてください。
Expertタブには以下の記録が表示されます:2012.04.08 11:19:35 test EURUSD,M5: func = 100, res = 10
という質問に答えてみてください。
ライブラリの接続方法を教えてください。mqhファイルには存在するのですが、コピーする際に
'strlib.mqh' - プログラムファイルを開くことができません。
リンク先のパラメータ 転送ですが、このようなスクリプトを作成してください。
Expertタブに次のエントリーが表示されます。
そして、なぜres =999を 割り当てたのに、ログではres = 10になっているのかという疑問にも答えてみてください。
以下は私の説明です。
Print関数は、ユーザー関数funcを呼び出します。パラメータres=999はfunc関数に渡される。func関数そのものを評価する場合は、パラメータa=10が使用されます。値a*10=100はfunc関数が呼び出された場所に戻される。つまり,呼び出さ れた関数(この場合はfunc)に,関連する型(この場合はres=999)の任意の値を渡すことができますが,関数自体はその値ですでに評価されます(すなわち,res=10となります).(この値は,関数自体の内部で初期化されます(特定のケースでは,呼び出された関数,つまりこの場合はfuncに渡された値と一致することもあります).そして、関数内で計算された値(この場合はfuncに)を関数呼び出し文字列に戻す際、変数(この場合はres)はすでに以前とは異なる値、つまり関数funcの計算時に受け取った値(つまりこの場合はres=10)を持つことになります。つまり、関数にパラメータを参照渡しする場合、評価された関数内で、パラメータの値が変化する可能性があり、さらに、計算された値が関数呼び出し文字列で返された後、このパラメータは、呼び出された関数の評価中に受け取った、変化した(特定のケースでは、同じ)値を持っていることになるのです。
うまくいったかな?
そうなんです。
グロッセ・ダンケ・ショーン!!!!
注文の修正を行い、指定した時間に損切りの値を変更するようにしたいのですが、誤動作が始まってしまいますので教えてください。
以下は私のコードです。
extern int tp = 350; // 利益値 takeprofit
extern int sl = 400; // 損失値 stoploss
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && Hour( )==2 & )& Minute( )==0) // 注文はターミナルタイム2:00にオープン
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Ask+sl*Point,Ask-tp*Point,".",123,0,Red);
//----
if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // ここでは、選択したチケットの注文は端末時間の3時に変更しなければならないという条件を設定しています。の時間です。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは注文の選択、取引を指定しています
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); //オープンポジション 価格から選択したチケットでの注文を変更、ポイントでSL値を変更、 TPは変更なし
}
//--。
}
テスト中に問題が発生しました。Expert Advisorは、3時00分から3時59分まで、時間的に多くの無駄な修正を行うようになりました。Expert Advisorは毎秒変更しています。なぜ、コードが間違っているのか?
教えてください。注文の修正を行い、私が指定した時間にEAがストップロスの値を変更するようにしたいのですが、誤動作が始まってしまいます。
以下は私のコードです。
extern int tp = 350; // 利益確定値
extern int sl = 400; // ストップロス値
int ticketです。
int start()
{
//----
if (OrdersTotal()==0 && Hour( )==2 && Minute( )==0) // 端末時間2:00に注文開始
ticket=OrderSend(Symbol()、OP_SELL、1、Bid、0、Ask+sl*Point、Ask-tp*Point、""、123、0、赤)。
//----
if (OrdersTotal()==1 && Hour( )==3 && Minute( )==0) // ここでは、選択したチケットの注文を端末時間に合わせて午後3時に変更する条件を指定しました。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは、注文の選択、トレードを指定しています。
OrderModify(ticket, OrderOpenPrice(), Ask+300*Point, OrderTakeProfit(),0,Blue); // 選択したチケットで、オープンポジション価格から注文を変更し、SL値をポイントで変更、TPは変更せずにおく。
}
//--
}
エキスパートアドバイザーは、3時00分から3時59分まで、時間内に多くの無駄な修正を行うようになります。Expert Advisorは毎秒変更しています。なぜ、コードがおかしい?
なぜオンタイムで...オンプロフィット!!!!
ECN口座のオープンオーダーで、ストップとプロフィットを一度に発注できず、修正で行う場合の正しい関数の書き方
。
何か問題があるようなので、エラーの原因を教えてください。
extern int tp = 350; // 利益値 takeprofit
extern int sl = 400; // 損失値 stoploss
int ticket;
int start()
{
//----
if (OrdersTotal()==0 && )Close[1]<Open[1] && High[1]<Bid) )==0) // 条件で注文開始
ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,0,0t,",123,0,Red);
//----
if (OrdersTotal()==1) ) // ここでは、選択された1つの注文を変更する条件を設定しています。
{
OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES); // ここでは注文の選択、取引を指定しています
OrderModify(ticket, OrderOpenPrice(), Ask+sl*Point,Ask-tp*Point,0,Blue); //オープンポジション 価格から、選択したチケットで注文を変更、SL値をポイントで変更、 TPは変更なし
}
}.
#include <strlib.mgh>
と置き換えてください。
#include <stdlib.mgh>
パラメータ参照渡しとは何か、わかりやすく教えてください。ドキュメントを読みましたが、可能であることと、変数の識別の後に修飾子&を付けることが義務付けられていることのみ理解しました。解説付きの小型プログラムがあれば最高なのですが...。通常のパラメータ渡しと、参照によるパラメータ渡しの違いは何ですか?