エキスパート: SerialMA_EA

 

SerialMA_EA:

このエキスパートアドバイザーは動的移動平均に基づいています。


作者: Scriptor

 

イェーイ!

//+------------------------------------------------------------------+
//| 取引環境の "未定義 "状態を返す。
//+------------------------------------------------------------------+
bool IsUncertainStateEnv(const string symbol_name,const ulong magic_number)
  {
   if(MQLInfoInteger(MQL_TESTER)) return false;
   int total=OrdersTotal();
   for(int i=total-1; i>WRONG_VALUE; i--)
     {
      if(OrderGetTicket(i)==0) continue;
      if(OrderGetInteger(ORDER_TYPE)>ORDER_TYPE_SELL) continue;
      if(OrderGetInteger(ORDER_MAGIC)!=magic_number) continue;
      if(!OrderGetInteger(ORDER_POSITION_ID) && OrderGetString(ORDER_SYMBOL)==symbol_name)
         return true;
     }
   return false;
  }

//+------------------------------------------------------------------+
||ポジション・チケット・アレイを埋める|
//+------------------------------------------------------------------+
bool FillingListTickets(const uint number_of_attempts)
  {
//--- 環境の状態をチェックする
   int n=0,attempts=int(number_of_attempts<1 ? 1 : number_of_attempts);
   while(IsUncertainStateEnv(symb,InpMagic) && n<attempts && !IsStopped())
     {
      n++;
      Sleep(sleep);
     }
   if(n>=attempts && IsUncertainStateEnv(symb,InpMagic))
     {
      Print(__FUNCTION__,": Uncertain state of the environment. Please try again.");
      return false;
     }
//---

//+------------------------------------------------------------------+
//| エキスパート・ティック機能|
//+------------------------------------------------------------------+
void OnTick()
  {
//--- ゼロ価格をチェックする
   if(!RefreshRates() || Point()==0) return;
//--- チケットリストへの記入
   int positions_total=PositionsTotal();
   if(prev_total!=positions_total)
     {
      if(FillingListTickets(num_attempts))
         prev_total=positions_total;
      else return;
     }
削除済み  

次の行を追加しないと、Expert Advisor は動作しません。

#include <Trade\SymbolInfo.mqh>

シリアルMA_EA