[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 203

 
こんにちは、0か1のどちらかの数字をランダムに選択するコマンドを(あれば)教えてください、よろしくお願いします。
 
hoz:


まずは、必要な場所にブラケットを設置することに慣れることですね。こんな感じ。

実際には、固定値ではなく、時間的な幅を持たせる必要があります。あなたの論理はまったく正しくありません。 1時間or3時間ではなく、1時間~3時間!!!!
ありがとうございます、間違えました
 
stater:
こんにちは、0か1のどちらかの数字をランダムに選択するコマンドを(あれば)教えてください、よろしくお願いします。
int x =MathRand() % 2;
 

Expert Advisor のテスト中に、コード実行のエラーを発見しました。
- ループの実行 for(i=0;i<OrdersTotal();i++) は、次のティックで中断されます(下図太字)。
- 買い注文は、任意の順序で選択・決済されます。

原因の究明と解決方法を教えてください。
以下は、プログラムのコードとテスターのログからの報告です。

プログラムコード

//+------------------------------------------------------------------+
//|Poligon1.mq4|(エムキューブ
//| 著作権 © 2012, MetaQuotes Software Corp.
//| ループ演算子のテスト。|
//+------------------------------------------------------------------+
#property copyright"著作権 2012, MetaQuotes Software Corp."
#プロパティリンク ""
//+------------------------------------------------------------------+
//宣言された変数|
//+------------------------------------------------------------------+
int Mn=357;//マジックナンバー
int i;// 繰り返しカウンタインデックス
ダブルPriTP;//TPシリーズ
int Tick;//Tick カウンター
//+------------------------------------------------------------------+
//|エキスパート初期化関数|
//+------------------------------------------------------------------+
int init()
{
//----設定オーダー
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);//...
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE);//。
OrderSend(Symbol(),OP_BUY,1.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//...
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//...
OrderSend(Symbol(),OP_BUY,3.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//...
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,
Ask+250*Point,NULL,Mn,0,CLR_NONE);//。
オーダー送信(Symbol(),OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point)を行います。
Ask-750*Point,NULL,Mn,0,CLR_NONE);//。
//----
PriTP=Bid;//PriTP
Print("Kc0:",OrdersTotal=",OrdersTotal());//」と表示します。
//----
return(0)です。
}
//+------------------------------------------------------------------+
//|エキスパート初期化関数|
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//|エキスパートスタート機能|
//+------------------------------------------------------------------+
int start()
{
//----チックカウンタ
Tick++;/Tick
//----買い注文を終了する
for(i=0;i<OrdersTotal();i++)// ループを初期化する。
{
Print("Kc1:"," Tick=",Tick," i=",i);//Message
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)/Select order iを選択する。
{
if(OrderSymbol()==Symbol())/Symbol(記号)
{
if(OrderMagicNumber()==Mn)// 識別番号
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//The transaction type of current selected order(現在選択されている注文の取引タイプ
{
オーダークローズ(オーダーチケット(),オーダーロット(),ビッド,0,CLR_NONE);//ポジションをクローズする
}/Closed if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}// Closed if(OrderMagicNumber()==Mn)
}// Closed if(OrderSymbol()==Symbol()の場合)
}// Closed if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}// Closed for(i=0;i<OrdersTotal();i++)
//----
return(0)です。
}

テスターのログブックに記載された内容。

2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0
2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:03 2012.09.03 00:00 Poligon1 EURUSD,M15: Close #4 Buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25770
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Close #2 Buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Close #3 Buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: オープン #7 セルストップ 3.00 EURUSD at 1.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 開く #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok.
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 開く #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok.
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok.
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: 開く #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok.
2013.03.01 12:11:21 Poligon1テスト開始
2013.03.01 12:11:21 18:30 Poligon1 EURUSD, M15:正常にロードされました。

リーズナブル。シュルキン

 
Shurkin:

