Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1339

 
Kira27 #:

Спасибо за отклик, и ваш вариант исполнения, поэксперементирую с ним)!  Не понял только почему перед завершением программы не удаляете хендлы?  Или они при завершении проги сами автоматом удаляются.  Хотя оператива не освобождается судя по диспетчеру задач.

Вроде где то читал, что по завершении работы скрипта, хэндлы индикаторов удаляются через какой то промежуток времени. Но это не точно.

 
Доброго! Подскажите пожалуйста, как после тестирования советника в MQL5 выводить в сплывающем окне при наведении мыши на стрелочках любую свою статистику? 
 

Здравствуйте

в терминале есть инструмент линейная регрессия

есть скрипты которые рисуют такой же канал графическими обектами

но правильно рисуется только центральная линия а линии отклонения рисуются на неправильной дистанции от центральной

подскажите если кто знает правильную формулу расчета отклонения чтоб было как в терминале

или может есть у кого готовое решение

СПАСИБО

 

Здравствуйте!

Подскажите пожалуйста, почему не работает функция OrderSend на криптовалюте при тестировании у брокера AMarkets. По регламентам не нашел запрещения торговли советниками на крипте. Или у меня возможно ошибки в коде?  GetLastError выдает ошибку 4756

#property copyright "qwerty"
#property link      "qwerty@list.ru"
#property version   "1.00"
//-----------------
//-----------------
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
//-----------------
//-----------------
CPositionInfo  aPosition;
CTrade         aTrade;
CSymbolInfo    aSymbol;
CAccountInfo   aAccount;
//-----------------
//-----------------

int      Slippage      = 3000;
//---
//---------------------------------
//------пробные переменные
double LotsCrypto = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!aSymbol.Name(Symbol()))
      return(INIT_FAILED);
   RefreshRates();
//---устанавливаем допустимое проскальзывание
   aTrade.SetDeviationInPoints(Slippage);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  RefreshRates();
   LotsCrypto = 0.1;
   if(OpenSellPosition(aSymbol.Name(), LotsCrypto, NULL, Slippage, ORDER_FILLING_RETURN))
      Print("Ура");  
   Comment("Symbol.Name = " + string(aSymbol.Name()) + "\n" +
           "Ask = " +  string(aSymbol.Ask()) + "\n"+
           "GetLastError = " +  string(GetLastError()) + "\n"+
           "LotsCrypto = " +  string(LotsCrypto));

}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+ Обновление котировок                                             +
//+------------------------------------------------------------------+
bool RefreshRates()
  {
   if(!aSymbol.RefreshRates())
     {
      Print("Не удалось обновить котировки валютной пары!");
      return(false);
     }
   if(aSymbol.Ask() == 0 || aSymbol.Bid() == 0)
      return(false);
   return(true);
  }

//+------------------------------------------------------------------+
bool OpenSellPosition(string symbol, double volume, string comment="", ulong deviation=1000, ENUM_ORDER_TYPE_FILLING filling=ORDER_FILLING_FOK)
  {
   MqlTradeRequest Request;
   MqlTradeResult Results;
   ZeroMemory(Request);
   ZeroMemory(Results);
   Request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   Request.action=TRADE_ACTION_DEAL;
   Request.type=ORDER_TYPE_SELL;
   Request.symbol=symbol;
   Request.volume=volume;
   Request.deviation=deviation;
   Request.comment=comment;
   Request.type_filling=filling;
   bool res=false;
   res=OrderSend(Request,Results);
   if(res)
     {
      if(Results.deal>0)
         return(true);
      else
         return(false);
     }
   return(false);
  }
//+------------------------------------------------------------------+
 
посмотрите что пишет реткод после отправки ордера
 
Fast235 #:
посмотрите что пишет реткод после отправки ордера

Спасибо. 

10018

TRADE_RETCODE_MARKET_CLOSED

Рынок закрыт

Значит проблемы с брокером.

 

Приветствую, прошу сильно не пинать)
Есть советник. В нем хочу реализовать функцию открытия позиции, если на нескольких валютных парах, бар с индексом 1, имеет одно и тоже направление(бычье или медвежье).
Пытаюсь это реализовать через iclose и iopen.

