[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 167

 
flagのようなグローバルまたはスタティックなブーリアン変数を作る。条件が成立し、flag=trueとなった時点で、注文をオープンし、flag=falseとする。これで、注文が終了しても、新しい注文は開きません。条件がなくなったら、再びflag=Trueを設定する。
 
Roger:
flag 型のグローバルまたは静的なブーリアン変数を作成します。条件に達し、flag=trueになったら、注文を出し、flag=falseにする。これで、注文が終了しても、新しい注文は出ません。条件がなくなったら、再びflag=Trueを設定する。

注文が開始されたが、条件Nのために閉じられたことを知るにはどうすればよいですか?なぜなら、多くの条件があり、条件Nがあっても注文が終了したことを保証するものではないからです。

つまり、注文は実行されたが、N条件が発動したため、nキャンドル前にクローズしたことを知る必要がある。そして、条件Nが消え、注文のクローズからローソク足がn本以上経過していなければ、再び注文をオープンすればよい。

 
Xaoss1990:

注文が開始されたが、条件Nのために閉じられたことを知るにはどうすればよいですか?なぜなら、多くの条件があり、条件Nがあるからといって、注文が成立したとは限らないからです。

つまり、注文は成立しているが、N条件のためにnキャンドル前にクローズしていることを知る必要があるのです。そして、条件Nが消え、注文のクローズからローソク足がn本以上経過していなければ、再び注文をオープンする必要があります。


Alert()、Print()をロジックでもっと積極的に使おう!
 
Xaoss1990:

皆さん、アドバイスをお願いします。

N番目の条件が成立し、ストップが かかった場合を想像してください。しかし、ローソク足が何本か続いた後、N番目の条件が崩れました。この関数を使えば、N番目の条件が崩れた後に再び取引を開始することができます。つまり、何本か前にストップがかかったと判断し、N番目の条件が外れたので、再度取引を開始する必要があります


プログラムで注文を開くときに、マジックとコメントがある場合、どの条件で注文が開かれたかという情報をマジックまたはコメントで暗号化することができます。

一般に、ストップは条件によって発動されませんが、価格がある価格水準に達すると - この注文は条件によって閉じることができます。

 
Xaoss1990:

注文が開始されたが、条件Nのために閉じられたことを知るにはどうすればよいですか?なぜなら、多くの条件があり、条件Nがあるからといって、注文が成立するわけではないからです。

つまり、注文は実行されたが、条件Nのトリガーによりnキャンドル前にクローズしたことを知る必要がある。そして、条件Nが消え、注文を閉じてからローソク足がn本以上経過していなければ、再度注文を開く必要があります。

あまり物事を複雑にしたくないということですか?結局のところ、条件Xがあれば、条件Nもあったかもしれないが、注文は締め切られたかもしれないのだ。

例えば、ローソク足 n 本以降に決済された注文を探し出し、決済された時点と現在の時点のイベント N を確認するといった、ポジション管理ロジックに大きく依存する解決方法です。

 
 int CountH,NewCountH,CountL,NewCountL;
 double ResistH,ResistL;
 
 //========================
 
 int start(){

 //--------------------------
   double bid = Bid;
   double UPPprice = bid+3000.0*Point;
   double LOWprice = bid-3000.0*Point;
   NewCountH=0;
   ResistH=0;
   NewCountL=0;
   ResistL=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;
       } 
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+5*Point;
    }
 //----------------------------
 
 return(0);
 }
どうすればこのサイクルを「楽に」できるのか?数えるのにとても時間がかかる。
 
DhP:

どうすればこのサイクルを「楽に」できるのか?数えるのにとても時間がかかる。


って、なんかよくわかんないけど、これ。

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountL++;
どうじょうけん
 
abolk:


うまく伝わらなかったかもしれませんが、ここで。

同じ条件 - CountHとCountLが常に等しい

いいえ、価格がBidより高ければCountH、低ければCountLがカウントされます。
 
DhP:
いいえ、Bidより高ければCountH? 低ければCountL?


を使用すると、計算を高速 化することができます。

reduce i<=6000

 
abolk:


計算を高速化することが可能です。

a) i<=6000
を減らす
b) バーの最初だけ計算 する

a) iの数を減らすことは可能だが、好ましくない。こうして1年分のバーを取る。

b) 小節の冒頭で...。これも選択肢の一つでしょう。M15で動作します。

しかし、いずれにせよ、ほぼ2秒をカウントしています。