エラー、バグ、質問 - ページ 88

 
gumgum:

デポとプロフィット機能が自分だけないのが残念です

は1.#INFを与えています。

Servicedeskはすでに書いています...

というように、ドットの後のゼロは書けません。
double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.0;
 
sergey1294:
で、このようにドットの後に0を付けることはできません。

どう綴っても、1.#INFです。

10.であろうと10.0であろうと差はないようです。

 
gumgum:

どう綴っても、1.#INFです。

10.でも10.0でも違いはないようです。

表現を確認したところ

double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.; 
или 
double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.0;

エラーが出るわけでもなく、正常に動作しています。

2010.08.07 22:27:13     проверка (EURUSD,M5)    pro = 0.5929100000000001
 
sergey1294:

ただ、表現を確認しました。

エラーはなく、すべて正常に動作しています。

もちろん、大丈夫です!大丈夫です

2つのライブラリを使っているのですが...。その一部始終は書かない。

 
gumgum:

もちろん、大丈夫です!大丈夫です

2つのライブラリを使用しているのですが...。その一部始終は書かない。

なぜエラーがあるのかというと、例としてあげた式にエラーはない、エラーは他のものにあるはずだ。
 
sergey1294:
では、なぜエラーがあるのかというと、例としてあげた式にエラーはない、何か別のところにエラーがあるに違いないのです。
聞かなかったことにする)
 
gumgum:
とは聞いていない)。

では、あなたの投稿の意味は何なのでしょう

Жадь конечно что нет функции депо и прибыли просто у меня

double pro=AccountInfoDouble(ACCOUNT_BALANCE)/10000.;

дает 1.#INF. 

Сервисдеск уже написал... 
 
sergey1294:

では、あなたの投稿の意味は何なのでしょう

どこで質問を見たのですか?)
 
gumgum:
どこで質問を見たのですか?)
質問でなかったのなら、あなたの問題を助けようとしたことを謝ります。
 

私は一つの戦略を試すことにした。しかし、なぜかテスターではExpert Advisorの動作がおかしくなってしまいました。

長く使いたいと思ったからです。アルゴリズムはほぼスキャルパーですが。;)


そこで、Expert Advisorを入力するために来ているデータを確認することにしました。

気取らないExpert Advisorをはじめました。

input bool diskret=false;  // работать по открытию бара?

input bool File=true;
MqlTradeRequest mReq;
MqlTradeResult mRez;
int handle1,handle2;
double iBuffer1[],iBu1[];
double iBuffer2[],iBu2[];
double vol[22],OTS;
MqlDateTime newT,oldT;
datetime newTT,oldTT;

string FName;

int hF;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--------------Set default vaules for all new order requests
   mReq.action=TRADE_ACTION_DEAL;
   mReq.magic=777;
   mReq.symbol=Symbol();                 // Trade symbol
   mReq.deviation=3;                     // Maximal possible deviation from the requested price
   mReq.type_filling=ORDER_FILLING_AON;  // Order execution type
   mReq.type_time=ORDER_TIME_GTC;        // Order execution time
   mReq.comment="MAMASKHA_"+IntegerToString(PeriodSeconds()/60,2);
//----------------------- Set Volume pi
    Print ("----- Start init ---");
   
   oldTT=TimeCurrent()+51;TimeToStruct(oldTT,oldT);
   oldTT-=oldT.hour; oldTT-=oldT.min;
   printf("%02d.%02d.%4d %2d:%2d   %3d",oldT.day,oldT.mon,
          oldT.year,oldT.hour,oldT.min,
          SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL));
   StringConcatenate(FName,mReq.comment,"_",oldT.year,"x",oldT.mon,"x",
         oldT.day,"_",oldT.hour,"_",oldT.min,".csv");
   if (File) {hF=FileOpen(FName, FILE_WRITE|FILE_CSV|FILE_COMMON);
              if (hF<-1) Print ("Ошибка открытия файла ",FName," ",
                            GetLastError());
              if (File) FileWrite(hF,oldT.day,oldT.mon,
                   oldT.year,oldT.hour,oldT.min,"I"
                );
               Print ("Start on ",FName);   
              }
   Print ("Start ",mReq.comment);                              
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if (File) FileClose(hF);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {   

   bool poz=true;

   int i,per=PeriodSeconds();

   MqlTick tick;
   //------------------
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("Failed to get Symbol info!",per);
      return;
     }
   
   newTT=tick.time;
   if(newTT<=oldTT+per+1)
       {if (diskret)return;}
   else
   {
     
      MqlRates rates[];
      
     int copied=CopyRates(Symbol(),0,0,1,rates);
     if(copied<=0)
        Print("Ошибка копирования ценовых данных ",GetLastError());
        else oldTT=rates[0].time;
          
      
      TimeToStruct(oldTT,oldT);
      printf("%02d.%02d.%4d %2d:%2d",oldT.day,oldT.mon,
                  oldT.year,oldT.hour,oldT.min);
      TimeToStruct(newTT,newT);
      printf(" New %02d.%02d.%4d %2d:%2d",newT.day,newT.mon,
                  newT.year,newT.hour,newT.min);            
      if (File) FileWrite(hF,oldT.day,oldT.mon,
                   oldT.year,oldT.hour,oldT.min,"I",
                tick.ask,tick.bid,tick.last,tick.volume);
    }
   

   return;
  }

と変なログが出ました。データ期間がスキップされる理由を教えてください。

そしてもう一つ、ディレクトリに作成されるはずのファイル(xp2sp)が検出されません。

長い間MT5を調べていなかったので、完全に迷子になってしまいました・・・。

:(