Все происходит в bool-ой функцие.
Хотел реализовать конструкцию следующего вида:
if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Но ничего не получилось, и открываются позиции при любой комбинации баров с индексом 1.


Но работает следующая конструкция.

if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;

Тут советник правильно находит комбинацию из баров. Но таким способом можно искать либо комбинации из бычьих баров, либо медвежьих.


Ибо код такого вида не работает.
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{

  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

И такого тоже)
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))
 return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}

else if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
{
if(iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))
 return false;
  if(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))
   return false;
     if(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1))
    return false;
}


Так как все-таки правильно одновременно  искать комбинации медвежьих и бычьих баров? Еще раз прошу сильно не бить тапками)

 
Scarick #:

Приветствую, прошу сильно не пинать)
Есть советник. В нем хочу реализовать функцию открытия позиции, если на нескольких валютных парах, бар с индексом 1, имеет одно и тоже направление(бычье или медвежье).
Пытаюсь это реализовать через iclose и iopen.

if ((iOpen(NULL, PERIOD_CURRENT, 1)>iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)>iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)>iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;
else if ((iOpen(NULL, PERIOD_CURRENT, 1)<iClose(NULL, PERIOD_CURRENT, 1))&&(iOpen("EURGBP", PERIOD_CURRENT, 1)<iClose("EURGBP", PERIOD_CURRENT, 1))&&(iOpen("EURJPY", PERIOD_CURRENT, 1)<iClose("EURJPY", PERIOD_CURRENT, 1)))
return false;

Так как все-таки правильно одновременно  искать комбинации медвежьих и бычьих баров? Еще раз прошу сильно не бить тапками)

Работайте через CopyRates и обязательно контролируйте сколько заказали и сколько получили. Вот пример:

   MqlRates rates_current[],rates_eurgbp[],rates_eurjpy[];
   ArraySetAsSeries(rates_current,true);
   ArraySetAsSeries(rates_eurgbp,true);
   ArraySetAsSeries(rates_eurjpy,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates_current)!=count)
      return;
   if(CopyRates("EURGBP",Period(),start_pos,count,rates_eurgbp)!=count)
      return;
   if(CopyRates("EURJPY",Period(),start_pos,count,rates_eurjpy)!=count)
      return;
//---
   bool signal_buy=false,signal_sell=false;
   if((rates_current[1].open>rates_current[1].close) && (rates_eurgbp[1].open>rates_eurgbp[1].close) && (rates_eurjpy[1].open>rates_eurjpy[1].close))
     {
      signal_buy=true;
      signal_sell=false;
     }
   else
     {
      if((rates_current[1].open<rates_current[1].close) && (rates_eurgbp[1].open<rates_eurgbp[1].close) && (rates_eurjpy[1].open<rates_eurjpy[1].close))
        {
         signal_buy=false;
         signal_sell=true;
        }
     }
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Всем привет!

Ситуация.

Советник написан, допустим, на мувингах. Когда заканчиваешь тестировать его в тестере, использованные мувинги (с использованными параметрами) появляются в окне. Это ок.

Вопрос.

А когда заливаешь тот же советник на маркет, и пользователь скачивает демо - у него по завершению теста, так же они появятся? Или у mql есть какая-то политика конфиденциальности в этом плане?


Конечно, можно самому заморочиться и проверить. Но те кто, заливал продукты, поймут, что лучше просто спросить)  

 
Anton Iudakov #:

Всем привет!

Ситуация.

Советник написан, допустим, на мувингах. Когда заканчиваешь тестировать его в тестере, использованные мувинги (с использованными параметрами) появляются в окне. Это ок.

Вопрос.

А когда заливаешь тот же советник на маркет, и пользователь скачивает демо - у него по завершению теста, так же они появятся? Или у mql есть какая-то политика конфиденциальности в этом плане?


Спросить конечно проще, но далеко не каждый который заливал в маркет советники проверял после скачивания.

А по сути, какая разница откуда получен файл советника? Он одинаково будет работать как у разработчика, так и зашифрованный в маркете…