[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 51

 
valenok2003:

斯くやあらん

printでは_dif = 0.01ですが、_Lot = 0です;

に設定されていると思われます。

int_Lot; //すると、1以下は切り捨てられる

と設定する必要があります。

double _Lot;


 
forexnew:

に設定されていると思われます。

int_Lot; //すると、0より小さいものは切り捨てられる

と設定する必要があります。

double _Lot;



double _Lot;
double _Lot_BUY = 0;
double _Lot_SELL = 0;
double _Lot_BUYSTOP = 0;
double _Lot_SELLSTOP = 0;
 

もうひとつの構造

   if(_Lot_BUY > _Lot_SELL+_Lot_SELLSTOP) {
       _dif = _Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP);
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >= 0.01) _Lot = 0.01;
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=  0.1) _Lot =  0.1; 
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=    1) _Lot =    1;   
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=   10) _Lot =   10; 

Print(_dif +" установка2 _Lot = "+_Lot+ "_Lot_BUY = "+_Lot_BUY+ "_Lot_BUYSTOP = "+_Lot_BUYSTOP+ "_Lot_SELL = "+_Lot_SELL+ "_Lot_SELLSTOP = "+_Lot_SELLSTOP);

      _Price = NormalizeDouble((Low [iLowest (Symbol(),TF_Cnt_Bar_for_Lock,MODE_LOW, _Bars_PP_OP_SELLSTOP,0)]- Dist_For_Boot*Point),Digits);
      if(Bid - _Price < Dist_For_Boot*Point) {
         _Bars_PP_OP_SELLSTOP *=2;
         _RESET_Bars_PP_OP_SELLSTOP = false;
      }
      if(set_order_sellstop(_Price, _Lot, _Txt_Lock+Comment_Order)!= -1) _RESET_Bars_PP_OP_SELLSTOP = true;
   }

はこのように動作しませんが、次の例では動作します。

   if(_Lot_BUY > _Lot_SELL+_Lot_SELLSTOP) {
       _dif = _Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP);
      //if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >= 0.01) 
      _Lot = 0.01;
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=  0.1) _Lot =  0.1; 
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=    1) _Lot =    1;   
      if(_Lot_BUY - (_Lot_SELL + _Lot_SELLSTOP) >=   10) _Lot =   10; 

Print(_dif +" установка2 _Lot = "+_Lot+ "_Lot_BUY = "+_Lot_BUY+ "_Lot_BUYSTOP = "+_Lot_BUYSTOP+ "_Lot_SELL = "+_Lot_SELL+ "_Lot_SELLSTOP = "+_Lot_SELLSTOP);

      _Price = NormalizeDouble((Low [iLowest (Symbol(),TF_Cnt_Bar_for_Lock,MODE_LOW, _Bars_PP_OP_SELLSTOP,0)]- Dist_For_Boot*Point),Digits);
      if(Bid - _Price < Dist_For_Boot*Point) {
         _Bars_PP_OP_SELLSTOP *=2;
         _RESET_Bars_PP_OP_SELLSTOP = false;
      }
      if(set_order_sellstop(_Price, _Lot, _Txt_Lock+Comment_Order)!= -1) _RESET_Bars_PP_OP_SELLSTOP = true;
   }
 

ログに次のようなメッセージが表示されます。

0.01000000 設定2 _Lot = 0.00000000_Lot_BUY = 0.03000000_Lot_BUYSTOP = 0.00000000_Lot_SELL = 0.00000000_Lot_SELLSTOP = 0.02000000を設定します。
17:07:12 Expert_V3 GBPUSD,M1:OrderSend 関数の ロット数が無効です。

しかし、SELLSTOPが3本足りない中、最初の2本は問題なくセットできたが、3本目でつまずいた。

つまり、_dif変数を正しく計算しているにもかかわらず、lotを0.01に設定しないのはなぜか......。

 
Roger:


それはあなたの考えですか?

2番目からの注文しか開けません。2番目からでもなく、3番目からでもない。

ありがとうございました。
 
取引セッションの 開始時間(例えばモスクワなら10-35など)を決めることができるのか、それとも変数を作ってそこに値を書き込むだけでいいのか、アドバイスをお願いします。これは、セッションの最初に注文を出すのではなく、方向を決定するために必要なことです。
 
first_may:
取引セッションの開始時間(例えばモスクワなら10-35など)を決めることができるのか、それとも変数を作ってそこに値を書き込むだけでいいのか、アドバイスをお願いします。これは、セッションの最初に注文を出すのではなく、方向を決定するために必要なことです。
外国為替取引セッションのスケジュール
 

そのため、セッションの開始を格納する変数だけを使用することが提案されています。ありがとうございます。
 
また、私が出会った中で最高のセッションインジケーターです。
追伸
データベースで発見https://www.mql5.com/ru/code/9313
ファイル:
 
日付を扱う関数、つまり、2つの日付の差は0より大きいかどうかを判断する関数の例はありますか?