Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2134

 
Vitaly Muzichenko #:

В чём сакральный смысл? 

Каким образом без этой функции узнать есть ордера или нет?
 
Galim_V #:
Каким образом без этой функции узнать есть ордера или нет?
Print(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)?"Yes":"No");
 
Vitaly Muzichenko #:

В индикаторе?

 
Alexey Viktorov #:

Копай в сторону стандартного лота.

Для себя ненахожу логики между CFD лотом, его разрядностью (оно всегда 2 пункта после запятой) и коєфициентом, который от ноль до тысячи на разных инструментах. Можно брать коэфициет и умнажать его на цену для тейка и стопа. Это на CFD будет работать 100%. Но как тогда с валютами, EA должен быть универсальным для всех инстументов торговли.

 
Могу сделать виртуальное закрытие по процентах. Работать будет на любом инструменте, пока работает терминал и есть связь. Это ненадежно, нужны для подстраховки реальные TP SL которые на сервере. А вот коэфициет очень разный для реальных стопов на CFD.
 
Volodymyr Zubov #:

Для себя ненахожу логики между CFD лотом, его разрядностью (оно всегда 2 пункта после запятой) и коєфициентом, который от ноль до тысячи на разных инструментах. Можно брать коэфициет и умнажать его на цену для тейка и стопа. Это на CFD будет работать 100%. Но как тогда с валютами, EA должен быть универсальным для всех инстументов торговли.

Стандартный лот это не 2 пункта после запятой, а 100 000 базовой валюты, или металлы 100 всего.

 

тут коэфициен *100 для тейка и стопа от четырехзнака.

а тут коэфициент *1 для тейка от четырехзнака.

Как из доступной информации програмно это вычислить ?

 
Galim_V #:

В индикаторе?

да, в индикаторе. Там только OrderSend/Modify запрещены - а читать ордера конечно можно, так половина копировщиков сделана (а вторая сделана теми кто не в курсе :O -)

 
Alexey Viktorov #:

Стандартный лот это не 2 пункта после запятой, а 100 000 базовой валюты, или металлы 100 всего.

Если бы это было постоянно, то небыло бы проблем. Бывает на CFD то 1 контракт, то пол контракта, то 10 контрактов в одном лоте. Но терминал дает мне это увидеть воочию, а програмно нет.

 

Научился реальное плечо узнавать по CFD. Если на счету плечо 1:500 это не относится к CFD, там другое, вычисляю так

//+-----------------------------------------------------------------------------+
//|  Описание : CFD Margin requirements                                         |
//|             CFD значение маржи в процентах                                  |
//|  100/(current market prices/Free margin required to open 1 lot for buying)  |
//+-----------------------------------------------------------------------------+
int CFDMarginRequirements(string CryptoName)
  {
   double   CFDMR = 0;
   double   CMP = MarketInfo(CryptoName,MODE_BID);
   double   FMP = MarketInfo(CryptoName,MODE_MARGINREQUIRED);
   int      CSZ = (int)MarketInfo(CryptoName,MODE_LOTSIZE);

   if(FMP==0) //исключение деления на ноль, пока не загрузились данные
      FMP=1;

   CFDMR = NormalizeDouble((100/(CMP/FMP))/CSZ,0);

   return (int)(CFDMR);
  }
//--- End ---
//+-----------------------------------------------------------------------------+
//|  Описание : CFD Leverage                                                    |
//+-----------------------------------------------------------------------------+
int CFDLeverage(string CryptoName)
  {
   double   CFDLVR = 0;
   double   CMP = MarketInfo(CryptoName,MODE_BID);
   double   FMP = MarketInfo(CryptoName,MODE_MARGINREQUIRED);

   if(FMP==0) //исключение деления на ноль, пока не загрузились данные
      FMP=1;

   CFDLVR = NormalizeDouble((CMP/FMP),0);

   return (int)(CFDLVR);
  }

//--- End ---

Но вот с пунктами на CFD немогу разобраться, Digits, Point не помогают.

Причина обращения: