int searchPeriod=(Search_Period<1)?1:Search_Period; // 文字 "?", ":" の意味は?
input int Delta=2; // 入室点数
int delta=(Delta<0)?0:Delta; // 記号 "?", ":" の意味は?
// строку int searchPeriod=(Search_Period<1)?1:Search_Period;// можно расписать так:inputint Search_Period=10; // Количество копируемых свечей ... эту строку вы видите в настройкахint searchPeriod; // Сюда будем записывать входной параметрif(Search_Period<1) searchPeriod=1; // Если во входном параметре ввели ноль или меньше нуля, то параметр будет равен единицеelse searchPeriod=Search_Period; // иначе примем входной параметр// соответственно и строку int delta=(Delta<0)?0:Delta;// можно расписать точно так же
買いまたはベアグリップシグナルで注文を開くという考え方ですが、売り買いの取引と注文待ちの 取引が1つずつしかないようにするには、私は取引の1ティックごとに1つずつ開いているのです。問題解決に貢献する。
さて、ここでもう一つの方法として、マッチはレンジ内の各ローソク足に対して書き込まれます。以前のバージョンでは、マッチは1つのキャンドルに対してのみ書かれていました。つまり、このキャンドルとマッチするものは書かれていませんでした。
アルテム ありがとうございます。調べてみます。
高い値は丸めることができる。例えば、1.23456という値を1.2346に丸めることができる。
なるほど、そういうことだったのか。また、設定に変数を追加し、高さの値が等しいと見なす偏差を指定できるようにしました。4桁の引用符なら問題ないことが多いが、5桁の 引用符の場合、完全一致の検索が無限に可能だからだ。
アルテム ありがとうございます。調べてみるよ。
丸め方が明確です。また、設定に変数を入れて、Highの値が等しいと見なす偏差値を指定できるようにしました。4桁の引用符なら問題ないのですが、5桁の引用符の場合、完全一致を探すときりがないので必要なのです。
どういたしまして。第2版では、不正確な表現をしてしまいました。最初のバージョンでは、ループインデックスから次のローソク足からマッチを検索していたので、メインループのパスはローソク足の数から1を引いた数で、一番外側の2本のローソク足を比較するようになっていました。さて、2番目のバージョンでは、それぞれのローソク足について、全範囲で一致するものを検索します。
に変更する必要があります。
新しいポジションを開く、または新しい保留注文を出す前に、設定された注文の数と未決済のポジションの数を確認します。
つまり、取引条件の中に、注文 数やポジション数をチェックする条件を追加する必要があるのでは?
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&h2>h1&h1<o2&o1<c1&&l2>l1&&o3>c3&&o4>c4){ //first condition
if (OrdersTotal()==0) //第二条件
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0); }......................................................................................
また、オープンポジションの数をカウントするのはどの機能ですか?
問題を解決できたと思う。
if (Hour()>=0&Hour()<23){。
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
if (PositionsTotal()<=1))
OrderSend(Symbol(), OP_BUY,Lot,o,10,l1,0); }.//購入する
if (o4>c4&&o3>c3&&l2>l1&&c2<c1&&o2>c2&&o1<c1&&c1>o2&&h1>h2||o2>c1&&h2>h1&&h1<o2&&o1<c1&&l2>l1&&o3>c3&&o4>c4){
if (PositionsTotal()==1&OrderType()==0)
OrderSend(Symbol(), OP_SELLSTOP,Lot,l2,10,h2,0);}.//SellStop注文の延期
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
if (PositionsTotal()<=1))
OrderSend(Symbol(),OP_SELL,Lot,o,10,h1,0); }.//売り出し中
if (o4<c4&&o3<c3&&h2<h1&&c2>c1&&o2<c2&&o1>c1&&c1<o2&&l1<l2||o2<c1&&l2<l1&&l1>o2&&o1>c1&&h2<h1&&o3<c3&&o4<c4){
if (PositionsTotal()==1&OrderType()==1)
OrderSend(Symbol(), OP_BUYSTOP,Lot,h2,10,l2,0);}.//BuyStop注文の延期
}
//+------------------------------------------------------------------+
//オープンポジションの合計額を返す関数|FAQ|株式会社日立製作所
//|
//+------------------------------------------------------------------+
int PositionTotal() {
int pos = 0;
for (int i=0; i<OrdersTotal(); i++){
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
pos++です。
}
return(pos);
}
//+------------------------------------------------------------------+
さて、ここでもう一つの方法として、マッチはレンジ内の各ローソク足に対して書き込まれます。以前のバージョンでは、マッチは1つのキャンドルに対してのみ書かれていました。つまり、このキャンドルとマッチするものは書かれていませんでした。
よかったです。しかし、私が見る限り、ローソク足2の高値とローソク足7の安値が一致すれば、2 <=> 7、7 <=> 2という2つのマッチが見つかります。また、逆ペアを考慮し、余計なループがない場合はどうでしょう?
ネストしたforループを使わずに、1パスで解決できないものでしょうか:)))?
グッドです。しかし、私の理解では、ローソク足2の高値とローソク足7の高値が一致すれば、2 <=> 7、7 <=> 2となり、逆ペアを考慮しても、余分なループがなければ、どうでしょうか?
ネストしたforループを使わず、一気に解決するのはどうでしょう:)))?
:)弱い 私を演じようとしないでください;)もちろん、1つのループで解決できると思うのですが、あまり長く考えるのは億劫で、思いついたまま一気にやってしまいました。
当然ながら、ここではペアとなった複数のローソク足すべてが、各ローソク足のマッチングデータに記録される。それゆえ、相互に参照し合っているのです。何のためにあるのかわからないまま、バリエーションを提案しているだけなのです。
また、さらに計算の最適化という課題も解決できますが、私には必要ありません。
あなたは正確に各キャンドルとすべてのマッチのためのデータが必要な場合は、どのような場合は、どのような場合は、どのような場合は、...しかない
だから、時間もないし、欲もない。自分でコードを書く代わりに、時間を浪費してしまったのです。
SZYさん、必要な入力パラメータを把握した上で、コホネンメソッドを接続することも必要かもしれませんね。
一般的には - 時間も欲もない。それで、自分でコードを書く代わりに時間を浪費してしまったのです。
残念、残念。
どういたしまして。第2版では、不正確な表現をしてしまいました。最初のバージョンでは、ループインデックスから次のローソク足からマッチングを探すため、メインループはローソク足の数から1を引いた数で渡され、一番外側の2本のローソク足を比較するようにしました。さて、2番目のバージョンでは、それぞれのローソク足について、全範囲で一致するものを検索します。
に変更する必要があります。
このセリフの意味を教えてください。
input int Search_Period=10; // コピーするローソク足の本数
int searchPeriod=(Search_Period<1)?1:Search_Period; // "?", ":" の記号は何を意味しているのでしょうか?
input int Delta=2; // 入室点数
int delta=(Delta<0)?0:Delta; // 記号 "?", ":" の意味は?
このセリフの意味を教えてください。
input Search_Period=10; // コピーするローソク足の本数
int searchPeriod=(Search_Period<1)?1:Search_Period; // 文字 "?", ":" の意味は?
input int Delta=2; // 入室点数
int delta=(Delta<0)?0:Delta; // 記号 "?", ":" の意味は?
参考資料より
条件演算子 ?
三項演算 子の一般的な形式は次のようになる。
expression1? expression2: expression3
最初のオペランドとして、expression1 には、bool 型の値を返す任意の式を指定できる。結果が 真 であれば、第2オペランドで指定された演算子expression2が実行 される。
第1オペランドが 偽の 場合、第3オペランドであるexpressionZが 実行される。2番目と3番目のオペランド、すなわち "expression2 "と "expressionZ "は、同じ型の値を返さなければならず、void型であってはならない。条件演算子の実行結果は、"expression1 "の結果に応じて、"expression2 "の結果、または "expression3 "の結果となる。
//--- 始値と終値の差を日較差で再正規化する。
double true_range = (High==Low)?0:(Close-Open)/(High-Low);
このエントリーは、以下と同等です。
double_range。
if(High==Low)true_range=0;// HighとLowが等しい場合
else true_range=(Close-Open)/(High-Low);// Highが0でない場合