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

 
しかし、ペンタミノが30pips以下だった場合の保留注文の削除 の仕方がわかりません。
 
hoz:

はい、それが何か?

ビジュアライゼーションモードで作業する場合、いくつかの制限があります。
 

何がいけなかったんだ!!!!

私はこの問題を解決するために、このような方法を思いつきました。

int start()
  {
     double Price=Ask+300*Point;    
     double SL=Price-300*Point;    
     double TP=Price+150*Point;
     bool New_Bar;
                          
     if (Time[0])                                                                           //   если образовался новый бар               
         int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP ); //   выставить отложенный ордер
     return ;
     Fun_New_Bar();                                                                      
     if ( New_Bar==true)                                                // если образовался следующий бар
        OrderDelete(Ticket);                                          // удалить отложенный ордер
  
//+------------------------------------------------------------------+
     void  Fun_New_Bar();                            //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ       '(' - function definition unexpected  
       {                                                                           
          static datetime New_Time=0;
          New_Bar=false;
                                
         if( New_Time!==Time[0])                       
            New_Time=Time[0];                         
         New_Bar=true;                             
      }

/* すみません、投稿を少し変えました - Vininが読めるように*/。

 
ご心配ありがとうございます。 どのボタンを押せば、この形式のコードが表示されるのでしょうか?
 
solnce600:

何がいけなかったんだ!!!!

私はこの問題を解決するために、このような方法を思いつきました。

/* すみません、Vininを読みやすくするため、投稿を少し変更しました */。

このライン
 if (Time[0])

を意味します。"最後のバーの時刻が0でない場合 "にだから、常にゼロに等しくない。

さらに、変数

bool New_Bar;

は start() 関数の内部で定義されているので、他の関数の内部では表示されません。また、start()本体の中で定義しようとしたFun_New_Bar()ですが、MQLではそうできません。New_Bar の宣言もそこに置くべきである。

 

さらに、start()関数を1回実行する間に(ループしていない場合)、バーの形成を定義し、次のバーの形成を待つことはできません:start()は定義により、毎ティック(ニュアンスはありますが、一般的にはそうです)で呼び出されて終了します。

私は、ヘルプを読み直し、MQLプログラムの実行の ギャップをなくし、ループしたプログラム非ループした プログラムも書く例を見ることを助言します。

 
solnce600:
ご丁寧にありがとうございます。 どのボタンを押せば、この形式のコードが表示されるのでしょうか?

SRC----------------------------\|/

--------------------------------------- V

 
彼には権利がある。
 
alsu:
このライン
 if (Time[0])

を意味します。"最後のバーの時間がゼロに等しくない場合"。だから、常にゼロに等しくない。


でも、この行の "NOT "がどこにあるのかがわからないんです。等しくない場合は、記号 !== で示される。

私が言いたかったのは、新しいバーの開始時刻が現れると同時に、つまり新しいバーが現れると同時に、注文が開始されるということです。

そして、これは確かに、各5本のバーのオープニングで注文を開くコードです。

 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_BUYSTOP,0.1,Price,3,SL,TP );
  

 
 }


 

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

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

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

 if (Time[0])

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

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

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_BUYSTOP,0.1,Price,3,SL,TP );
 return(0);
 
  }