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

 
MT4でマーケットから、また保留中の注文 から取引を開始、終了する方法を教えてもらえますか?
 

親愛なるプログラマーの皆さん、こんにちは!!!
キャンドルの刻みカウンターを作っているのですが、何かが間違っているようです値段が上がっている時だけティックをカウントさせたいのですが、上がっている時も下がっている時もカウントされてしまいます(全ティック、伸びているティックだけ欲しい)plzを見てください...

double CountTickBUY()
{

double old_price;
double delta_cur; 
double price = 0;
double old_open_price = 0;

for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
         if(OrderSymbol() == _Symbol && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
           {
           old_price = iClose(NULL, 0 , i);
           price = iOpen(NULL, 0 , i);

           delta_cur = old_price > price;
           if(delta_cur > 0) 
             {
             count_plusbuy++;
             }
           }
   }
   return(count_plusbuy);
}
 
sviter-pro:

親愛なるプログラマーの皆さん、こんにちは!!!
キャンドルの刻みカウンターを作っているのですが、何かが間違っているようです値段が上がっている時だけティックをカウントさせたいのですが、上がっている時も下がっている時もカウントされてしまいます(全ティック、伸びているティックだけ欲しい)plzを見てください...

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}
 
Konstantin Nikitin:

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

 

Konstantin Nikitin: Считает тики на кождой свече хорошо, но по 2 раза! Тоесть если отсчет пошел от 1.00000 и дошел до 1.00100 он 100 пунктов щитает, потом когда спустилась цена до 1.00080 он ждет и не считает, но когда цена опять начинает расти от 1.00080 то опять начинает считать пункты, а надо что бы ждал до 1.00100 и от нее считал дальше!!!

int CountTickBUY()
{
   static double    old_price     = Bid;
   static datetime  time_bar      = Time[0];
   static int       count_plusbuy = 0;
   
   if( time_bar != Time[0] )
   {
      count_plusbuy = 0;
      time_bar      = Time[0];
   }
   
   if( Bid - old_price > 0 )
      count_plusbuy++;
   old_price = Bid;

   return(count_plusbuy);
}



 

IsTradeAllowed"関数の第2フォームが呼び出されたとき、具体的に何をチェックするのか説明してください。

最初のフォームでは、自動売買が可能かどうか、自由な取引の流れがあるかどうかがチェックされていますね。第2形態はどうでしょうか。第2フォームが呼び出されたときに行われるチェックは、具体的にどのようなものなのでしょうか。

 
Asa saas:

IsTradeAllowed"関数の第2フォームが呼び出されたとき、具体的に何をチェックするのか説明してください。

最初のフォームでは、自動売買が可能かどうか、自由な取引の流れがあるかどうかがチェックされていますね。第2形態はどうでしょうか。2つ目のフォームが呼び出されたときに行われるチェックは、具体的にどのようなものなのでしょうか?

第二の形式は、指定されたシンボルについて、指定された時刻に取引が可能かどうかの情報を返します。


トレードフローがフリーかどうか isTradeContextBusy

 
Alekseu Fedotov:

2つ目の呼び出しは、指定されたシンボルの指定された時間での取引能力に関する情報を返します。


トレードフローがフリーかどうか isTradeContextBusy

IsTradeAllowed」関数の第一形態は、トレードスレッドがフリーかどうかのチェックも兼ねているのではないでしょうか?

私は、注文を実行する前に市場が開いているかどうかを調べるために、「IsTradeAllowed」関数の第2形式を使用するだけです。

しかし、「IsTradeContextBusy」のようなフリーフローが利用可能かどうかを別の関数でチェックする必要があるのか、それとも「IsTradeAllowed」の第2形態がすでにこのチェックを行っているのか、よく理解できていないのです。

 
Asa saas:

IsTradeAllowed」の第一形式は、トレードフローがフリーかどうかもチェックするのでは?

私は、注文を実行する前に市場が開いているかどうかを調べるために、「IsTradeAllowed」関数の第2形式を使用するだけです。

ただ、「IsTradeContextBusy」のようなフリーフローが使えるかどうかをチェックするために別途関数を使う必要があるのか、それとも「IsTradeAllowed」の第2形態がすでにそのチェックをしているのか、よくわからない。

1.いいえ

2.いいえ、Expert Advisorを使用した取引は できませんが、手動で行うことは可能です。

3. 取引の流れを確認するために別の関数を使用する必要がある ("IsTradeContextBusy()")

 
Asa saas:

最初のフォーム「IsTradeAllowed」は、トレードフローがフリーかどうかのチェックも兼ねているのでは?

はい、そうです。少なくとも、ドキュメントにはそう書いてある。私自身は、なぜそうするのかわかりませんが、事実は変わりません。

Возвращаемое значение

Возвращает true, если эксперту разрешено торговать и поток для выполнения торговых операций свободен, иначе возвращает false.

IsTradeAllowed」関数の2番目の形式を使って、注文を実行する前にマーケットが開いているかどうかを調べるだけです。

しかし、「IsTradeContextBusy」のようなフリーフローが可能かどうかをチェックする機能を別途使用しなければならないのか、それとも第2形式の「IsTradeAllowed」がすでにそのようなチェックを行っているのか、よく分かりません。

しかし、第2形態では明確ではありません。未来や過去の時間を担っているのです。