Errori, bug, domande - pagina 259

 

Moderatori, una domanda per voi.

Non posso inviare una richiesta a servicedesk.

E il pulsante di chiusura non funziona

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
sergeev:

Moderatori, una domanda per voi.

Non posso inviare una richiesta a servicedesk.

E il pulsante "Chiudi" non funziona

Si prega di riprovare. Servicedesk fa parte di un sistema aziendale interno che è stato riavviato di recente.
 
Potete dirmi come sapere se un trade ha chiuso su uno stop loss?
 
Vorrei sapere se c'è un'alternativa allo script del ciclo infinito in 5, perché un tale script è molto capriccioso, vorrei che continuasse a funzionare quando si riapre il terminale o si cambia il timeframe?
 
Olegts:
Vorrei sapere se c'è un'alternativa allo script del ciclo infinito in 5, perché un tale script è molto capriccioso, vorrei che continuasse a funzionare quando si riapre il terminale o si cambia il timeframe?

Se siete soddisfatti della frequenza minima di 1 secondo allora OnTimer, altrimenti

Finché non c'è un'operazione di microsecondi in OnTimer.

 
possibile perdita di dati a causa della conversione del tipo ChartObject.mqh 213 4
possibile perdita di dati a causa della conversione del tipo ChartObject.mqh 481 4
possibile perdita di dati a causa della conversione del tipo ChartObject.mqh 867 17
possibile perdita di dati a causa della conversione del tipo ChartObjectsTxtControls.mqh 519 4

Bild 375 - vornings è apparso nelle biblioteche standard. Potrebbero essercene altri, non li ho ancora controllati.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Urain:

Se vi accontentate di una frequenza minima di 1s allora OnTimer, altrimenti

Fino a OnTimer non c'è nessuna operazione al microsecondo.

Grazie, è necessario un intervallo più breve, quindi è la vecchia maniera :)
 
nanaos:
Potreste dirmi come faccio a sapere se un trade è stato chiuso da uno stop loss?

In MT5 non è il trade che chiude sullo stop loss, ma la posizione, al momento si può sapere solo dal commento del trade che ha chiuso la posizione sullo stop loss. Ecco un codice di esempio.

