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

 
danil77783:

こんにちは。質問ですが、2つの指標のシグナルごとに注文を出すEAが必要なのですが(ある組み合わせでシグナルを出す)、一言で言えば、指標のシグナルに応じてそれぞれ複数の買い注文、売り注文が 市場に存在する必要があります。しかし、マーケットに1つしか注文がなく、それが閉じるまで次の注文が開かないのですが・・・。 注文数の問題なのでしょうか?ヒントをください。必要であれば、コードをお送りします。

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

if (OrdersTotal()==0)..." の条件を削除する。- ただ、「エントリーを検索して、注文が全くないときだけ新規注文を出す」というだけです。

もし、そのような条件なしに新規注文の大きなパックを開けたくない場合は、追加の条件を作成する必要があります。そして、これはあなたの戦略に依存します:前のものの時間T内に新しいものを開くのではなく、バーを制御したり、注文間の距離をpipsで維持する...。

 

こんにちは。まずは、初心者を助けてくれることに、心から感謝します。初歩的な質問に毎日毎日、一人、また一人と自分で答えていたらきりがない。

そして、疑問はこうです。

以前、mql4が少し変わっていた時に思ったのですが、起こりうるエラーの後のopen/close/modifyingなどの注文処理はreturn(0)関数で中断されるべきです。 そのため、現在の 価格でいくつかのオープンオーダーを閉じる必要がある場合、テスターでは新しいバーごとにそれらを一つずつ閉じ、それはおそらくテスターで(フレームの各ティックについて)実画像を歪めてしまうでしょう(時にはかなり劇的です、)。新しいEAは、いくつかの注文をシグナルによって正確に、そして部分的に決済する必要があります。

質問:毎回ループを中断することなく、ループの中で全ての処理を行う(部分的に閉じる)ことは可能でしょうか?テスターは対応できるのか?つまり、1つのバーですべてを部分的に閉じることができるようになるのでしょうか?

 
XpeHHukoB:

こんにちは。まずは、初心者を助けてくれることに、心から感謝します。初歩的な質問に毎日毎日、一人、また一人と自分で答えていたらきりがない。

そして、疑問はこうです。

以前、mql4が少し変わっていた時に思ったのですが、起こりうるエラーの後のopen/close/modifyingなどの注文処理はreturn(0)関数で中断されるべきです。 そのため、もし現在の 価格でいくつかのopen orderをcloseしなければならない場合、テスターでは新しいバーごとにそれらを一つずつcloseしてしまい、おそらくテスターの実際の画像(フレームの各ティックについて)が(時にはかなり大幅に)歪めてしまうと思います。新しいEAは、いくつかの注文をシグナルによって正確に、そして部分的に決済する必要があります。

質問:毎回ループを中断することなく、ループの中で全ての処理を行う(部分的に閉じる)ことは可能でしょうか?テスターは対応できるのか?つまり、1つのバーですべてを部分的に閉じることができるようになるのでしょうか?

それは、ある小さな条件下で問題なく行えることです。コードが正しく 書かれている必要があります。

 
Seric29:
2つの関数(おそらくオーバーロード)がある場合、例えば、int Funkz(int a) int Funkz(int a, int b, int w), そしてプログラムをコンパイルすると、どちらの関数が速く動作するでしょうか、それは1引数を持つことを考慮して最初のまたはそれは問題ではない、プログラムがすでに構築されているため、何が本体で説明されている、またはすべての後に関数引数が メモリを確保されているスタックを表すので小さな効果があるのでしょうか。

同じ名前で引数の数が違う2つの関数があったとして、どちらが早く呼ばれるかは問題ではありません。 関数を呼ぶときは、Funkz()とは書かず、引数の数を指定します。

問題は、コンパイラが同じ名前の関数をかみ砕くかどうかだ。

私の理解では、コードの話ではなく、コンパイルされたファイルの話なのでしょうか?

 
あの...Alexeiさん、回答ありがとうございました。
 
ヘルプは、我々はピップ(損失のこのレベル - ユーザー調整可能なパラメータ)の値に等しいSLを持って、我々は一日の安値または高値のシンボル価格を持っている - それは第二ストップロスと 時間の異なる点で彼らは異なるものになるようだ、私は自動比較機能が必要 - そのロボットの後に最小のパラメータ(SLまたはIlot - 購入または販売用SL -iHign) 以下の所望の結果を与えていないコードです、私はそれが何であるかを理解することはできません。..
   пользовательский параметр - extern int    SL               = 1000;
