どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 614

 
yan720:
ご回答ありがとうございました。もし差し支えなければ、あなたが話しているEA(またはチャネルと一緒になっているその一部)を送ってください - 別の実装を見るのは興味深いことです。

数年前に作ったものでは意味がない。以前は動作して取引していた記憶があるのですが、なぜか動作していません。まずコードを整理して、修正してから投稿させてください。明日にでも。ただ、子供じみたミスがあっても、恥をかきたくない。

 
yan720:

もちろん、一般的な考え方はこうです。また、チャンネルの幅(あなたの場合は範囲)はどのように決めているのでしょうか?私は平均的なろうそくの大きさに加えて、チャネルの存在は、バーの厳格な数ではなく、例えば、10〜30バーの長さでチェックされているので、それは、チャネルの長さにすべて結びついているを介してそれを行います。

気になるのは、長さから幅を選択する問題ですが...。

チャンネル幅の外部パラメータを1つのインジケータで複数作成することができます。そして、各パラメーターごとに別々の計算をする。

 

長さについても、同じことが言えます。

削除済み  
Example2:
こんにちは。バスケットエキスパートアドバイザーは、この条件が来たときにすべての注文を閉じるべきですが、まず注文を閉じてから、もう一度閉じようとし(サーバーは「無効なチケット」というエラーを出します)、そのときだけ先に進んでしまうのです。以下は、サンプルコードとEA 本体です。

あなたの関数CloseOrders()では、注文が閉じられた場合、while(cnt<=5 ) サイクルは、もう一度注文を閉じるためのコードを送信し、エラーが発生します、もちろん、その後 if()を介して終了 します。が壊れる。

                    int cnt=0;
                    while(cnt<=5){
                      Result[0]=OrderClose(OrderTicket(),OrderLots(),MarketInfo("USDCAD",MODE_BID),slip,Blue);
                      if(!Result[0]){
                        Answer=ERRORS(GetLastError());
                        if (Answer==1)continue; cnt++;
                        if (Answer==2)break;
                      }
                    }

ProtectionClose()関数の中で、すでに正しいwhile exitの行が追加 されていますね。

 if(Result[0])break;
 }continue;
ここを掘ってみてください。
 
pu6ka:

あなたの関数CloseOrders()では、注文が閉じられた場合、while(cnt<=5) サイクルは、もう一度注文を閉じるためのコードを送信し、エラーが発生します、もちろん、その後 if()を介して終了 します。が壊れる。

ProtectionClose()関数の中で、すでに正しいwhile exitの行が追加されています。

ここで少し調べてみてください。


しかし、私が説明したケースでは、注文をクローズするのはProtectionClose()関数である。その誤りを訂正します。
削除済み  
Example2:

しかし、私が説明したケースで注文をクローズするのは、ProtectionClose()関数です。そのエラーは修正します。

コードを深く掘り下げていない、テスターで実行できなかった、インジケータがない。

でも、例えば、OpenUsdbuy(); OpenSellusd()という関数は連続していますね。

OpenSellusd()はGBPUSD、EURUSD、AUDUSD、NZDUSDなどをオープンします。NZDUSD、AUDUSDなどの逆順でいち早くクローズすることになります。

ProtectionClose()関数では、USDCAD、USDCHF、USDJPYの3ペアだけが2つのバリエーションでWhile exitを持っています。

他の通貨では、エラー if(!Result[...]) によってのみ while() を終了することができます。

[Deleted]  
FOReignEXchange:

チャンネル幅の外部パラメータを1つのインジケータで複数作成することが可能です。そして、各パラメーターごとに別々の計算をする。

エキスパートアドバイザー/インジケータは、通貨ペアや現在のボラティリティに関係なく、チャネルの存在を検出する必要があります。そのため、外部パラメータからチャンネルの最小・最大長だけを設定し、これはアルゴリズムをデバッグする過程でのみ行い、その後、これらのパラメータを縫い付けることにしています。現段階では、いくつかの不満があります。チャンネルは大体つかめるのですが(画像は動作中のコードから取りました)、この問題の他の解決策も見てみたいです。

 
pu6ka:

コードを深く掘り下げていない、テスターで実行できなかった、インジケータがない。

でも、例えば、OpenUsdbuy(); OpenSellusd()という関数は連続していますね。

