指標となる質問 - ページ 8

 
heelflip43:

VAL1とVAL2をリセットしていないことが問題だと思います。ですから、高値と安値を見つけたら、それらをリセットする必要があります。

これで解決するといいんですが。
ああ、今日中にWindowsを起動したら試してみます。ありがとうございます。

最初のif(statement)がtrueだったら、またstart()を再開してコードの先頭からリセットして、val1とval2を再びリセットしていると思いました。

さて、私が考えた方法は - if(first statement) true then prints, then moves to text the next if(second) likely false then goes back to the top of start again and reset val1 and val2

プリントと値は正しく取得されているのにただ連続してプリントしているのですが、これはどうなのでしょうか?

今思うと、どのif(statement)でも、最も単純なEMAクロスでも、連続的に印刷されることを理解したことがありませんでした

あなたが投稿したコードをテストしてみますが、もし私がこれらの変数を印刷するprint文を追加して、それがまた連続印刷しないなら、私は驚きます

私は今日後でそれを試してみます

ありがとうございました。
 
OK val1とval2をリセットすると、A highを取り戻せますが、以前ほど多くはありませんが、まだすべてを連続的にプリントしています。
この問題を解決するには、currentTimeとiTimeで何かをしなければならないのは確かです。

このように、ABCDのスキームがコードベースにあるはずなのですが、これはZigZagをベースにしたもの以外にはないようで、これが何かヒントを与えてくれるかどうか、今見直しているところです。しかし、これもまたインディケータなのです。

とにかく、私が &&macd や何かを追加すると、それは一度だけそれらを印刷し、それは本当に私を投げ出しています。
 
もうちょっと考えてから、それをやり遂げたいと思います。

これはどうでしょう。

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;