Expert Advisor をテストする際に、コードにいくつかのエラーが検出されました。
- ループ演算子 for(i=0;i<OrdersTotal();i++) の実行は、次のティックで中断されます(下図太字)。
- 買い注文はランダムな順番で選択され、決済されます。

リーズナブル。シュルキン


1.init()関数で注文を開くことができない(Strategy Testerでは可能だが、デモでは動作しない)。

2.注文を閉じるときは、これまでと逆にせず、終わりから始まりに数えるようにします。

 
Shurkin:

Expert Advisor のテスト時に、コード実行エラーが検出されました。
- ループ文 for(i=0;i<OrdersTotal();i++) の実行が次のティックで中断される(以下太字で強調)、
- 買い注文がランダムに選択および決済される。

原因の究明と解決方法を教えてください。
以下は、プログラムのコードとテスター日誌の報告です。

プログラムのコードです。

//+------------------------------------------------------------------+
//|Poligon1.mq4 |
//| Copyright 2012, MetaQuotes Software Corp.|
//| ループ演算子のテスト。|
//+------------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#プロパティリンク ""
//+------------------------------------------------------------------------------+
//|宣言された変数|
//+------------------------------------------------------------------------------+
int Mn=357;// マジックナンバー
int i;//イテレーションカウンタ
double PriTP;//TP series
int Tick;//Tick counter
//+-----------------------------------------------------------------------------
//|エキスパート初期化関数|
//+------------------------------------------------------------------------+
int init()
{
//注文を設定する
OrderSend(Symbol(),OP_BUY,0.5,Ask,0,Bid-350*Point,Ask+350*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1,Ask,0,Bid-250*Point,Ask+250*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,1.0,Bid-150*Point),Mn,0,CLR_NONE, NULL,350*Point, NULL,Mn,0,CLR_NONE);// OrderSend(Symbol(C),C), OP_BUY, 1.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,2.5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUY,3.5,3,Bid-140*Point,NULL,Mn,0,CRL_NONE)5,Ask,0,Bid-150*Point,Ask+150*Point,NULL,Mn,0,CLR_NONE);//
OrderSend(Symbol(),OP_BUYLIMIT,1,Ask-150*Point,0,Bid-400*Point,Point,
Ask+250*Point,NULL,Mn,0,CLR_NONE)を送信。//
OrderSend(Symbol(,OP_SELLSTOP,3,Ask-300*Point,0,Bid+150*Point,Point,
Ask-750*Point,NULL,Mn,0,CLR_NONE);//
//----
PriTP=Bid;//PriTP
Print("Kc0."。"," OrdersTotal=",OrdersTotal());//PriTP
//----
return(0);
}
//+----------------------------------------------------------------+
//|エキスパート初期化関数|
//+------------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+--------------------------------------------------------+
//|エキスパートスタート関数|
//+------------------------------------------------------------------------+
int start()
{
//----Counter Tick
Tick++;//Tick
//----Close BUY Orders
for(i=0;i<OrdersTotal();i++)//initialise loop
{
Print("Kc1:"," Tick=",Tick," i=",i);/Send message
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)/Select order i
{
if(OrderSymbol()==Symbol())//Symbol
{
if(OrderMagicNumber()==Mn)// 識別番号
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//The operation type of the current selected order
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);/Closing position
}/Closed if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}/Closed if(OrderMagicNumber()==Mn)
。}// クローズ if(OrderSymbol()==Symbol()
}// クローズ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}// Closed for(i=0;i<OrdersTotal();i++)
//----
return(0);
} }.

テスターのログエントリ。