OpenSellusd()はGBPUSD、EURUSD、AUDUSD、NZDUSDなどをオープンします。NZDUSD、AUDUSDなどの逆順でいち早くクローズすることになります。

ProtectionClose()関数では、USDCAD、USDCHF、USDJPYの3ペアだけが2つのバリエーションでWhile exitを持っています。

他の通貨では、エラーによってのみ while() を終了することができます if(!Result[...])


ご指摘ありがとうございます、今回はループを残すのを忘れていました、これで動くはずです。 もしよろしければ、お礼にインジケータを貼り付けますので、よろしくお願いします。
 
yan720:

もちろん、一般的な考え方はこうです。また、チャンネルの幅(あなたの場合は範囲)はどのように決めているのでしょうか?私は平均的なろうそくの大きさに加えて、チャネルの存在は、バーの厳格な数ではなく、例えば、 10〜30バーの長さにチェックされているので、それは、チャネルの長さにすべて結びついているを介してそれを行います。

気になるのは、「長さから幅を選ぶ」という問題ですが...。

この10小節の長さが基本数値です。10人以上ということですが...。と長くなれば運命です。外部に持ち出して実験できるようにする。範囲はキャンドルの平均的な大きさでも構わないが、外にも置いた方がいい。そして、すべてのバーで、この10本のバーのローソク足の平均サイズをチェックし、自分に合っていれば、10本のバーの上下にトレンドを描画します。そして次のバーでは、すでに11本のバーをチェックし、条件に違反していなければ、ObjectSet(...); 最初の座標でOBJPROP_PRICE1だけが 変化しOBJPROP_PRICE2と OBJPROP_TIME 2はすべてのバーで同じ ことを行います。あるいは、何も再計算せず、すでに形成されたチャネルとみなし、このチャネルのブレイクダウンを待ってもよい。これはお好み次第です。

まあ、私の場合、チャンネルの高さとバーの 最小本数も割り当てるために、提灯から軽いオプションを提案したのですが。


yan720:

エキスパートアドバイザー/インジケータは、通貨ペアや現在のボラティリティに関係なく、チャネルの存在を検出する必要があるため、私は強制的に チャネル幅を設定 したくないということです。そのため、外部パラメータからチャンネルの最小・最大長だけを設定し、これはアルゴリズムをデバッグする過程でのみ行い、その後、これらのパラメータを縫い 付けることにしています。現段階では、いくつかの不満があります。チャンネルは大体つかめるのですが(画像は動作中のコードから取りました)、この問題の他の解決策も見てみたいです。

さて、まず、パラメータは外付けでも埋め込みでも違いはないでしょう。そして2つ目は、チャンネルの幅を設定しない場合、指定した10本のバーを計算するときに何と比較するのか、ということです。チャンネルかどうかは、どのように判断するのですか?そして第三に、イミフですが、平均的なキャンドルの大きさは十分に機能しないでしょう。10本すべてのバーが強気であっても、平均バーサイズがチェックより大きくない場合。チャンネルなのか、そうでないのか?チャネルといっても、傾斜しているだけで、図面によると水平のものを解析しているのです。
 
yan720:

エキスパートアドバイザー/インジケータは、通貨ペアや現在のボラティリティに関係なく、チャンネルの存在を判断する必要があります。そのため、最小・最大チャンネル長を外部パラメータで設定するのですが、これはアルゴリズムをデバッグする過程だけで、その後はこれらのパラメータを縫い付けていくことになります。現段階では、いくつかの不満があります。全体としてチャンネルは捕捉されていますが(写真はあくまで動作中のコードから)、この問題に対する他の解決策も見てみたいです。

さて、例えば5~10本のローソク足で構成されるトップフラクタルや iHighestを2つ連続して捉えるという考え方もあります。このケースは、ある長さの範囲内でキャッチしています。これらのピークの値が互いに近ければ、この2つのピークの間でiLowestを見つけることができます。

同様に、まず2つの低いピークを探し、その間にある高いピークを探します。

そして、その見つけた峰の上で踊るのです。まず、彼らによってレベルを描きます。そして、さらに考えるためのコードを教えるのです。

このオプションにより、Channel_widthなどの外部パラメータが不要になります。

どう考えても、少なくとも長さのパラメーターは必要だと思うんです。