Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 190

 
gyulnara.kosareva:
Здраствуйте. смогу ли я установить советника без файла mql4 если имею только файл ex этого советника?

Да, именно файл .ex и нужен для работы

 
Привет всем.
На андроиде было установлено приложение МТ4 версия 400.1129, до 29.10 2019 приложение работало как часы. В пятницу стал открывать его на телефоне, мелькнула заставка что мне открывается новый демо-счет и тут же приложение закрылось. И я оказался на рабочем столе. Следующие десятки попыток закончились тем же результатом. Снес терминал, скачал с плей маркета по новой, установил, запустил результат тот же - вылет приложения. Скачал с маркета "робо форекс МТ4", установил, запустил - работает как часы. Скачал с маркета МТ5 версия 500.1780, установил, запустил, открыл демо-счет и дальше всё работает отлично.
Подскажите что делать чтобы у меня на телефоне опять начал работать МТ4 ! Плиз.
 

Всем добрый день! Подскажите пожалуйста, что не так? Тестер в маркете ругается на реквоту - NEW_ORDER(): lot=0.20; POSITION_TYPE_BUY (EURUSD); err: 4756/Не удалось отправить торговый запрос; retcode: 10004/Реквота;

Где можно почитать подробнее про эту ошибку и как ее исправить? 

 
Nikolai Konstantinov:

Всем добрый день! Подскажите пожалуйста, что не так? Тестер в маркете ругается на реквоту - NEW_ORDER(): lot=0.20; POSITION_TYPE_BUY (EURUSD); err: 4756/Не удалось отправить торговый запрос; retcode: 10004/Реквота;

Где можно почитать подробнее про эту ошибку и как ее исправить? 


Это не ошибка , а рыночная ситуация. 
1. Обновлять цены перед отправкой сделки на исполнение. 
2. Повторно пытаться открыть после ремонта 
3. Увеличить проскальзование 
 
Vladislav Andruschenko:

Это не ошибка , а рыночная ситуация. 
1. Обновлять цены перед отправкой сделки на исполнение. 
2. Повторно пытаться открыть после ремонта 
3. Увеличить проскальзование 

Спасибо, но все, что вы написали уже учтено. Может еще что-то есть?

 

Привет! Помогите пожалуйста!

Ни с того, ни с сего начали виснуть МТ4. Причем все, от разных ДЦ.

При запуске терминал глухо виснет. В Диспетчере пишет напротив него "не отвечает". Не реагирует ни на что, Внизу на панели МТ; обозначено, что связи нет.

Перезагрузка терминалов, смена их от разных брокеров, удаление и переустановка, чистка данных с помощью программки Clean,Выключение и включение компьютера - результата не дало.

Осталось переустановить ОС, но так неохота. 

Может у кого было такое?

Подскажите, кто может.

 
odyn:

Осталось переустановить ОС, но так неохота. 

как вариант на виртуальной машине установите ОС и терминал, я устанавливал Oracle VM VirtualBox без проблем там МТ4/МТ5 работают

а потом если дело уж в ОС, то переустановите


проверил у себя, работает и МТ4 и МТ5 без проблем, Вин10 - 64

 
odyn:

Привет! Помогите пожалуйста!

Ни с того, ни с сего начали виснуть МТ4. Причем все, от разных ДЦ.

При запуске терминал глухо виснет. В Диспетчере пишет напротив него "не отвечает". Не реагирует ни на что, Внизу на панели МТ; обозначено, что связи нет.

Перезагрузка терминалов, смена их от разных брокеров, удаление и переустановка, чистка данных с помощью программки Clean,Выключение и включение компьютера - результата не дало.

Осталось переустановить ОС, но так неохота. 

Может у кого было такое?

Подскажите, кто может.

Internet Explorer может быть корнем проблем

от обстоятельств - его надо или обновлять или откатывать :-) И ни в коем случае не позволять всякие дополнения,плагины и расширения.

Авторы решили что компонент эксплорера рулит для отображения маркета/сигналов/новостей/чата но сам по себе эксплорер вечная бета. И его проблемы "интерферируют" с терминалом

 

Всем доброго дня.

Можно изменить в коде условие: "Советник открывает позицию в зависимости от закрытия прошлой позиции. Если позиции не было то в зависимости от направления прошлой свечи" на возможность выставления 2-х отложенных ордеров на определенной дистанции от текущей цены и при срабатывании одного из ордеров 2-й удалялся. Весь остальной алгоритм остается без изменения.

Сам подправлял, но рабочей версии не смог добиться.