double val1;
double val2;
bool traded = false;
bool A = false;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 


     
     if(val1 > 0 && traded == false && val2==0)
      { 
      // in the absence of an && indicator above I get continous print statements
      // also does not print A high this is not desired
      // with indicator added && indicator above, then it prints A and B once as it should ???
      // I need to work this out so it won't print all the time aka trade all the time
      // A and B first values seems to initialize the whole block
      // just a reminder that they time stamps coordinate after this FYI
      // now work on C retrace and possibly signals
      // add options for user to select some candle patterns
      // add options to select indicators
      // add bells and whistles to make things fun
      // alerts,sounds,maybe poppup video animation or something
      
      double B = val1;
      Print(B, " B high");
         if(val2==0)
            {
            for (i=0; val2==0; i++)
               {
               val2=iFractals(NULL, 0, MODE_LOWER, i);
               double A = val2;
                  if(A!=0)
                     {
                     Print(A, " A low");
                     }
               }
             }  
      traded=true;
      }
     
     val1=iFractals(NULL, 0, MODE_UPPER,3);
     val2=iFractals(NULL, 0, MODE_LOWER,3); 
     
     if(val2 > 0 && traded == true && val1 == 0)
      {
      B = val2;
      Print(B, " B low");
         if(val1==0)
            {
            for (i=0; val1==0; i++)
               {
               val1=iFractals(NULL, 0, MODE_UPPER, i);
               A = val1;
                  if(A!=0)
                     {
                     Print(A, " A high");
                     }
               }
             }  
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+


      

を追加したときに一度だけ印刷されます。

if(val1 > 0 && traded == false && val2==0)

そして

if(val2 > 0 && traded == true && val1 == 0)


というわけで、もう少し近づいてきたので、もう少し評価することができます。

これは、私にこれを修正するためのアイデアを提供し、あまりにも物事をリセットすることについてもう少し私の知識を広げたので、巨大な助けになった、すべての助けをありがとうございました。
私はこのことを自分のポケットにしまっておかなければなりません。

ありがとうございます。

 

ほとんどの場合、問題は発生していません。同じバーに上下のフラクタルが あるときだけ起こるようで、不確実な市場で時々起こります。これを回避する唯一の方法は、1バーに1回だけ計算を実行することです。

static datetime currTime;
if(Time[0]!=currTime){
currTime = Time[0];
// Rest of code
}

そうすれば、フラクタルが両方向に動いているときに誤った取引をすることはないはずです。

 
iCustom インジケータのEAへの変換を理解するのに十分な経験があれば、おそらくずっと前にすでにこれを解決していたことだろうと思います。

今やっている方法は、私のコードロジックの横にiCustomインジケータを追加しなければならないので、より複雑になります;そして、私のコードロジックとしてすでに動いているiCustomインジケータを使う代わりにすべてのベルとホイッスル

いずれにせよ、今日も素晴らしいニュースをありがとうございます。
 
あるいは、あなたの解決策も同様に機能するでしょう。私は自分の理論を試している最中で、あなたの投稿を見ませんでした。
 
heelflip43:

ほとんどの場合、問題は発生していません。同じバーに上下のフラクタルがあるときだけ起こるようで、不確実な市場で時々起こります。これを回避する唯一の方法は、1バーに1回だけ計算を実行することです。

そうすれば、フラクタルが両方向に動いているときに誤った取引をすることはないはずです。

この部分がどのように機能するのか、もう少し勉強する必要があります。以前に見たことがあり、他の類似のバージョンもありますが、部分的にしか理解していません。

もう少し勉強しないといけませんね。テスト時にprintステートメントが連続するため、私のコードのほとんどが失われている場所かもしれません。

他にも方法はあると思いますが、このためのインジケータも作って、AtoBから線を引くなどする予定です。

もう少し勉強してみます。
 
ここに私がこれまでに作ったいくつかの進展があります。

多分誰かがそれをうまく利用することができます、私はそれが第一人者によってより良い改訂することができると確信しています。

とにかく、これは私が欲しいものを印刷してくれるし、Fiboレベルの外部値をいくつか追加したので、ユーザーはどのレベルが欲しいか選択できる。

フォーラムへの私の最初のコード投稿です。

このタスクを達成するための良い方法があれば教えてください。私のコードが何をしているかを示すためにiCustomインディケータを 追加するため、すでにコードが2倍になることが予想されますが、これは配列バッファなどのために二重にコーディングし、その後iCustomを使用することを意味します。

とにかく、私が得たものは次のとおりです。

//+------------------------------------------------------------------+
//|                                          Unfinished_POS_slate.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS slate by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=123486;
extern double fibo_retrace=0.500; //this is C retracement level
extern double fibo_extension=1.618;  // coming soon, D extention 


double val1;
double val2;
bool traded = false;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   
        
   int i=0;
   int ticket,total,result;
   total = OrdersTotal();                 
   val1=iFractals(NULL, 0, MODE_UPPER,3);
   val2=iFractals(NULL, 0, MODE_LOWER,3); 

     
     if(val1 > 0 && val2 == 0 && traded == false)
      { 
      double B = val1;
      Print(B, " B high");
      if(val2==0)
         {
         for (i=0; val2==0; i++)
            {
            val2=iFractals(NULL, 0, MODE_LOWER, i);
            double A = val2;
            if(A!=0)
              {
              Print(A, " A low");
              }
            }
          }
       double C = B-(B-A)*fibo_retrace; //retrace 50% no fractal
       Print(C, " UP ABC retrace level");
       if(Bid <= C)
         {
         Print (Bid, " UP ABC C Retrace Hit");
         }  
      
      
      traded=true;
      }
     
     //val1=iFractals(NULL, 0, MODE_UPPER,3); been suggested I might need to reset these here
     //val2=iFractals(NULL, 0, MODE_LOWER,3); I'll investigate this some more
     
     
     if(val2 > 0 && val1 == 0 && traded == true)
      {
      B = val2;
      Print(B, " B low");
      if(val1==0)
        {
        for (i=0; val1==0; i++)
           {
           val1=iFractals(NULL, 0, MODE_UPPER, i);
           A = val1;
           if(A!=0)
             {
              Print(A, " A high");
             }
           }
        }        
             
        C = B+(A-B)*fibo_retrace; //retrace 50% no fractal  //recheck my math on this one
        Print(C, " DOWN ABC retrace level");
        if(Bid <= C)
           {
           Print (Bid, " DOWN ABC C Retrace Hit");
           } 
                 
      traded=false;
      }
     
                    
                
   return(0);
  }    

//+------------------------------------------------------------------+
私の限られた知識と経験で、ABCDのスキームで思いついたのはこれだけです。

私は、ユーザーが本当にトレンドの中に滞在するために、以前のAやBを破らないレベルにAやBを変更することができるように、それにもっと取り組むつもりです。

誰かがこれを使用することができますまたはおそらくいくつかのより良いアイデアでそれを追加することができます願っています。

今私はそれに追加するキャンドルパターンと指標か何か、そしてポップアップ警告、多分音といくつかのポップアップビデオは楽しいかもしれないに取り組みます。

すべてのヘルプのためにありがとうございます。

 

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я вляюсь трейдером компании " Инстафорекс "Инмпании".

Помогите в поиске нужного скрипта!Скрипт нужен для сетки отложенных ордеров.

 
GERICH:

Доброго времени суток уважаемые форумчане!

Меня зовут Герман, мне 23 года, я вляюсь трейдером компании " Инстафорекс "Инмпании".

Помогите в поиске нужного скрипта!Скрипт нужен для сетки отложенных ордеров.

もしグリッドスクリプトが欲しいなら、コーダー募集のセクションにプロジェクトを 投稿してください。
そして英語で投稿してください。

Happy trading