[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 487

 
midorum:

それはとてもシンプルなことです。ブーリアン変数を作成します。注文を処理する前にfalseに設定する。注文が処理されたら、すぐにtrueに変更する。すべてのオーダーをチェックした後、変数の値をチェックします。もしこの値が false のままなら、必要なマジックを使ったオーダーがなかったということです。新しいオーダーを開くのです。

ありがとうございました。
 

私はATR インジケータの仕組みを理解し、同時にそのコードを勉強することにしました。大まかな内容は分かったが、変な書き方をしている。

そのスタート 機能を紹介します。

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

ここで、最初の混乱のブロックを紹介します。

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

counted_barsの値が<1であれば、何かする 意味はあるのでしょうか?私見ですが、これはインジケータがバーをカウントしていないことを意味し、まだ値がないため関数を終了させればよいと思います...。キャッチは何ですか?

なぜAtrBufferは[Bars-i] というインデックスを持っているのですか?値がない場合はバッファを 0.0にする、ということだと理解しました。しかし、値0.0は(Bars) から(AtrPeriod)までのバーに対してのみ定義されており、AtrPeriodから 0番目のバーまでは 何もバッファに書き込まれないことが判明しました。なぜ?

このコードのロジックは理解できません。

次のブロックでは

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

行列の中に。

if(i==Bars-1) TempBuffer[i]=high-low;

i==Bars-1 の場合、条件。左のチャートの先頭から1本目の バーの値が考慮されているように見えますが・・・。しかし、これは非常に遠い、この値は何の役に立つのか?

 

助けてくれ!

EAをあるドローダウンレベル、例えば30%ですべての未決済注文と保留注文を 閉じ、その後再起動して最初からやり直すようにするにはどうすればよいですか?

ファイル:
 
OrderSend
(  string symbol, int cmd, double volume, double price, int slippage,
double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

注文の発注機能でdatetime expiration パラメータをどうすれば、保留中の注文が 5分後に削除されるようになるのか教えていただけませんか?TimeCurrent()+300 なのか、そうでないのか?

 
BeerGod:

注文の発注機能でdatetime expiration パラメータをどうすれば、保留中の注文が5分後に削除されるようになるのか教えていただけませんか?TimeCurrent()+300 なのか、そうでないのか?

は秒数なので、5分だと300になります。ストップ・アンド・プロフィットなしのオープニングの 時間とクローズの時間を使ってみて、それをプリントアウトすれば、そこで比較することができます。
 
こんにちは。
 
laveosa:
こんにちは。
ノーマルやセントなど、どのようなアカウントを使っているかによりますので、わかりません。0.01ロットの1ピップ=1セント(x10x200=20米ドル)の場合もあれば、0.01ロットの1ピップ=10セント(x10x200=200米ドル)の場合もあります。
 
paladin80:
まあ、普通のアカウントやセントアカウントなど、どのようなアカウントを使っているかによりますが。0.01ロットの1ピップ=1セント(x10x200=20米ドル)の場合もあれば、0.01ロットの1ピップ=10セント(x10x200=200米ドル)の場合もあります。
200pipsに止めるには20usd必要ですか?
 

質問を重複してしまいますが、おそらく誰もフォローのために気づいていないのでしょう。

ATR インジケータの仕組みを理解すると同時に、そのコードを勉強することにしました。エッセンスは理解できたが、妙な書き方をしている。

そのスタート 機能を紹介します。

int start()
  {
   int i,counted_bars=IndicatorCounted();
//----
   if(Bars<=AtrPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(i=0; i<limit; i++)
      AtrBuffer[i]=iMAOnArray(TempBuffer,Bars,AtrPeriod,0,MODE_SMA,i);
//----
   return(0);
  }
//+----------------

ここで、最初のブロックを混乱させた。

//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=AtrPeriod;i++) AtrBuffer[Bars-i]=0.0;
//----

counted_barsの値が<1であれば、何かする 意味はあるのでしょうか?私見ですが、これはインジケータがバーをカウントしていないことを意味し、まだ値がないので関数を終了すればよいのでは...と思います。キャッチは何ですか?

なぜAtrBufferは[Bars-i] というインデックスを持っているのですか?値がない場合はバッファを 0.0にする、ということだと理解しました。しかし、値0.0は(Bars) から(AtrPeriod)までのバーに対してのみ定義されており、AtrPeriodから0番目のバーまでは 何もバッファに書き込まれないことが判明しました。なぜ?

このコードのロジックは理解できません。

次のブロックでは

//----
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      double high=High[i];
      double low =Low[i];
      if(i==Bars-1) TempBuffer[i]=high-low;
      else
        {
         double prevclose=Close[i+1];
         TempBuffer[i]=MathMax(high,prevclose)-MathMin(low,prevclose);
        }
      i--;
     }
//----

行列の中に。

if(i==Bars-1) TempBuffer[i]=high-low;

i==Bars-1場合条件左のチャートの先頭から1本目のバーの値が 考慮されているように 見えますが・・・。しかし、これは非常に遠い、この値は何の役に立つのか?