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

 
Alexandr Sokolov:
ストラテジーテスターで 注文の有効期限を調べるにはどうしたらいいですか?カラムタブにはありません
有効期限はどのように設定するのですか?
 
MakarFX:
有効期限はどのように設定するのですか?
void Open_Order(ENUM_ORDER_TYPE  Type,
                double           price,
                double           sl_price,
                double           tp_price,
                datetime         close)
  {
   
   MqlTradeRequest  request;
   MqlTradeResult   result;
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action        = TRADE_ACTION_PENDING;
   request.magic         = id_number;
   request.symbol        = _Symbol;
   request.volume        = volume;
   request.price         = price;
   request.sl            = sl_price;
   request.tp            = tp_price;
   request.deviation     = slippage;
   request.type          = Type;
   request.type_filling  = ORDER_FILLING_FOK;
   request.type_time     = ORDER_TIME_SPECIFIED;
   request.expiration    = close;
   
   if(!OrderSend(request,result)) Print("Error - ",result.retcode);
   
  }


 
Alexandr Sokolov:


ワラントでコメント追加、他の選択肢はないのか(
 
MakarFX:
注文コメントに追加、他の選択肢はないのか(

ありがとうございました。

 
私はこのフォーラムに初めてコメントし、特にコミュニティに精通しているわけではありませんので、あまりトマトを投げないでください。要領よく。EAを作成する際に、OrdersTotal()が全てのオープンオーダーに対して機能する(これは理にかなっている)という問題に直面し、「あるオーダーがクローズしたら次のオーダーがオープンする」という条件を設定した場合、条件にマスターを設定してコードを複製しても、私のアカウントのオープン チャート上で複数のEAが互いに同時に動作しない(あるオーダーがクローズするまで、他のオーダーがオープンしない)ことに気づいて驚きました。私はこのテーマで多くの場所を検索しました - 私は多くのソリューションを取得し、私が理解するように、それは初歩的なものですが、すべてのケースで、何も動作しませんでした。if "を開いたり閉じたりするときに、どのような条件を設定すればよいのでしょうか?(...) " を使用すると、付属する特定のEAのみOrdersTotalをユニーク化し、他のEA(そのOrdersTotal)は一切関係なく、すべての注文の独自のカウントを保持します。ありがとうございます。
 
Порт-моне тв:
この掲示板に初めてコメントします。特にコミュニティに精通しているわけではありませんので、トマトを投げつけないでください。要領よく。EAを書いていて、OrdersTotal()がすべてのオープンオーダーに対して機能する(これは理にかなっている)という問題に直面し、コンディションでマスターを設定し、コードをコピーしても、同時にオープンチャート 上の複数のEAがお互いに機能しない(一つのオーダーがクローズするまで、次のオーダーがオープンしない)ことに驚いているのです。私はこのテーマで多くの場所を検索しました - 私は多くのソリューションを取得し、私が理解するように、それは初歩的なものですが、すべてのケースで、何も動作しませんでした。if "を開いたり閉じたりするときに、どのような条件を設定すればよいのでしょうか?(...) " を使用すると、付属する特定のEAのみOrdersTotalをユニーク化し、他のEA(そのOrdersTotal)は一切関係なく、すべての注文の独自のカウントを保持します。ありがとうございます。

コードを添付すると、エラーが指摘されます。

 
//+------------------------------------------------------------------+
//| sova_2bars.mq4||←こちらをクリック
| Copyright 2020, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp.
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ

extern int Magic = 6477;
extern double Lot = 0.01;
extern int Slippage = 3;
extern int TakeProfit = 1600;
extern int StopLoss = 800;
extern int Experation = 0;

double Openone, //最初のローソク足の始値
Opentwo, //ローソク足2本目の始値
Closeone, //最初のローソク足の終値
Closetwo、//2本目のキャンドルのシーン
Lowone, //最初のローソクの最低価格
Lowtwo, //最初のローソク足の価格
ロースリー、//3本目のキャンドルの最小値のシーン
Openthree, //ローソク足3本目の始値
Closethree, //ローソク足3本目の終値
CloseOrder, //クローズオーダー
Highone, //ローソク足1本目の最高値
Hightwo, //ローソク足2本目の最大値
Highhree, //ローソク足2本目の最大値
Highfour, //2本目のローソク足の最大値です。
ハイタッチ、//2本目のローソクの最大値
Highsix, //最大2本目のローソクの価格。
Highseven, //最大2本目のローソク足の価格
高値、//2本目のローソクの最大値
Lowfour, //4本目のロウソクの最小値の価格
Lowfive, //5本目のローソクの初値
ロウソク、//6本目のロウソクの最短距離のシーン
Lowseven、//最低7本のロウソクを立てるシーン
Loweight、//8本目のキャンドルの最小値のシーン
Closefour, //ローソク足4本目の終値
オープンフォー
Low15です。
Low25です。
SLbuy、TPbuy、SLsell、TPsell、//ローソク足4本目の始値
OrderOpenPrice;
int ticket, ticketclose;

//+------------------------------------------------------------------+
//| 専門家による初期化機能
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| エキスパートティック機能
//+------------------------------------------------------------------+
void OnTick()
{
//--- 必要なバーの価格を決める
Openone = NormalizeDouble(iOpen(Symbol(), Period(), 0), Digits)です。
Highone = NormalizeDouble(iHigh(Symbol(), Period(), 0), Digits)とする。
Hightwo = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits)とする。
Highthree = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits)とする。
Highfour = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits)とする。
Highfive = NormalizeDouble(iHigh(Symbol(), Period(), 4), Digits)とする。
Highsix = NormalizeDouble(iHigh(Symbol(), Period(), 5), Digits)とする。
Highseven = NormalizeDouble(iHigh(Symbol(), Period(), 6), Digits)とする。
Highheight = NormalizeDouble(iHigh(Symbol(), Period(), 7), Digits)とする。
Opentwo = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
Openthree = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits)です。
Closeone = NormalizeDouble(iClose(Symbol(), Period(), 0), Digits)です。
Closetwo = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits)です。
Closethree = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits)とする。
Closefour = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits)です。
Lowone = NormalizeDouble(iLow(Symbol(), Period(), 0), Digits)とする。
Lowtwo = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits)です。
Lowthree = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits)とする。
Lowfour = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits)です。
Lowfive = NormalizeDouble(iLow(Symbol(), Period(), 4), Digits)とする。
Lowix = NormalizeDouble(iLow(Symbol(), Period(), 5), Digits);
Lowseven = NormalizeDouble(iLow(Symbol(), Period(), 6), Digits)とする。
Low15 = NormalizeDouble(iLow(Symbol(), Period(), 14), Digits)とする。
Low25 = NormalizeDouble(iLow(Symbol(), Period(), 24), Digits)とする。

