Скачать MetaTrader 5

Проблемма с функцией MessageBox в Build 208 (21 Aug 2007)

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Forex Trader
114297
Forex Trader  
Функция MessageBox в скрипте запускается только 1 раз на одном символе. При повторном запуске скрипта панель не появляется.
Build 208 (21 Aug 2007). Исходник скрипта "Инфо"
// Инфо.mq4
// Скрипт
// Информация о счете и свойства символа
#property copyright "mandorr@gmail.com"
#include <WinUser32.mqh>
void start() {
   string сurrency=AccountCurrency();
   double deposit;
   double withdrawal;
   for (int i=0; i<HistoryTotal(); i++) {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) break;
      double openprice=OrderOpenPrice();
      double closeprice=OrderClosePrice();
      double profit=OrderProfit();
      if (openprice>0) continue;
      if (closeprice>0) continue;
      if (profit>0) deposit+=profit;
      if (profit<0) withdrawal+=-profit;
   }
   string symbol=Symbol();
   string base=StringSubstr(symbol,0,3);
   string market;
   int margin_mode=MarketInfo(symbol,MODE_MARGINCALCMODE);
   switch (margin_mode) {
      case 0 : market="Forex"  ; break;
      case 1 : market="CFD"    ; break;
      case 2 : market="Futures"; break;
      case 3 : market="Indexes"; break;
   }
   string StopOutUnit;
   if (AccountStopoutMode()==0) {StopOutUnit="%";} else {StopOutUnit=AccountCurrency();}
   double ask=MarketInfo(symbol,MODE_ASK);
   double bid=MarketInfo(symbol,MODE_BID);
   double margin_free=AccountFreeMargin();
   double margin_buy=MarketInfo(symbol,MODE_MARGINREQUIRED); if (margin_buy<0) margin_buy=0;
   double margin_sell=margin_buy; if (base!=сurrency && ask>0) margin_sell=NormalizeDouble(margin_buy*bid/ask,2);
   double lots_buy =0;
   double lots_sell=0;
   if (margin_buy >0 && margin_free>0) lots_buy =margin_free/margin_buy ;
   if (margin_sell>0 && margin_free>0) lots_sell=margin_free/margin_sell;
   double lots_min=MarketInfo(symbol,MODE_MINLOT);
   double lots_max=MarketInfo(symbol,MODE_MAXLOT);
   double lots_step=MarketInfo(symbol,MODE_LOTSTEP);
   int count_buy =0; if (lots_step>0) count_buy =lots_buy /lots_step;
   int count_sell=0; if (lots_step>0) count_sell=lots_sell/lots_step;
   lots_buy =lots_step*count_buy ; if (lots_buy <lots_min) {lots_buy =0;} 
   lots_sell=lots_step*count_sell; if (lots_sell<lots_min) {lots_sell=0;} 
   double tick_value=MarketInfo(symbol,MODE_TICKVALUE);
   double swap_buy =0; if (lots_min>0) swap_buy =MarketInfo(symbol,MODE_SWAPLONG )/lots_min;
   double swap_sell=0; if (lots_min>0) swap_sell=MarketInfo(symbol,MODE_SWAPSHORT)/lots_min;
   double swap_buy_ticks =0; if (tick_value>0) swap_buy_ticks =swap_buy /tick_value;
   double swap_sell_ticks=0; if (tick_value>0) swap_sell_ticks=swap_sell/tick_value;
   string type="Реал"; if(IsDemo()) type="Демо";
   string field="          ";
   string msg=""
   +"Компания: "+AccountCompany()+field
   +"\n"+"Имя владельца счета: "+AccountName()+field
   +"\n"+"Тип счета: "+type+". Сервер: "+AccountServer()+field
   +"\n"+"Номер счета: "+AccountNumber()+field
   +"\n"+"Валюта счета: "+сurrency+field
   +"\n"+"Плечо: "+AccountLeverage()+field
   +"\n"+"Уровень Stop Out: "+AccountStopoutLevel()+" "+StopOutUnit+field
   +"\n"+"Пополнение баланса: "+DoubleToStr(deposit,2)+" "+сurrency+field
   +"\n"+"Снятие с баланса: "+DoubleToStr(withdrawal,2)+" "+сurrency+field
   +"\n"+"Баланс: "+DoubleToStr(AccountBalance(),2)+" "+сurrency+field
   +"\n"+"Средства: "+DoubleToStr(AccountEquity(),2)+" "+сurrency+field
   +"\n"
   +"\n"+"Символ: "+symbol+" ("+market+")"+field
   +"\n"+"Свободно лотов для BUY : "+DoubleToStr(lots_buy,2)+field
   +"\n"+"Свободно лотов для SELL: "+DoubleToStr(lots_sell,2)+field
   +"\n"+"Залог за 1 лот для BUY : "+DoubleToStr(margin_buy ,2)+" "+сurrency+field
   +"\n"+"Залог за 1 лот для SELL: "+DoubleToStr(margin_sell,2)+" "+сurrency+field
   +"\n"+"Своп за 1 лот для BUY : "+DoubleToStr(swap_buy,2)+" "+сurrency+" ("+DoubleToStr(swap_buy_ticks,2)+" pips)"+field
   +"\n"+"Своп за 1 лот для SELL: "+DoubleToStr(swap_sell,2)+" "+сurrency+" ("+DoubleToStr(swap_sell_ticks,2)+" pips)"+field
   +"\n"+"Шаг изменения цены лота: "+DoubleToStr(tick_value,2)+" "+сurrency+" (1 pips)"+field
   +"\n"+"Минимальный лот: "+DoubleToStr(lots_min,2)+field
   +"\n"+"Максимальный лот: "+DoubleToStr(lots_max,2)+field
   +"\n"+"Шаг изменения лота: "+DoubleToStr(lots_step,2)+field
   +"\n"+"Пункт: "+DoubleToStr(MarketInfo(symbol,MODE_POINT),MarketInfo(symbol,MODE_DIGITS))+field
   +"\n"+"Точность: "+DoubleToStr(MarketInfo(symbol,MODE_DIGITS),0)+field
   +"\n"+"Спред: "+DoubleToStr(MarketInfo(symbol,MODE_SPREAD),0)+field
   +"\n"+"Уровень стопов: "+DoubleToStr(MarketInfo(symbol,MODE_STOPLEVEL),0)+field
   ;
   string title="Информация о счете и свойства символа";
   MessageBox(msg,title,MB_OK|MB_ICONINFORMATION);
}
// End


Forex Trader
114297
Forex Trader  
Проверим
Forex Trader
114297
Forex Trader  
int result=MessageBox(msg,title,MB_OK|MB_ICONINFORMATION);
Print("MessageBox ",result);
Первый раз возращается 1.
Последующие разы возращается 0.
Forex Trader
114297
Forex Trader  
Спасибо. Причину нашли и устранили. Как раз сегодня будем выкладывать исправленный билд.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий