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

 
Tenimagalon:
アレックス、あなたもそれに関与している:) さて、ミスタープログラマー、あなたはコンセンサスを持っていますか? 見て、主な機能は、総利益に基づいて同じタイプの注文を閉じることです。4つのポジションが開かれ、そのうちの2つはEURUSD(買いと売り)、2つはUSDCHF(買いと売り)である。)買い注文が利益を得たらそれは閉じ、売り注文はそのままにするか、売り注文をそのままにする。

キャッチ

double MyProfit=1000; // уровень профита
//+--------------------------------------------------------------------------------------------------------------------+
//| Expert tick function                                                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Open_Pr("",0)>MyProfit)DelOrders("",0); // закрываем покупки
   if(Open_Pr("",1)>MyProfit)DelOrders("",1); // закрываем продажи
//---
  }
//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита открытых позиций                                                               |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
double Open_Pr(string sy="", int or_ty=0)
  { double p = 0;
   if (sy == "0") sy = Symbol();
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if(OrderSymbol() == sy || sy == "")
           {
            if(OrderType()==or_ty) {p+=OrderProfit()+OrderSwap()+OrderCommission();}
           }
        }
     }
   return(p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Функция удаления и закрытия ордеров                                                                                |
//| or_ty=0 - ордера типа BUY                                                                                          |
//| or_ty=1 - ордера типа SELL                                                                                         |
//+--------------------------------------------------------------------------------------------------------------------+
void DelOrders(string sy="", int or_ty=0)
  {
   while(true)
     {
      bool find_order=false;
      //----
      if (sy == "0") sy = Symbol();
      for(int pos=OrdersTotal()-1;pos>=0;pos--)
      if(OrderSelect(pos,SELECT_BY_POS)==true)
      if(OrderSymbol() == sy || sy == "")
        {
         find_order=true;
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); int slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrBlue)==false){}
           }
         //----
         if(OrderType()==or_ty)
           {
            RefreshRates(); slip=(int)(((Ask-Bid)/Point)*2);
            if(OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrRed)==false){}
           }
         Alert("Все ордера закрыты!");
        } 
      if(find_order==false) Alert("Нет ордеров!");break;
     } 
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
Tenimagalon:
アレックス、君も参加してるんだね :)) それで、プログラマーさん、コンセンサスは取れているのかい? いいかい、問題は同じタイプの注文をトータルの利益で閉じることだ。4つのポジションが開いていて、EURUSD(買い・売り)の2つとUSDCHF(買い・売り)の2つだ。)買い注文が利益を得たらそれは閉じ、売り注文はそのままにするか、売り注文をそのままにする。

このように?:)

1

 
MakarFX:

キャッチ

うーん、面白い。)
 
Taras Slobodyanik:

このように?:)


異なるペアで3つのポジションを開いている場合、つまり、2つのBaiと1つのsitは、はい、このケースでは、ロボットは、合計の利益が達成されたときにペアを閉じます。2つのペアで4つのポジションを持とうとすると、この場合、専門家は買いまたは売りのいずれかの注文のペアを閉じ、合計の利益を得ることはできません。しかし、彼はEURUSDの買いとUSDCHFまたは他の選択されたペアを購入することを閉じます。
 
Taras Slobodyanik:

このように?:)


ダイアログボックスは 自分で作ったのか、それともSBが 作ったのか?
 
Tenimagalon:
異なるペアで3つのポジションを建てた場合、つまり2つの買いポジションと1つの売りポジションがある場合、はい、この場合、ロボットは合計の利益が達成されたときにポジションを閉じます。2つのペアで4つのポジションを持とうとすると、この場合、専門家は買いまたは売りのいずれかの注文のペアを閉じ、合計の利益を得ることはできません。しかし、彼はEURUSDの買いとUSDCHFまたは他の選択されたペアを購入することを閉じます。

ここに多くのベイとセルフがあります)

2

 
MakarFX:
ダイアログボックスは 自作ですか、SB ですか?

パネルはありますか?

ps.すればオブジェクトがある場合を除く。

 
Taras Slobodyanik:

パネルはありますか?

はい、だから聞いているんです。

自分でやった場合は、コード(折りたたみ、展開、移動)を共有してください。

 
Taras Slobodyanik:

ここに多くのベイとセルフがあります)

タラス :)EURとCHFでそれぞれ1つずつ、計4つのポジションを建て、さらにEURの売りとCHFの売りの2つを建てます。 そして買いと売りが共通の利益に達したときに、ボットがその両方を閉じるかどうか見てください。また、画面には、アプリオリでないはずの1つの商品の注文が表示されています。
 
Tenimagalon:
タラス :)ユーロのロング、スイスフランのロング、そしてユーロの売り、スイスフランの売りの4つのポジションを一度に建てます。 そして、買いと買いの合計が利益に達すると、ボットがその両方をクローズするかどうか見ます。また、画面には、アプリオリでないはずの1つの商品の注文が表示されています。

括りが間違っている

例えば、一方のペア(買い)ではドルの買いがあり、もう一方のペア(売り)ではドルの売りがある可能性があります。