マルチカレンシーアドバイザーに関する質問 - ページ 11 1...4567891011121314 新しいコメント Rid 2009.02.18 17:52 #101 Vinin >> : 2つの配列を作成します。1つはチケット番号で、もう1つは値段で。次に、配列を価格順にソートし、同時にチケット番号を移動させます(接続を切断しないように)。そして、配列の一方の端には最低価格、もう一方の端には最高価格が表示されます。あとは、極端な注文を1つ変えるだけです。 >> ありがとうございました。 まだ実質的にアレイを扱ったことがないんです。 例えば、10個のBUYSTOP注文があるとします。私は、彼らの設定価格を設定しました。 double price1 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 1);//цена 1 байстоп double price2 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 2);//цена 2 байстоп double price3 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 3);//цена 3 байстоп double price4 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 4);//цена 4 байстоп double price5 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 5);//цена 5 байстоп double price6 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 6);//цена 6 байстоп double price7 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 7);//цена 7 байстоп double price8 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 8);//цена 8 байстоп double price9 = GetOrderOpenPrice(NULL,OP_BUYSTOP, 9);//цена 9 байстоп double price10= GetOrderOpenPrice(NULL,OP_BUYSTOP, 10);//цена 10 байстоп そして、現在の価格に最も近い価格を注文1とする設定価格の配列を設定しました。 int ArrayCents = { price1,price2,price3,price4,price5,price6,price7,price8,price9,price10 }. また、チケットによる配列の作成方法がよくわからない。オーダーチケットはどこで手に入りますか? Victor Nikolaev 2009.02.18 18:24 #102 このようなものは何ですか // Функция возвращает номер тикета ордера с самой маленькой ценой или с самой большой // По умолчанию сортировка по возрастанию // Только вот что за цену брать, я возьму стоп (цену открытия мы менять не можем) int MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0){ double ArrayPrice[]; int ArrayTicket[]; int Total=OrdersTotal(); int tmpTicket; double tmpPrice; bool bSort=true; ArrayResize( ArrayPrice, Total); ArrayResize( ArrayTicket, Total); int i, count=0; for ( i=0; i< Total; i++) { if (!OrderSelect( i, SELECT_BY_POS)) continue; if (!(OrderSymbol()== lSymbol || lSymbol=="")) continue; if (!(OrderMagicNumber()== lMagic || lMagic==-1))continue; if (!(OrderType()== lOP || lOP==-1)) continue; ArrayPrice[ count]=OrderStopLoss(); ArrayTicket[ count]=OrderTicket(); count++; } if ( count>0) { ArrayResize( ArrayPrice, count); ArrayResize( ArrayTicket, count); while ( bSort) { bSort=false; for ( i=1; i< count; i++) { if ( ArrayPrice[ i-1]> ArrayPrice[ i]) { tmpPrice= ArrayPrice[ i-1]; ArrayPrice[ i-1]= ArrayPrice[ i]; ArrayPrice[ i]= tmpPrice; tmpTicket= ArrayTicket[ i-1]; ArrayTicket[ i-1]= ArrayTicket[ i]; ArrayTicket[ i]= tmpTicket; bSort=true; } } } if ( reversi==0) return( ArrayTicket[0]); else return( ArrayTicket[ count-1]); } return(-1); } コードを確認しなかった。 Rid 2009.02.18 18:28 #103 Vininさん、ありがとうございました。調べてみるよ。 Rid 2009.02.18 22:12 #104 どうやら、このような機能があるようだ。 MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0) Parameters: lSymbol= - シンボル名 ("" - 任意のシンボル、NULL - 現在のシンボル ) lOP=-1 - 操作 (-1 - 任意の順序、ここでは -OP_BUYSTOP ) lMagic=-1 - MagicNumber (-1 - 任意のマジコン) //--------------------------------------------------------------------------------------------- しかし、"int reversi=0 "は何を意味するのか、私にはよくわかりません ! 関数は正常にコピーされました。 0 - 最安値 1 - 最大の? //------------------------------------------------------------------- また、「なぜストップロスを価格としたのでしょうか? また、なぜ初値を変更できないのでしょうか? OP_BUYSTOP - これらは保留中の注文(ポジションではない)であり、イベントの最終結果は特定の注文の開始(トリガー)価格を変更することだけであるため。 KimIVの便利な機能 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 価格速度測定方法 Victor Nikolaev 2009.02.19 03:21 #105 rid писал(а)>> どうやら、このような機能があるようだ。 MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0) パラメータ lSymbol= - 測定器の名前(" - 任意のシンボル,NULL - 現在のシンボル). lOP=-1-operation (-1 - 任意の順序、ここでは -OP_BUYSTOP ) lMagic=-1 - MagicNumber (-1 - 任意のマジック) //--------------------------------------------------------------------------------------------- しかし、"int reversi=0 "は何を意味するのか、私にはよくわかりません ! 関数は正常にコピーされました。 0 - 最小の価格 1 - 最大の? //------------------------------------------------------------------- また、「なぜストップロスを価格としたのでしょうか? また、なぜ初値を変更できないのでしょうか? OP_BUYSTOP-これらは保留中の注文(ポジションではない)であり、最終的に選択した注文の開始価格を変更する必要があることを意味します。 だから、必要な価格を取るんだ。保留中の注文の建値です。例としてやっただけです。 削除済み 2009.02.19 08:51 #106 2次元配列を設定して、1次元目でソートする方が簡単だと思うのですが。そしてそこに、適宜、必要なものを収納することができるのです。あなたの場合は、価格ですね。 double Price_Ticket[][2] int total=OrdersTotal(); ArrayResize( Price_Ticket, total); for (int i=0; i< total; i++) if (OrderSelect( i, SELECT_BY_POS)) { Price_Ticket[ i][0]=OrderOpenPrice(); Price_Ticket[ i][1]=OrderTicket(); } ArraySort( Price_Ticket); TheXpert 2009.02.19 12:03 #107 Xupypr >> : 2次元配列を設定して、1次元目でソートする方が簡単だと思うのですが。そして、そこには、それに応じて、必要なものを置くことができます。あなたの場合、それは価格です。 SetIndexBuffer(0, Test); SetIndexStyle(0, DRAW_HISTOGRAM); //---- indicators //---- double Price_Ticket[][2]; int size = 10; ArrayResize( Price_Ticket, size); イナテにあります。七面鳥が吊るされているところです。スタート関数は空、ビルド220。 Rid 2009.02.23 19:30 #108 Vinin >> : だから、好きな値段でどうぞ。ペンダントの場合は、初値を取ってください。あくまで例としてですが。 仮に、10個のバイストップ注文が設定されているとします。順番に決まっているわけではなく、時間軸で区切られているのです。 現在、現在の価格から最も離れている注文を削除したいのですが。 この注文の探し方は正しいのでしょうか?- //****************************** 追伸 コメントで関数を挿入しています。 Comment( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 ); しかし、"-1 "が返され続けています。チャート上には5から10個のオーダーがありますが。 どこかが間違っているのでは... // Функция возвращает номер тикета ордера с с самой // малой или , int reversi=0,большой ценой // По умолчанию сортировка по возрастанию int MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0 ){ double ArrayPrice[]; int ArrayTicket[]; int Total=OrdersTotal(); int tmpTicket; double tmpPrice; bool bSort=true; ArrayResize( ArrayPrice, Total); ArrayResize( ArrayTicket, Total); int i, count=0; for ( i=0; i< Total; i++) { if (!OrderSelect( i, SELECT_BY_TICKET, MODE_TRADES)) continue; if (!(OrderSymbol()== lSymbol || lSymbol=="")) continue; if (!(OrderMagicNumber()== lMagic || lMagic==-1))continue; if (!(OrderType()== lOP || lOP==-1)) continue; ArrayPrice[ count]= OrderOpenPrice(); ArrayTicket[ count]=OrderTicket(); count++; } if ( count>0) { ArrayResize( ArrayPrice, count); ArrayResize( ArrayTicket, count); while ( bSort) { bSort=false; for ( i=1; i< count; i++) { if ( ArrayPrice[ i-1]> ArrayPrice[ i]) { tmpPrice= ArrayPrice[ i-1]; ArrayPrice[ i-1]= ArrayPrice[ i]; ArrayPrice[ i]= tmpPrice; tmpTicket= ArrayTicket[ i-1]; ArrayTicket[ i-1]= ArrayTicket[ i]; ArrayTicket[ i]= tmpTicket; bSort=true; } } } if ( reversi==0) return( ArrayTicket[0]); else return( ArrayTicket[ count-1]); } return(-1); } Victor Nikolaev 2009.02.23 20:14 #109 rid писал(а)>> 仮に、10個のBystopオーダーが発注されたとします。順番に並べるのではなく、時間軸で区切っています。 現在、現在の価格から最も離れている注文を削除したいのですが。 この注文の探し方は正しいのでしょうか?- //****************************** 追伸 コメントに関数を入れました。 Comment( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 )); しかし、この関数は常に"-1 "を返します。チャート上には5から10個のオーダーがありますが。 どこかにエラーがあるのでは...? Comment( MiniMaxOrderPrice("", -1, OP_BUYSTOP, 1 )); // 任意のシンボル Comment( MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )); // 現在のシンボル Rid 2009.02.23 20:47 #110 よっしゃーVininさん、ありがとうございました。 機能が働いているようですさらに調べてみます! 1...4567891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
2つの配列を作成します。1つはチケット番号で、もう1つは値段で。次に、配列を価格順にソートし、同時にチケット番号を移動させます(接続を切断しないように)。そして、配列の一方の端には最低価格、もう一方の端には最高価格が表示されます。あとは、極端な注文を1つ変えるだけです。
>> ありがとうございました。
まだ実質的にアレイを扱ったことがないんです。
例えば、10個のBUYSTOP注文があるとします。私は、彼らの設定価格を設定しました。
そして、現在の価格に最も近い価格を注文1とする設定価格の配列を設定しました。
int ArrayCents = { price1,price2,price3,price4,price5,price6,price7,price8,price9,price10 }.
また、チケットによる配列の作成方法がよくわからない。オーダーチケットはどこで手に入りますか?
このようなものは何ですか
コードを確認しなかった。どうやら、このような機能があるようだ。
MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0)
Parameters:
lSymbol= - シンボル名 ("" - 任意のシンボル、NULL - 現在のシンボル )
lOP=-1 - 操作 (-1 - 任意の順序、ここでは -OP_BUYSTOP )
lMagic=-1 - MagicNumber (-1 - 任意のマジコン)
//---------------------------------------------------------------------------------------------
しかし、"int reversi=0 "は何を意味するのか、私にはよくわかりません !
関数は正常にコピーされました。
0 - 最安値
1 - 最大の?
//-------------------------------------------------------------------
また、「なぜストップロスを価格としたのでしょうか?
また、なぜ初値を変更できないのでしょうか?
OP_BUYSTOP - これらは保留中の注文(ポジションではない)であり、イベントの最終結果は特定の注文の開始(トリガー)価格を変更することだけであるため。
どうやら、このような機能があるようだ。
MiniMaxOrderPrice(string lSymbol="", int lMagic=-1, int lOP=-1, int reversi=0)
パラメータ
lSymbol= - 測定器の名前(" - 任意のシンボル,NULL - 現在のシンボル).
lOP=-1-operation (-1 - 任意の順序、ここでは -OP_BUYSTOP )
lMagic=-1 - MagicNumber (-1 - 任意のマジック)
//---------------------------------------------------------------------------------------------
しかし、"int reversi=0 "は何を意味するのか、私にはよくわかりません !
関数は正常にコピーされました。
0 - 最小の価格
1 - 最大の?
//-------------------------------------------------------------------
また、「なぜストップロスを価格としたのでしょうか?
また、なぜ初値を変更できないのでしょうか?
OP_BUYSTOP-これらは保留中の注文(ポジションではない)であり、最終的に選択した注文の開始価格を変更する必要があることを意味します。
だから、必要な価格を取るんだ。保留中の注文の建値です。例としてやっただけです。
2次元配列を設定して、1次元目でソートする方が簡単だと思うのですが。そしてそこに、適宜、必要なものを収納することができるのです。あなたの場合は、価格ですね。
2次元配列を設定して、1次元目でソートする方が簡単だと思うのですが。そして、そこには、それに応じて、必要なものを置くことができます。あなたの場合、それは価格です。
だから、好きな値段でどうぞ。ペンダントの場合は、初値を取ってください。あくまで例としてですが。
仮に、10個のバイストップ注文が設定されているとします。順番に決まっているわけではなく、時間軸で区切られているのです。
現在、現在の価格から最も離れている注文を削除したいのですが。
この注文の探し方は正しいのでしょうか?-
//******************************
追伸
コメントで関数を挿入しています。
Comment( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 );
しかし、"-1 "が返され続けています。チャート上には5から10個のオーダーがありますが。
どこかが間違っているのでは...
仮に、10個のBystopオーダーが発注されたとします。順番に並べるのではなく、時間軸で区切っています。
現在、現在の価格から最も離れている注文を削除したいのですが。
この注文の探し方は正しいのでしょうか?-
//******************************
追伸
コメントに関数を入れました。
Comment( MiniMaxOrderPrice(NULL, -1, OP_BUYSTOP, 1 ));
しかし、この関数は常に"-1 "を返します。チャート上には5から10個のオーダーがありますが。
どこかにエラーがあるのでは...?
Comment( MiniMaxOrderPrice("", -1, OP_BUYSTOP, 1 )); // 任意のシンボル
Comment( MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )); // 現在のシンボル
よっしゃーVininさん、ありがとうございました。
機能が働いているようですさらに調べてみます!