[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 189

 

最後のn本のバーの最小と最大のフラクタルを知る必要がある、ここで何が間違っている?助けてください!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }

 
solnce600:

私は、よりシンプルだと思われる方法をとることにしました。

保留中の注文を削除するのではなく、5分足のローソク足が終了していない場合のみ、保留中の注文を出すこと

つまり、2つの条件が揃ったときのみ、保留注文を出すようにします。第一条件を満たした場合

- 確認したところ、順番が決まっている。

もちろん、この条件は常に真であり、偽であることはありえないからだ。ゼロバーが全く存在しないことを意味するので、単純に偽であるはずがない。

2つ目の条件、つまり5分経過していない場合にのみ保留注文を設定するには、どのように定義すればよいのでしょうか。

条件を言葉で明記してください。新しいローソク足の 開始時に保留中の注文を出したいのか、それとも何なのか、まだ明確ではありません。
 
belozad:

最後のn本のバーの最小と最大のフラクタルを知る必要がある、ここで何が間違っている?助けてください!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }



i 変数はどのように宣言されていますか?
 
alsu:

のi変数が宣言されているのですが、見てもいいですか?


int ii;

double i;

 
belozad:


このように動作するはずです。

   int ii;
   double i;
   double StopLos_L,StopLos_H;

   for (ii = 0; ii <= n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L || ii==0) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H || ii==0) StopLos_H = i;
      } 
 
alsu:

このように動作するはずです。


くそっ、バレバレだ。
ii <=n


alsu - many, many thanks =)

 
artmedia70:
することができます。

EAで目的のローソクのボディを塗ることが可能かどうか教えてください。
どこでその方法を見ることができますか、私は本当にそれが必要です。
 
beginner:
教えてください、EAで目的のローソクのボディを描くことは可能でしょうか?
どこでその方法を見ることができますか、私は本当にそれが必要です。

https://www.mql5.com/ru/code/7835 あくまで指標です。EAでオブジェクトを使用する必要があります
 
alsu:

もちろんそうです。この条件は常に真であり、偽であることはありえないからです。ゼロバーが全く存在しないことを意味するため。

条件を言葉で明記してください。新しいローソク足の開始時に保留中の注文を出したいのか、それとも何なのか、まだ明確ではありません。

ありがとうございます。 すみません、少し混乱しています。 この場合、保留中の注文ではなく、Open[0]+30 pipsの成行注文を出す必要があります。

ただし、ゼロローソク足の形成開始から次のローソク足までの間にのみ成行注文を設定する必要があります。

すなわち、私の考えによれば、5分以内に成行注文を設定しないと、保留中の注文がキャンセルされるのと同じことです。

2つ目の条件はどう書けばいいのでしょうか?

また、成行注文の始値を正しく設定できたか。

ありがとうございます。

 int start()

  {
 double Price=Open[0]+300*Point;        
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 if (Time[0]&& ???????)                         
 int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP );
 
solnce600:

ありがとうございます。 すみません、少し混乱しています。 この場合、保留中の注文ではなく、Open[0]+30 pipsの成行注文を設定する必要があります。

しかし、ゼロのローソクの始まりから次の次のローソクの始まりまでしか成行注文を設定してはいけないのです。

すなわち、私の考えによれば、5分以内に成行注文を設定しないと、保留中の注文がキャンセルされるのと同じことです。

2つ目の条件はどう書けばいいのでしょうか?

また、成行注文の始値を正しく設定できたか。

ありがとうございます。


わかりました、今持っています。現在のバーの価格がOpen[0] + 30に達したら、オープンします。バーが終了した場合、Open[0]が変更され、それに応じてオープニングレベルがシフトされます。マーケットには1つの取引しかないはずですよね。

すると、こんな感じです。

int start()

{

 double Price=Open[0]+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 if (OrdesTotal()==0 && Close[0]>=Price)                         
    int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}

新しいバーが形成されると、システムは自動的にOpen[0]に新しい値を追加し、これは新しいレベルが正しく計算されることを意味するので、新しいバーを追跡する必要はありません。買い取引は現在の Ask価格で開始され、Bid価格でクローズ(TPとSL)されることに注意してください。また、価格値は正規化する必要があります。