void Event()
  {
   if(!HistorySelectByPosition(ID))return;
   double margin=0.0;
   bool res;
   int total=HistoryOrdersTotal();
   ulong deal_ticket=HistoryDealGetTicket(total-1);
   string coment=HistoryDealGetString(deal_ticket,DEAL_COMMENT);
   long deal_type=HistoryDealGetInteger(deal_ticket,DEAL_TYPE);
   double volume=HistoryDealGetDouble(deal_ticket,DEAL_VOLUME);
   double MinLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   double MaxLot=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   ulong stoplevel=SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

   if(deal_type==ORDER_TYPE_BUY)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Bid,_Digits);
         request.type = ORDER_TYPE_SELL;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Ask+(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Bid -(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Bid,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }
   if(deal_type==ORDER_TYPE_SELL)
     {
      if(StringFind(coment,"sl")>=0)
        {
         request.volume=NormalizeDouble(volume*Klot,DigitsVolume());
         request.price=NormalizeDouble(Ask,_Digits);
         request.type = ORDER_TYPE_BUY;
         if(SL<=0 || TP<=0)return;
         if(SL>=stoplevel) request.sl=NormalizeDouble(Bid -(SL*_Point),_Digits);
         if(SL<stoplevel) request.sl=NormalizeDouble(Bid -(stoplevel*_Point),_Digits);
         if(TP>=stoplevel) request.tp=NormalizeDouble(Ask+(TP*_Point),_Digits);
         if(TP<stoplevel) request.tp=NormalizeDouble(Ask+(stoplevel*_Point),_Digits);
         OrderCalcMargin(request.type,_Symbol,request.volume,Ask,margin);
         if(AccountInfoDouble(ACCOUNT_FREEMARGIN)-margin<0)return;
        }
      if(StringFind(coment,"tp")>=0){flagNewSeries=true;return;}
     }

   if(request.volume<MinLot)request.volume=MinLot;
   if(request.volume>MaxLot)request.volume=MaxLot;
   request.volume=NormalizeDouble(request.volume,DigitsVolume());

   request.action       = TRADE_ACTION_DEAL;
   request.magic        = Magic;
   request.symbol       = _Symbol;
   request.deviation    = Slip;
   request.type_filling = ORDER_FILLING_AON;
   request.comment      = CommentOrder;

   OrderSend(request,result);

   switch(result.retcode)
     {
      case 10008: {Print("Ордер размещен");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10009: {Print("Заявка выполнена");PositionSelect(Symbol());ID=PositionGetInteger(POSITION_IDENTIFIER);}break;
      case 10004: {Print("Реквота");}break;
      case 10006: {Print("Запрос отвергнут");}break;
      case 10007: {Print("Запрос отменен трейдером");res=false;}break;

      case 10010: {Print("Заявка выполнена частично");res=false;}break;
      case 10011: {Print("Ошибка обработки запроса");res=false;}break;
      case 10012: {Print("Запрос отменен по истечению времени");}break;
      case 10013: {Print("Неправильный запрос");res=false;}break;
      case 10014: {Print("Неправильный объем в запросе");res=false;}break;
      case 10015: {Print("Неправильная цена в запросе");res=false;}break;
      case 10016: {Print("Неправильные стопы в запросе");res=false;}break;
      case 10017: {Print("Торговля запрещена");res=false;}break;
      case 10018: {Print("Рынок закрыт");}break;
      case 10019: {Print("Нет достаточных денежных средств для выполнения запроса");res=false;}break;
      case 10020: {Print("Цены изменились");}break;
      case 10021: {Print("Отсутствуют котировки для обработки запроса");}break;
      case 10022: {Print("Неверная дата истечения ордера в запросе");res=false;}break;
      case 10023: {Print("Состояние ордера изменилось");}break;
      case 10024: {Print("Слишком частые запросы");res=false;}break;
      case 10025: {Print("В запросе нет изменений");res=false;}break;
      case 10026: {Print("Автотрейдинг запрещен сервером");res=false;}break;
      case 10027: {Print("Автотрейдинг запрещен клиентским терминалом");res=false;}break;
      case 10028: {Print("Запрос заблокирован для обработки");res=false;}break;
      case 10029: {Print("Ордер или позиция заморожены");res=false;}break;
      case 10030: {Print("Указан неподдерживаемый тип исполнения ордера по остатку");res=false;}break;
      case 10031: {Print("Нет соединения с торговым сервером");}break;
      case 10032: {Print("Операция разрешена только для реальных счетов");res=false;}break;
      case 10033: {Print("Достигнут лимит на количество отложенных ордеров");res=false;}break;
      case 10034: {Print("Достигнут лимит на объем ордеров и позиций для данного символа");res=false;}break;
      default:    Print("Ошибка № - ",result.retcode);
     }
  }
 

L'EA è stato ottimizzato sull'intervallo AB. Qui sopra c'è un'esecuzione con questi parametri sull'intervallo AD. Non capisco cosa succede al punto C.

Non riesco a capire che l'Expert Advisor non è ottimizzato praticamente sull'intervallo CD. Forse c'è un cambiamento in alcune regole commerciali dopo 25.10.2010 (punto C) o qualcos'altro?

 
sultanm:

L'EA è stato ottimizzato sull'intervallo AB. Qui sopra c'è un'esecuzione con questi parametri sull'intervallo AD. Non capisco cosa succede al punto C.

Mentre l'Expert Advisor non è praticamente ottimizzato sull'intervallo CD. Forse c'è un cambiamento in alcune regole di trading dopo 25.10.2010 (punto C) o qualcos'altro?

Qual è la dimensione media degli scambi con profitto dell'Expert Advisor? Qualcosa mi dice che è meno di 10 pips.

Il problema è probabilmente nei dati storici - o sono più pettinati (filtrati), o semplicemente più corretti (per esempio contengono gli spread corretti).

Cos'è il server?