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

 
Mikhail Tkachev:
   

Прошу помощи у сообщества...
Как правильно объявить и создать глобальные объекты MQL5?

Глобальные объявляются здесь

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

Я уже и не знаю как вас послать читать документацию. Если читал и штатная функция не подходит по каким-то причинам, надо было сразу об этом сказать…

Ну на счёт "послать", это пусть модераторы решают, кого и куда послать!... В бан, например... Угадайте, кого... А на счёт штатных функций, что-то я не видел в документации парсинг в формате json и сохранение/запись json файлов. Но вы, как обычно, знаете какой-то секретный раздел документации, где это всё есть... А я не знал... Ну ёлки палки. Позор мне... Сейчас меня за пояс заткнет Алексей?... :)

 

люди помигите, собираюсь открывать максимально 2х Ордера одновременно, ставлю так воопше ниодного неоткрывает, без pos_total  открывает


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


что делаю не так?

 
Eugen8519:

люди помигите, собираюсь открывать максимально 2х Ордера одновременно, ставлю так воопше ниодного неоткрывает, без pos_total  открывает



что делаю не так?

Ты написал открывать если у тебя уже есть 2 или больше позиций
if (pos_total<=2)
 
Alexey Viktorov:

Макар, раньше ты делал правильно, а теперь хочешь делать глупость…

Вспомни математику за 5, примерно, класс. Сколько будет (-3)-(-7) и сколько будет (-3)+(-7)

На калькуляторе сложно проверить, Excell тебе в помощь.


Алексей знает математику аж за 5-й класс. Браво, Алексей. Просто Капитан Очевидность. :)

 
Mihail Matkovskij:

Алексей знает математику аж за 5-й класс. Браво, Алексей.

В данном случае ты не прав
 
MakarFX:

Да, спасибо. Я поспешил с выводами. У меня все правильно)

Вопрос был не в том, что функция может иметь отрицательные значения, а в том зачем к профиту прибавлять своп и комиссию. Вы с Алексеем вероятно не поняли.

Tsaryoff5614 хотел прибыль ордеров подсчитать в истории, а функция у него называлась lastloss (если владеете английским).

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

Запутал себя и меня. А тут еще вы с Алексеем... Дурдом...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
В данном случае ты не прав

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

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


это ему говорит открывать позиции, куда бы там не вставлял pos_total, непомогает

 
Eugen8519:

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


это ему говорит открывать позиции, куда бы там не вставлял pos_total, непомогает

Не надо убирать
if (pos_total<=2)

надо знак поменять как я написал

 
Mihail Matkovskij:

Вопрос был не в том, что функция может иметь отрицательные значения, а в том зачем к профиту прибавлять своп и комиссию. Вы с Алексеем вероятно не поняли.

Tsaryoff5614 хотел прибыль подсчитать, а функция у него называлась lastloss. Запутал себя и меня. А тут еще вы с Алексеем... Дурдом...

Затем и прибавлять, чтобы посчитать весь профит за период.

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