[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 12

 
それ来た
ファイル:
 
igrok2008 >> :

前回のコメントで、私の欠点である売買レベルの間違いを指摘されましたが、これは(私の理解では)< >の符号を逆にする必要があります。

CCIの場合、-100を指定する必要があるのかないのか?

持って、テスターに入れる

と表示され、どこが良い結果なのかがわかります

マイナスがあるところとないところ

で、最終的にどの数字が250になるのか、それとも-250になるのか

 

新しいバーが 表示されたときに注文を開き、それが閉じたときに閉じるようにするにはどうしたらよいかを書いてください。 頭が痛くて、解らない )))

 
vadim2304 >> :

新しいバーが表示されたときに注文を開き、それが閉じたときに閉じるようにするにはどうしたらよいかを書いてください。 もう頭が痛くて、考えがまとまらない ))))

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};


bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0;
   if (TimeCurrent() >= time){
      min = MathFloor( sec / 60);
      if ( min==0) min = 1.0;         
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/ min) + 1) * min * 60;
      res = true;
   } 
   return( res);
}
 
keekkenen >> :

H1タイムフレームのバーを対象にしているのはわかるのですが、if (isTime(Period()*60)) の後の始値と終値のコードはどこに書くのか、どういう意味なのか、解読してください ))) 。

 

ごかいPeriod()*60は任意のTFの場合 - すべて秒単位で表現されます。

M1-60秒、M5-300秒など。(M1のPeriod()は1を返し、M5では-5を返すので...)

比喩的に 書きました

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};

この意味-新しいバーが現れたら、開いている注文を閉じ、新しい注文を開くことができます。

自分でできない場合は、チュートリアル(https://book.mql4.com/ru/)をご覧ください。

 
keekkenen >> :

ごかいPeriod()*60は任意のTFの場合 - すべて秒単位で表現されます。

M1-60秒、M5-300秒、など。(М1ではPeriod()が1を返し、М5では-5を返すように...)

比喩的に 書きました。

未決済の注文を決済し、新たに注文を出すというものです。

自分でできない場合は、「https://book.mql4.com/ru/」でチュートリアルを見てください。


そして、もし未決済の注文がなく(このバーの後にそれらを閉じます)、ただ新しい注文を開くと、エラーはありません?

 
satop >> :

持って、テスターに貼り付ける

をクリックすると、より良い結果が得られる場所が表示されます。

マイナスがあるところ、ないところ。

をクリックすると、250なのか-250なのかが表示されます。

怒るなよサトップ。誰もが初心者で、誰もがくだらない質問をしていた。学生時代に戻って考えてみてください。ギークがいたのでしょう。好奇心旺盛で、学びたい気持ちがあったのです。もちろん、時間が経てば、しつこいくらいに怒るのですが、怒った人の方が早く全てを把握し、理解したことが分かります。しかし、どちらの教え方にも生きる権利がある。シーザーからシーザーへ......悪気はないのですが、ダミーであることは否定しませんが、気になるところです。悪気はないのですが...。

 
vadim2304 >> :

また、未決済の注文がなく(このバーの後に決済されます)、新規の注文を出した場合、エラーは発生しないのでしょうか?

注文をクローズするOrderClose()関数は、最初のパラメータとして注文番号を受け取り、注文番号は既存の注文に対してOrderSelect()を呼び出すことによってのみ取得できるため、一般的には次のようなクローズになるということです...。

bool res = false;
int slippage = 3;

for (int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) &&
         OrderSymbol()==Symbol()){

      while (IsTradeContextBusy() || !IsTradeAllowed())
         {Comment("Торговый поток занят ...");Sleep(2000);}               
      res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), slippage,CLR_NONE);
      if ( res){  
         res = true; Comment("Ордер закрыт !");              
      }else{
         Comment("Ошибка - ", msg);
      }
   }
}
  


OrdersTotal() = 0の場合、つまり未決済の注文がない場合、forループは直ちに終了します...

 
igrok2008 >> :

怒るなよサトップ。誰もが初心者で、誰もがくだらない質問をしていた。学生時代を思い出してください。確かにオタクはいましたね。好奇心旺盛で、学びたい気持ちがあったのです。もちろん、時間が経てば、しつこいくらいに怒るのですが、怒った人の方が早く全てを把握し、理解したことが分かります。しかし、どちらの教え方にも生きる権利がある。シーザーからシーザーへ......悪気はないのですが、ダミーであることは否定しませんが、気になるところです。>>悪気はないんです。

なぜ私が怒っていると思うのかわからない。

ということを説明するのが私のやり方です。

不等号をとって実行することで

>> テスターで>>>>>>>>>>>>>>>>>>正

を、どのレベルであっても構いません。

ポジティブまたはネガティブとの質問には

を取るか、マイナスを取らないか。

残念ながら、明確な区別はありません。