#property description "Советник открывает позицию в зависимости от закрытия прошлой позиции. Если позиции не было то в зависимости от направления прошлой свечи"
#property description "При достижение Т/P следующий ордер открывается в эту же сторону"
#property description "При достижение S/L следующий открывается в противоположную сторону"
//+------------------------------------------------------------------
#property show_inputs
//+------------------------------------------------------------------
enum TT {BUY, SELL, BUYLIMIT, SELLLIMIT, BUYSTOP, SELLSTOP};
enum YN {No,Yes};
//+------------------------------------------------------------------
extern TT     Type         = BUY;
extern double Price        = 0; 
extern int    Distance     = 0;
extern int    stoploss     = 300,
              takeprofit   = 300;
extern double risk         = 0.01; //процент от депозита для рассчета объема первой позиции
extern double KoeffMartin  = 2.0;
extern int    OkrLOT       = 2;//округление лота
extern int    slippage     = 3;//Максимально допустимое отклонение цены для рыночных ордеров
extern int    MagicNumb    = 77;//Magic

double MINLOT,MAXLOT;                                  
//+------------------------------------------------------------------+
int OnInit()
{
   MAXLOT = MarketInfo(Symbol(),MODE_MAXLOT);
   MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick()
{
   double OSL,OTP,OOP,SL,TP;
   int tip;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   for (int i=0; i
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumb)
         {
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               if (OSL==0 && stoploss>=STOPLEVEL && stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - stoploss   * Point,Digits);
               } 
               if (OTP==0 && takeprofit>=STOPLEVEL && takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               if (OSL==0 && stoploss>=STOPLEVEL && stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + stoploss   * Point,Digits);
               }
               if (OTP==0 && takeprofit>=STOPLEVEL && takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
            return;
         }
      }
   }
   tip=-1;
   double Lot=0;
    for (i=OrdersHistoryTotal()-1; i>=0; i--)
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumb)
         {
            if (OrderProfit()<0) 
            {
               Lot=lot(OrderLots(),KoeffMartin);
               tip=OrderType();
            }
            else 
            {
               Lot=lot(0,1);
               if (OrderType()==OP_BUY)  tip=OP_SELL;
               if (OrderType()==OP_SELL) tip=OP_BUY;
            }
            break;
         }
      }
   }

   if (tip==-1)
   {
      Lot=lot(0,1);
      if (Open[1]>Close[1]) tip=OP_BUY;
      else tip=OP_SELL;
   }
   if (tip==OP_BUY) if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi  d,Digits),slippage,0,0,NULL,MagicNumb,Blue)!=-1) Comment("Open Sell");
   if (tip==OP_SELL) if (OrderSend(Symbol(),OP_BUY ,Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL  ,MagicNumb,Blue)!=-1) Comment("Open Buy");                               
}
//--------------------------------------------------------------------

double lot(double l,double k)

{

   double ML = AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);

   if (k==1) l = ML*risk/100;
   else l = NormalizeDouble(l*k,OkrLOT);
   if (l>ML) l = ML;
   if (l>MAXLOT) l = MAXLOT;
   if (l
   return(l);
}
//-----------------------------------------------------------------
            {
               Lot=lot(0,1);
               if (OrderType()==OP_BUY)  tip=OP_SELL;
               if (OrderType()==OP_SELL) tip=OP_BUY;
            }
            break;
         }
      }
   }

   if (tip==-1)
   {
      Lot=lot(0,1);
      if (Open[1]>Close[1]) tip=OP_BUY;
      else tip=OP_SELL;
   }
   
   if (tip==OP_BUY) if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi  d,Digits),slippage,0,0,NULL,MagicNumb,Blue)!=-1) Comment("Open Sell");
   if (tip==OP_SELL) if (OrderSend(Symbol(),OP_BUY ,Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL  ,MagicNumb,Blue)!=-1) Comment("Open Buy");                                 
}
//--------------------------------------------------------------------
double lot(double l,double k)
{
   double ML = AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   if (k==1) l = ML*risk/100;
   else l = NormalizeDouble(l*k,OkrLOT);
   if (l>ML) l = ML;
   if (l>MAXLOT) l = MAXLOT;
   if (l
   return(l);
}
//-----------------------------------------------------------------
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
Файлы:
SSSR_v.1.mq4  11 kb
 
Попробую перефразировать прошлый пост:

//--------------------------------------
Согласно алгоритма советник открывает позицию в зависимости от закрытия прошлой позиции. 
Если позиции не было то в зависимости от направления прошлой свечи.

Данный алгоритм нужно заменить на:

Покупка:

Выставляем 2-а отложенных ордера BuyStop по цене указанной в настройках и SellStop по цене указанной в настройках. 
Как только цена достигает одного из стоп ордеров, он переходит в рыночную позицию с выставлением ТР и SL. Ордер который не сработал удаляется.

Весь остальной алгоритм остается без изменения т.е.: "При достижение Т/P следующий ордер открывается в эту же сторону"
                                "При достижение S/L следующий открывается в противоположную сторону"
//---------------------------------------------------