OrderSend()関数のバグ? - ページ 10

 
Roger:
そんなの無理だよ。最初の刻みで条件を揃えないと、1時間が無駄になってしまいます。


H1では60分、つまり次のバーまで続きます。

//+------------------------------------------------------------------+
//|                                                     чернoвик.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

static datetime LastTime = 0;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(NewBar()==true)
       {
        
           int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-250*Point,Ask+250*Point," ",16384,0,Green);
        
       }
  Comment ("LastTime   ",LastTime,"   NewBar   ",NewBar());  
//----
   return(0);
  }
//+------------------------------------------------------------------+
bool NewBar() 
    {
       
       if (iTime(NULL,0,0) != LastTime) 
       {
          LastTime = iTime(NULL,0,0);      
          return (true);
       } 
       else
          return (false);
     
    }

テスターでコメントを調べる。

 
pako:


一本取る

パコ、ビックリです!このスレッド中、ずっと「アルバニアコード」で突いてきたけど、何を提示したんだ?:)同じものを、横から見ただけ!?結局、新しいバーと 同じ機能を、よりプリミティブに使っているだけなんですね。そして、すべてのシグナルを迂回して注文を送る機能などがあります。そして、その問題の解決策は、ここにはなかったのですアルバニア人がいるんですね。

Swan:
Taki then
only if order is opened on current bar. すなわち、関数OpenBuy/Sellのこの行は、




を移動します。

スワン さん、ありがとうございますこれが必要だったんだ!注文開始機能で新しいバーの時刻が代入されている場合 隙間なく.すでにチェック済みですが、すべてがうまく機能していることに頭が上がりません。私のExpert Advisorは、まさにその通りに動作します。

それでもひとつだけ疑問が あります。前の例ではなぜうまくいかなかったのでしょうか? 前の例もこの状態でした。

// Проведение торговых операций
   if (signal != SIGNAL_NO)
       if (!Trade(signal))
           return (0);

コードはこうなっているかと...Trade(signal) 関数がfalseを 返したら、関数を終了する...。であり、行内の変数lastBarTimeが 更新される前である。

lastBarTime = iTime(NULL, 0, 0);

は更新されません。でも、結果的には、そんなことはないんです。この点について、ご説明いただいてもよろしいでしょうか。とても興味深いものでさえあります。興味をそそられますね。

 
hoz:

スワン さん、ありがとうございますこれが必要だったんだ!新しいバータイムがオープンオーダー機能で割り当てられた場合、. 漏れなく.すでにチェック済みですが、すべてがうまく機能していることに頭が上がりません。私のExpert Advisorは、まさにその通りに動作します。

ひとつ疑問が残ります最後の選択肢はなぜうまくいかなかったのでしょうか? そこには、ある条件もあった。

コードはこうなっていると思ったのですが...Trade(signal)) 関数がfalseを 返したら、関数を終了する...というものです。であり、行内の変数lastBarTimeが 更新される前である。

は更新されません。でも、結果的には、そんなことはないんです。この点について、ご説明いただいてもよろしいでしょうか。とても興味深いものでさえあります。興味をそそられますね。

ええ、でももし
signal == SIGNAL_NO

新しいバーの 最初のティックでlastBarTime が更新される...


無きにしもあらず

   if (signal != SIGNAL_NO)
意図したとおりに動作するコードでは難しいので、確認が必要です)
 
hoz:

パコ、ビックリです!このスレッド中、「アルバニアコード」で突っかかってきたけど、何を提案したんだ?:)同じものを、横から見ただけ!?結局、新しいバーと同じ機能を、よりプリミティブに使っているだけなんですね。そして、すべてのシグナルを迂回して注文を送る機能などなど。そして、その問題の解決策は、ここにはなかったのですアルバニア人なんですね。

pako:
ToRを再度策定することに抵抗がなければ、なぜ新しいバーを制御 する必要があるのでしょうか。


hoz:
フォーミュラで簡単!まだ1ポイントも考えていませんが、全体の ポイントを説明します。

注文数の 制限を一切設けないこと。I.e.注文は任意の数で開くことができる......いくつあってもいいのですが、現在のバーで開く注文は1つだけでいいのです。それだけです。

つまり、新しいバーが開くので、このバー中に1つの注文を出すことができますが、現在のバーには1つ以上の注文を出すことはできません。次の注文は、次のバーでのみ開くことができ、それ以前には開きません。

これではっきりしましたか?

新しいバーで1つのポジションが開かれることをToRに従って書きました。

ToRには他に何も書かれていない。

幸運を 祈る