//----индикатор - условия--------------------------------------


double BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
double SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
double LowerBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1)とする。
double UpperBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_UPPER,1)です。
double MiddleBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_MAIN,1)です。
double Bears = iBearsPower(_Symbol,_Period,5, PRICE_CLOSE,0)。
double Bulls = iBullsPower(_Symbol,_Period,5, PRICE_CLOSE,0)。
double Parab = iSAR(_Symbol,_Period,0.002, 1, 0);

SLbuy = NormalizeDouble(Ask - StopLoss*Point, 5)。
TPbuy = NormalizeDouble(Ask + TakeProfit*Point, 5)。
SLsell = NormalizeDouble(Bid + StopLoss*Point, 5)。
TPsell = NormalizeDouble(Bid - TakeProfit*Point, 5)。

//-------------функции---------------------------------------

if ( アスク>0 && ビッド>0)
{

if (注文合計()<1))
if (クローズ[1]>オープン[1])
if(Bears < -0.00035 && MiddleBB > Ask)
{
ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "openbuy order", Magic, 0, Blue)
}
if(OrdersTotal()==1)
if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
CloseBuyPositions1()。
}





//---- 関数終了
}
//---------------------------------------------------------------------
void CloseBuyPositions1()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
文字列 CurrencyPair=OrderSymbol();
if(_Symbol==CurrencyPair)とする。
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL);
}
}
}




 
 int OrderOfSymbol=CounterOrderTradeType(-1);
 
//-------------функции---------------------------------------

if ( Ask>0 && Bid >0)
   {

 if (OrderOfSymbol<1)
    if (Close[1]>Open[1])
    if(Bears < -0.00035 && MiddleBB > Ask)
         {
    ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue);
         }
         
   
if (OrderOfSymbol==1)
   if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
    CloseBuyPositions1();
   } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
   {
   int cnt=0;
   //----
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==false) continue;
      if(OrderSymbol()!=_Symbol) continue;
      if(order_type == OrderType() || order_type == -1) cnt++;
      }
   //----
   return(cnt);
   }
 
Порт-моне тв:
//+------------------------------------------------------------------+
//| sova_2bars.mq4||←こちらをクリック
| Copyright 2020, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+

OrdersTotal() は、Metatrader 4 のすべてのポジションと注文の合計金額を返します。

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == iMagicNumber)
            if(OrderSymbol() == Symbol())
              {

               }

こうすることで、MedgXとシンボルの注文を分けることができます...

 

MakarFX さん、ありがとうございます...。コンパイル時に以下のエラーが発生します。

'CounterOrderTradeType' - function not defined test for many expt trade.mq4 48 19

'CounterOrderTradeType' - 関数宣言は、グローバル、ネームスペース、またはクラススコープでのみ許可されます test for many expt trade.mq4 141 5


MakarFX
MakarFX
  • www.mql5.com
Добавил тему Окно модификации Доброго времени суток. В терминале, если я дважды щелкаю мышью на линию ордера, то открывается окно модификации. Но если на линии находится цена открытия одного ордера и тейк профит другого, то открывается последний измененный ордер. Уважаемые Профи Добавил тему Нужен индикатор. Кто может написать такое? Я уже...