//---------------------------------------------------------------
bool CheckForStopLossSell()
  {
   double Hign=iHigh(Symbol(),PERIOD_D1,1);
   double StopLoss=NormalizeDouble(SL*Point,Digits);
   double uroven = StopLoss;
   double OOPS=iLow(Symbol(),PERIOD_D1,1)-StepOpenOrder*Point;
   double StopLossS=NormalizeDouble(OOPS+StopLoss,Digits);
   //----------------------------------------
   if(Hign>StopLoss) Alert("StopLoss");
   return bool(StopLossS);
   
   //else
   if(Hign<StopLoss) Alert("Hign");
   return bool(Hign); 
   
   //else
   Alert("uroven");
   return bool(uroven); 
   
  }
//--------------------------------------------------------------
bool CheckForStopLossBuy()
  {
   double LOW=iLow(Symbol(),PERIOD_D1,1);
   double StopLoss=SL*Point;
   double uroven = StopLoss;
   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;
   double OOPB = (iHigh(Symbol(),PERIOD_D1,1)+SPREAD)+StepOpenOrder*Point;
   double StopLossB=OOPB-StopLoss;
   //-------------------------------------------
   if(LOW<StopLoss) Alert("StopLoss"); 
   return bool(StopLossB);  
   
   //else
   if(LOW>StopLoss) Alert("LOW"); 
   return bool(LOW);  
   
   //else
   Alert("uroven");
   return bool(uroven);  
   
  }
//---------------------------------------------------------------
 
XpeHHukoB:

同じ名前で引数の数が違う2つの関数があったとして、どちらが早く呼ばれるかは問題ではありません。 関数を呼ぶときは、Funkz()とは書かず、引数の数を指定します。

問題は、コンパイラが同じ名前の関数をかみ砕くかどうかだ。

コードではなく、コンパイルされたファイルということですか?

また、機能が異なるのであれば、引数が少ない場合と多い場合ではどちらが速く動作するのでしょうか?異なる数字を積み重ねることも負荷になると思うのですが、それとも便宜上なのでしょうか。

 

defineの書き方を教えてください。

私はこのように書いています。

#define  my_POS    cst_Position.my_Position

この構造をdefに変更すると、すべてが機能するようになります。

my_POS.SelectByTicket(pos_DATA(DATA_TICKET))

しかし、my_POSとだけ書くと ドットの後に機能リストがポップアップされない。

に同じ。

#define  pos_DATA  cst_Position.getPositionData

pos_DATA(.) の後にヒントがない。

私は何を間違えているのだろう?

 
bool operation=0;for(int pos=0;pos<OrdersTotal();pos++)
     {if ( OrderSelect (pos, SELECT_BY_POS) == false )  continue;
      if ( OrderSymbol()==Symbol()) break;}


//=========================================================================================================
if(Hour()>=2&&Hour()<=18&&operation==0){
if(OPB1==1)
   {operation=1;if(operation==0 &&OrderSymbol()!=Symbol()||OrdersTotal()==0)
        {OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-ss*Point,Ask+T*Point,"My order#",mn,0,Green);}}
        if (OrderType()==OP_BUY &&OrdersTotal()==1&&OrderMagicNumber()==8)
        {OrderSend(Symbol(),OP_SELLSTOP,5*lots,OrderOpenPrice()-(ss-ss/4)*Point,0,0,SstopClose,"My order#",80,0,Red);}
       

if(OPS1==1)
   {operation=1;if(operation==0 &&OrderSymbol()!=Symbol()||OrdersTotal()==0)        
         {OrderSend(Symbol(),OP_SELL,lots,Bid,0,Ask+ss*Point,Bid-T*Point,"My order#",mn,0,Red);}}
         if (OrderType()==OP_SELL &&OrdersTotal()==1&&OrderMagicNumber()==8)
         {OrderSend(Symbol(),OP_BUYSTOP,5*lots,OrderOpenPrice()+(ss-ss/4)*Point,0,0,BstopClose,"My order#",80,0,Green);}}



if(OrderMagicNumber()==80){operation=0;
 {for( int  ii=OrdersTotal()-1;ii>=0;ii--)
       {OrderSelect(ii, SELECT_BY_POS);
        int  type   = OrderType();bool result = false;
        switch(type)
         {case OP_BUYSTOP   : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );//break;
          case OP_SELLSTOP  : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); //break;
         
          result = OrderDelete( OrderTicket() );//break;
          }}}}

専門家の皆さん、こんにちは。

この問題を解決するためにご協力をお願いします。

どのペアをテストしてもすべて正常に動作しますが、他の通貨で作業する場合、保留中の注文が 置かれず(保留中の注文を公開する必要があります)、利食いトリガーの後に閉じません。

可能であれば、コードを変更する方法をアドバイスしてください。



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

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
ファイル:
c5k8icfo.png  55 kb
 
Motzaart:

専門家の皆さん、こんにちは。

この問題を解決するためにご協力をお願いします。

...

コードを 正しく挿入してください。