MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1512

 

どなたか以下のコードを提案していただけませんか?

もし、注文のグリッドがCLOSED(同じ種類が2つ以上)であれば、その日の終わり(または時間、分単位で設定可能ないくつかの時間)まで取引を停止します。

同じオーダータイプで 見つけた履歴をカウントするのはまだなんとか可能ですが、一日の終わりに止める方法は正確にはわかりません。ハッピー・ペンテコステ・トゥ・オール)

 
Igor Makanu:

普通じゃない、8バイトでは何か送るのに苦労する

まあ、目的にもよりますが、単なる備忘録なら8枚で十分です :)

 
Порт-моне тв:

どなたか以下のコードを提案していただけませんか?

もし、注文のグリッドがCLOSED(同じ種類が2つ以上)であれば、その日の終わり(または時間、分単位で設定可能ないくつかの時間)まで取引を停止します。

同じオーダータイプで 見つけた履歴をカウントするのはまだなんとか可能ですが、一日の終わりに止める方法は正確にはわかりません。ハッピー・ペンテコステ・トゥ・オール)

//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(int order_type)
  { double p = 0;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderCloseTime()>=время начала дня)
           { 
            if(OrderType()==order_type || order_type == -1) cnt++;
           }
        }
     }
   return(p);
  }
 
Порт-моне тв:

どなたか以下のコードを提案していただけませんか?

もし、注文のグリッドがCLOSED(同じ種類が2つ以上)であれば、その日の終わり(または時間、分単位で設定可能ないくつかの時間)まで取引を停止します。

同じオーダータイプで 見つけた履歴をカウントするのはまだなんとか可能ですが、一日の終わりに止める方法は正確には わかりません。ハッピーホリデー(Happy Holidays to everyone)

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

質問の理解が正しければ、おおよそ次のようなものです(原理そのもの)。

 
Aleksei Stepanenko:

まあ、どんな目的で使うかにもよりますが、自分を思い出すためだけなら8本で十分です :)

もし、自分自身に思い出させたいのであれば、OnChartEvent()にカスタムイベントを 投げる方が便利だと思います。


MakarFX

次のコードを提案できる人。

注文のグリッドがCLOSE(同じ種類が2つ以上)の場合、その日の終わり(または時間、分単位で設定可能なある時間)まで取引を停止します。

一日の始まりの日(今日、またはゼロバーを取得するためにTF D1から、または変換するためにdatetimeのティック時間から)注文履歴を 検索します。

履歴の中で、設定された日付より大きい注文が少なくとも1つ見つかれば - 関数を終了し、true を返します。

このような関数が日付パラメータ(today)を使って呼び出される際、一番上のOnTick()で


書くのが面倒なので、そこに10数行あります、Kimさんの例では、履歴の中の注文を日付で検索する関数があります

 
Порт-моне тв: 履歴を同じオーダータイプで 見つけるとカウントするのは、まだなんとかなるのですが、最後までどうやって止めるのか、よくわかりません。トリニティに幸あれ)
bool trade_buy;
bool trade_sell;

if(кол-во закрытых ордеров buy>2)
trade_buy=false;
else
trade_buy=true;

if(кол-во закрытых ордеров sell>2)
trade_sell=false;
else
trade_sell=true;
 
Maxim Kuznetsov:

/// получаем время конца (по умолч.текущего) дня. То есть время последней секунды дня

datetime EndOfDay(datetime tim=0) {

   if (tim==0) tim=TimeCurrent();

   datetime dt;

   TimeToStruct(tim,dt);

   dt.hour=23;

   dt.min=59;

   dt.sec=59;

   return StructToTime(dt);

}

/// где-то в торговой логике, отрывки

datetime tradeAllowedFrom; // в глобальной области

....

tradeAllowedFrom=EndOfDay(); // где сетку проверяем : запрещаем торговлю до конца дня

....

if (TimeCurrent()>tradeAllowedFrom) { // проверка разрешения торговли

   Buy(); // Sell();

}

質問の意味が正しければ、次のようになります(原理そのもの)。

早速の返信ありがとうございます、しかしこの「取引禁止」というもの、どうやって実装すればいいのかわかりません、コードありがとうございます。
 
MakarFX:
貿易販売/貿易購入 - 機能として!?
 
Порт-моне тв:
貿易販売/貿易購入 - 機能どのように!?


//+------------------------------------------------------------------+
bool trade_buy;
bool trade_sell;
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY        3 - ордера типа SELLLIMIT                      |
//|  1 - ордера типа SELL       4 - ордера типа BUYSTOP                        |
//|  2 - ордера типа BUYLIMIT   5 - ордера типа SELLSTOP                       |
//+----------------------------------------------------------------------------+
double GetCloseOrderType(string symb="",int order_type)
  {
   double p = 0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersHistoryTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==true)
        {
         if(OrderSymbol()==symb || symb=="")
           {
            if(OrderCloseTime()>=iTime(_Symbol,PERIOD_D1,0))
              { 
               if(OrderType()==order_type || order_type == -1) cnt++;
              }
           }
        }
     }
   return(p);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(GetCloseOrderType(_Symbol,0)>2)
      trade_buy=false;
   else
      trade_buy=true;

   if(GetCloseOrderType(_Symbol,1)>2)
      trade_sell=false;
   else
      trade_sell=true;
//---
   if(trade_buy)
     {
      твое условие открытия покупок
     }
   if(trade_sell)
     {
      твое условие открытия продаж
     }
//---
  }
//+------------------------------------------------------------------+
 
Vitaly Muzichenko:

どちらかというと、ここからの 受け売りです。

私はプログラミングの初心者で、あまり上手ではありませんが、それをやり直して、ダウンロードできるようにしてくれませんか?