初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 5

 
ローソク足ではなく、「All ticks, the most accurate method」モードと他のモードでも始値を 表示するだけです。
MT4 Batter volumもテスターでは不十分です。
ファイル:
 

なぜ、毎回のクリックで 開くのか、教えてください。

void OnTick()
  {
   Alert(Sborinfo(Magic));
   if(Sborinfo(Magic)<=0)
     {
      MassivPrice(step); 
      tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
      if(tiket>=0
         LastPrice=Ask
      else LastPrice=-1
     }
   MassivPrice(step);
   tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
   if(tiket>=0)
      LastPrice=Bid;
   else LastPrice=-1;
  }
//+------------------------------------------------------------------+
int Sborinfo(int magic)
  {
   for(int i=0; i<OrdersTotal(); i++)
     {
      Print("колличество ордеров ",kol);
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
         kol++;
     }
   Print("новые ордера ",kol);
   return(kol);
  }
 
Ibragim Dzhanaev:

なぜ、毎回のクリックで 開くのか、教えてください。

なぜなら、私はいつもこのモードでテストしているからです

void OnTick()
  {
   Alert(Sborinfo(Magic));
   if(Sborinfo(Magic)<=0)
     {
      MassivPrice(step); 
      tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
      if(tiket>=0
         LastPrice=Ask
      else LastPrice=-1
     }
   MassivPrice(step);
   tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
   if(tiket>=0)
      LastPrice=Bid;
   else LastPrice=-1;
  }
//+------------------------------------------------------------------+
int Sborinfo(int magic)
  {
   for(int i=0; i<OrdersTotal(); i++)
     {
      Print("колличество ордеров ",kol);
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
         kol++;
     }
   Print("новые ордера ",kol);
   return(kol);
  }
ファイル:
 
Ibragim Dzhanaev:

なぜ、毎回のクリックで 開くのか、教えてください。

なぜなら、そのようにコードが書かれているからです。

簡単に言うと、「注文がなければ買い、1ティックごとに売りを開く」というアルゴリズムです。

 
Vitalie Postolache:

なぜなら、そのようにコードが書かれているからです。

簡単に言うと、「注文がなければ買い、1ティックごとに売りを出す」というアルゴリズムです。

追加条件なしで動作させるには、どのようにコードを変更すればよいのでしょうか?
Alert(Sborinfo(Magic));
  // Closse(Magic);
   if(Sborinfo(Magic)==0)
     {
     Print("количество ордеров ",Sborinfo(Magic));
      MassivPrice(step);
      if(OrdersTotal()<2)// без таких условий
         tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,0,0,Green);
      if(tiket>=0)
         LastPrice=Ask;  
     }

   MassivPrice(step);
   if(OrdersTotal()<2)// без таких условий
      tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,0,0,Red);
   if(tiket>=0)
      LastPrice=Bid;
  
  }
//+------------------------------------------------------------------+
int Sborinfo(int magic)
  {
  kol=0;
   for(int i=0; i<OrdersTotal(); i++)
     {
     Print(" чему ровно кол " , kol );
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic)
      {
      Print(" ордера после " , kol );
      
        // kol++;
         }
     }
   return(kol);
  }
 
Ibragim Dzhanaev:
追加条件なしで動作するようにコードを変更するにはどうすればよいですか?

でも、買うのも売るのも必要で、その数を制限するなら無理です。ただ、OrdersTotal() は見ずに、どれだけ買ってどれだけ売ったかをカウント することになります。

また、OrdersTotal()使用 する場合、なぜこの「if(Sborinfo(Magic)==0)」が 必要なのでしょうか

 
Vitalie Postolache:

でも、買うのも売るのも必要で、その数を制限するなら無理です。ただ、OrdersTotal() は見ずに、どれだけ買ってどれだけ売ったかをカウント することになります。

また、OrdersTotal()使用 する場合、なぜ「if(Sborinfo(Magic)==0)」が 必要なのでしょうか?

こんな感じ?もっと簡単な方法はないのでしょうか?
{
  CloseFirst(Magic);
   int b=0;
   int s=0;
   for(int i=0; i<=OrdersTotal(); i++)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==Magic && OrderSymbol()==_Symbol )
        {
         if(OrderType()==OP_BUY)
            b++;
         if(OrderType()==OP_SELL)
            s++;
        }
   if(b==0)
      tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,Magic,0,Green);
  if(s==0)
      tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,Magic,0,Red);
      }
 

同志よ!質問があります。
Expert Advisorは、前日の極値に基づいて、その日の初めから00:00に保留中の注文をオープンします。

平日は問題なく動くのですが、月曜日のオープニングで保留中の注文が金曜日の極値ではなく、なぜか木曜日の水準 で発注されます。どうして?

OpenTime="00:00";
currtime=TimeToStr(TimeCurrent(),TIME_MINUTES);
Format=Digits();
DH=NormalizeDouble(iHigh(NULL,PERIOD_D1,1),Format) ;
DL=NormalizeDouble(iLow(NULL,PERIOD_D1,1),Format);
if (currtime==OpenTime)
{
отложки
}
 
Ibragim Dzhanaev:
こんな感じか?もっとシンプルな方法はないのでしょうか?

ええ、そんなもんです。どれだけシンプルになったか?

 
Vitalie Postolache:

ええ、そんなもんです。もっと簡単にできないか?

アレイに関するレッスンをご存知ですか?もしそうなら、リンクを送ってください。
理由: