どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 117

 

メタ引用符でそのような柵をどう扱うか教えてください)。

 
Zhunko:
メッセージを傍受する必要がある。

すでに実行されている場合は、キューから削除されている。

OK、次の質問があります。

#property indicator_chart_window
bool First = true;
int start(){
   if(First){
      int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефакты
      Alert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
      First = false;
   }
   if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значение
      Alert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);      
      indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем его
      Alert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
   }
   return(0);
}

- 最初のindexFirstLeftOnChartが0であることが判明したため、ティック ごとにビープ音が鳴る。どうすれば戦えるのか?ビルド509です。

 
static bool First = true;
 
gyfto:

すでに実行されたメッセージは、キューから削除されています。

傍受は通常、実行前に行われる。そうでなければ、なぜインターセプトなのか不明です。
 
FAQ:
static bool First = true;


ずん子
通常は実行前にインターセプトされる。そうでなければ、何のために傍受する必要があるのか理解できません。


実行の前に疑問はない。したがって、AccountNumber()の有効性チェックをDLLに移す意味はない。これは、アカウント番号がすでにdllに保存されていることを意味します。

 
static int indexFirstLeftOnChart;
 

単純な点では何かある、頭が痛い。注文を検索する機能があります。

t - すべてのオーダーのカウンタ.

p - 保留注文のカウンタです。

//+-------------------------------------------------------------------------------------+
//| Поиск своих ордеров                                                                 |
//+-------------------------------------------------------------------------------------+
void FindOrders(int& t, int& p)
{
   int total = OrdersTotal() - 1;
   t = 0;
   p = 0;
   for (int i=total; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderType() > 1)
      {
          p++;
      }
      t++;
      pr ("FindOrders(): " + "t = " + t + "   " + TimeToStr(TimeCurrent()));
      pr ("FindOrders(): " + "p = " + p + "   " + TimeToStr(TimeCurrent()));
   }
}

私は最初からそう呼んでいます。

int start()
{
   if (g_lastBarTime == Time[0])         // На текущем баре все необходимые действия..
       return (0);                               // ..уже были выполнены
   
   int oTotal = 0, oPending = 0;
   
   FindOrders(oTotal, oPending);
   
   int signal = GetGeneralSignal(oTotal);
   
   if (signal != SIGNAL_NO)
   {
       if (!Trade(signal))
       return(0);
   }
   else

実際に開いてみると、注文がないときでもこのように表示されます(注文がないときでも、あるかのように印刷される...)。

なぜ、そんなことが可能なのか?

 
皆さん、こんばんは。最近、MQL4をマスターすることにしました(Sergey Kovalevのチュートリアルを勉強しています)。今日は練習がてら、簡単な注文受付スクリプトを作ってみることにしました。コードは以下の通りです:
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());

を返します。

}

スクリプトは動作せず、エラー4109(Trading not allowed)が表示されました。状況を変えようとすると、エラー4016(Uninitialised array)も表示されました。これらのエラーの原因と、結局のところ簡単な取引開始スクリプトの作り方を知りたいのです。チュートリアル https://book.mql4.com/ru/trading/ordersend の例をコピーしただけですが(その中に関数 GetLastError を追加しただけです)、とにかくエラー 4109 が発生しました。

int start()                                  // Спец. функция start()
  {                                          // Открытие BUY
   OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
   return;                                   // Выход из start()
  }

Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
 
預金=タイプ6
 
注文時のコメントをデフォルトで設定する方法があれば教えてください。