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

 
AlexeyVik:

それと、もうひとつわからないことがあるんです。N が datetime の場合、D' 19:00 ' はテキスト形式です。比較できるのか?いいえ、時間的な比較の場合は、次のように書きます。

D'19:00' はdatetime 型 のリテラル定数である。
 

親愛なるプログラマーの皆様にお聞きしたいのですが、過去のインジケーターの読み取り値を検索する方法をロシア語でコードで説明してください。例えば、売りのストップロスは、ゼロバーから3ハイジグザグ、またはトップ 8フラクタル 上に置く必要があります。私が読むところ - どちらかではない、またはそう書かれていない:)

 
Petiyashaket:

親愛なるプログラマーの皆様にお聞きしたいのですが、過去のインジケーターの読み取り値を検索する方法をロシア語でコードで説明してください。例えばストップロスの場合、私はゼロバーから3ハイジグザグ、または8番目の上部フラクタル上に置く必要があります。私が読むところ - どちらかではない、またはそう書かれていない:)

ゼロバーからチャートの始まりまでの ループ、int x=0。ループの中で、必要なインジケータ、例えばfractalを呼び出します。値が空でなければ x に 1 を加え、x が目的の値に達したら - ループの反復を記憶してループを抜ける、反復の値は理論的には目的のフラクタルがあるバーの番号になります。理論的には、サイクルの実行中にM1にもう1本バーが現れる可能性があり、その場合、ポインタは間違ったバーに表示されるからです )))。
 
evillive:
ゼロバーからチャートの始まりまでのサイクル、int x=0。サイクルの中で、例えばフラクタルなど、必要なインジケータを呼び出します。値が空でなければ x に 1 を加え、x が必要な値に達したら - ループの反復を記憶してループを抜ける、反復の値は理論上必要なフラクタルがあるバーの番号になります。理論的には、ループ実行中にM1に新しいバーが出現すると、間違ったバーへのポインタが表示されるからです)))
時間を節約する必要があります。あるいは、最後のフラクタルが形成された時刻が格納されている配列を使用するのがよいでしょう。不要なループの排除による作業スピードの低下
 
Petiyashaket:

過去のインジケーターの読み取り値を検索する方法をロシア語で説明してください。または何か、またはそうでない書かれた - 私はゼロバー、またはトップ8フラクタルから3ハイジグザグに置く必要がある販売の例stoplossは、どこでも私が読んで:)

"ロシア語 "と "プログラミング言語"(コードの説明が欲しい)は同じものではありません。

アルゴリズム的に

1) 興味のあるジグザグが「フラクタルポイント」を持たない場合、どのような値を返すかを定義する -EMPTY_VALUE または 0.0 を指定することができる。

2) ループ内でiCustom()を使い、ループ内でチェックされているバー上の対応するバッファインジケータの値を取得し、「空の値」との差をチェックし、その差のカウンタを保持します。カウンタが3の場合、バーの数(N)が目的のバーとなります。

3) High[N]⇄Low[N]は要求レベルになります。

標準的なZigZag Highの場合、次のようなものを求めています。

#define  ZZ_NULL  0.0

    uint li_N = 0, li_Bar = 1;
    double ld_ZZ = 0.;
//----
    while (li_Bar < Bars - 1)
    {
        ld_ZZ = iCustom (_Symbol, _Period, "ZigZag", /* внешние параметры индикатора */, 1, li_Bar);
        if (ld_ZZ != ZZ_NULL)
        {
            li_N++;
            if (li_N >= 3) break;
        }
        li_Bar++;
    }
    double ld_Price = High[li_Bar];

しかしその前に、ZigZagコードの表示バッファ数を1個から3個に変更する必要があります。

#property indicator_buffers 3
 

回答ありがとうございます、また連絡します :) 今問題なのは

http://clip2net.com/s/j7xvk9

なぜ注文を修正せず、新しい保留中の注文を開くだけなのかが分からない

 
Petiyashaket:

回答ありがとうございます、また連絡します :) 今問題なのは

http://clip2net.com/s/j7xvk9

なぜ注文を修正せず、新しい保留中の注文を開くだけなのかが分からない

 
evillive: 表示してくれてありがとうございます :)
  double Up=iFractals(Symbol(),0,MODE_UPPER,3);           //верхний фрактал
  double Down=iFractals(Symbol(),0,MODE_LOWER,3);         //нижний фрактал
//----
  if(Up>0&&Down==0&&Volume[0]<2) //если верхний есть а нижнего нет то:
    {
    if((High[3]+5*Point-Ask)/Point>MarketInfo(Symbol(),MODE_STOPLEVEL)) //если цена позволяет выставить отложенный ордер то:
    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {
        for (int pos=0;pos<OrdersTotal();pos++) //     скопировал эту строчку хз откуда ибо не понимаю грёбаный счетчик :) тут видимо и косяк
        OrderSelect(pos,SELECT_BY_POS,MODE_TRADES); // ищем текущие ордера
        if(OrderMagicNumber()==Magic&&OrderSymbol()==Symbol()&&OrderType()==OP_BUYSTOP)// и если все условия совпадают то:
          {
          OrderModify(OrderTicket(),Up+5*Point,Up-sl,Up+tp,0,CLR_NONE);//переносим байстоп на новый верхний фрактал
          }


 
Petiyashaket:
表示してくれてありがとうございます :)
修正ログで何を訴えているのでしょうか?"Stupidly opens new pending orders" 制限はないが、OrderSendは あるため。
 
Petiyashaket:

1) どのようなストラテジーも、同時に開いている注文の数で定義されなければならない。したがって、次の注文を出す前に、すでに何件出ているかを確認する必要があります。

2) 1本の小節で、UPPERとLOWERのフラクタルが同時に存在できない場合、このチェックは次のように分類されます。

    if (Up > 0 && Down == 0)

は、プログラマのバカのカテゴリに属します。

3) バッファインジケータの値を返す 条件を書く前に、それに対してどの値が「空」なのかを正確に知る必要があるのでは?0であることを確認しましたか?

4)コンストラクトのこと。

    if (Volume[0] > 2)

ほとんどの場合)うまくいきますが、開発者の「自由意志」による発想なので不自然であり、トレーダーにとっては不案内です。代替案として、新しいバーの追跡があります。

5)基本的なことから始めなければならない、これは。

    OrderSend(Symbol(),OP_BUYSTOP,Lot,High[3]+5*Point,20,High[3]-sl,High[3]+tp,NULL,Magic,0,Green); // то выставляем байстоп на 5 пунктов выше верхнего фрактала
        {

書いてあることが全く理解できていないことを示す。

理解するには、他の人のコードがどのように動作するかを研究し、自分の目的に合わせて修正するのが一番です。頑張ってください。