2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=5 i=1
2013.03.01 12:12:57 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=5 i=0
2013.03.01 12:12:57 2013.09.03 00:00Polig on1 EURUSD,M15: Kc1: Tick=5 i=1 2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=4 i=1
2013.03.01 12:12:33 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=4 i=0
2013.03.01 12:12:09 2012.03.01 12:12: Kc1: Tick=1 i=1 2013.03.01 12:12: 00Polig on1 EURUSD,M15: Kc1: Tick=4 i=1 2012.03.01 12:12: 0003 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=3 i=1
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25773.25770
2013.03.01 12:12:09 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=3 i=0
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=2
、2013.03.01 12:10:30 2012.09.03 00:00Poligo n1 EURUSD,M16: Kc1: Tick=3 i=3 、2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=2 i=1
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 at price 1.25768
2013.03.01 12:11:45 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=2 i=0
2013.03.01 12:11:21 2012.09.01.03 03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=3
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 at price 1.25773.M15: close #5 buy 3.50 EURUSD at 1.25616 tp: 1.25923 at price 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=2
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.M15.25773 sl: 1.25616 tp: 1.25923 at price 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1: Tick=1 i=1
2013.03.01 12:11:21 2012.09.01: 08.03 00:00 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 at 1.25766
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc1:Tick=1 i=0
・2013。03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: Kc0: OrdersTotal=7
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.M15.25473 sl: 1.25916 tp: 1.25023 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.25623 sl: 1.25366 tp: 1.26023 ok
2013.03.01.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #4 buy 2.50 EURUSD,M15: open #4 buy 3.50 EURUSD at 1.25616 tp: 1.25616 ok 2012.09.02 11:22 2012.09.03 00:0050 EURUSD at 1.25773 sl: 1.25616 tp: 1.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.25773 sl: 1.25616 tp: 1.25616.25923 ok
2013.03.01 12:11:21 2012.09.03 00:00 Poligon1 EURUSD,M15: open #2 buy 1.00 EURUSD at 1.25773 sl: 1.25516 tp: 1.26023 ok
2013.03.01 12:11:21 2012.09.01: 12:11.03 00:00:00 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.25773 sl: 1.25416 tp: 1.26123 ok
2013.03.01 12:11:21 Poligon1 test started
2013.03.01 12:11:21 Poligon1 EURUSD,M15: loaded successfully.

リーズナブル。シュルキン

私はあなたの混乱を全部見たわけではありません(添付するには入力フィールドの上にあるSRCボタンを使用する必要があります) - ページ上のすべてのコードを精査するのは良いことではありませんが、最初に私の目を引いたのは、行 for(i=0; i<OrdersTotal() ; i++) .それを閉じるには、逆ループを使用します: for(i=OrdersTotal()-1; i>=0; i-- )
 
Roger:
int x =MathRand() % 2;


なぜ、他の数値ではなく、0や1を返すのでしょうか?ヘルプによるとMathRand() は0から32767の間の疑似乱数整数を返します。
 
hoz:

また、なぜ他の数値ではなく、0や1を返すのでしょうか?結局、MathRand() によれば、0から32767の範囲の疑似乱数の整数が返されます。

これが残部 です!算数のステップとプリンターの中を覗いてみてください

入れても、2つの結果を交互に見るだけです。

  int x =MathRand() % 2;
  Print("x =",x);
 
皆さん、こんにちは。Expert Advisorは、相場に入る 条件が揃うと、ログファイルに「注文が発生しました!」と書き始め、1分間に数十回行い、その結果、ログファイルが宇宙規模で巨大化するので、これを止める方法を知りたいです。数時間ハングアップする可能性があるので、一度だけ、しかもポジションクローズ前に書き込むようにするにはどうしたらいいでしょうか...。
 
Allis:
皆さん、こんにちは。Expert Advisorは、相場に入る条件が揃うと、ログファイルに「注文が発生しました!」と書き始め、1分間に数十回行い、その結果、ログファイルが宇宙規模で巨大化するので、これを止める方法を知りたいです。数時間ハングアップする可能性があるので、一度だけ、しかもポジションを閉じる前に書き込むようにするにはどうしたらいいでしょうか...。
ハロー、アリス! プリントは、ダニによる読み取りがない場合、規定する必要があります!私は、エラーがある場合、プリントに入れ、それが開かれた場合、ので、開かれた雑誌に書かれ、一度だけです