Ошибки, баги, вопросы - страница 3075

Yury Lemeshev #:

Я работаю одновременно с двумя или более ордерами. Сетка. Проверяю цена ниже или выше условной точки входа. Условные точки входа изначально были в массиве, теперь в глобальных.

И получается что происходит подменна цифр, но бог с подменой. Если бы  сравнение проходило бы правильно. Но и подмена тоже глючит.

1. Что за имена переменных? Откуда такие имена? Похоже на декомпил.

2.Пожалуйста вставляйте код правильно: при редактировании сообщения нажмите кнопку   Code и во всплывающее окно вставьте свой код

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
Vladimir Karputov #:

1. Что за имена переменных? Откуда такие имена? Похоже на декомпил.

2. Вставляйте код правильно.

Простите, могу вас не правильно понимать. Первый вопрос не понял.

Yury Lemeshev #:

Простите, могу вас не правильно понимать. Первый вопрос не понял.

Первый вопрос: Вы сами писали этот код и давали такие имена переменным?

Vladimir Karputov #:

Первый вопрос: Вы сами писали этот код и давали такие имена переменным?

Да.

Yury Lemeshev #:

Да.

Очень странные имена - похоже на декомпил. Покажите пожалуйста ещё Ваши другие кода - кода которые Вы писали сами.

Vladimir Karputov #:

Очень странные имена - похоже на декомпил. Покажите пожалуйста ещё Ваши другие кода - кода которые Вы писали сами.

int intLevelOrderProfit()
   {
   int iLOP,iL;
   ProfitCycle=GlobalVariableGet("["+MAGICs+"] Profit Cycle");
   iL=GlobalVariableGet("["+MAGICs+"] Level Orders")-1;
   ArrayResize(LOP,GlobalVariableGet("["+MAGICs+"] Level Orders")-1);
   int LOPc;LOPc=0;
   for(i=0; i<GlobalVariablesTotal(); i++)
      {
      if(StringFind(GlobalVariableName(i),"["+MAGICs+"] Level Order #")!=-1)
         {
         iLOP=GlobalVariableGet(GlobalVariableName(i));
         if(iLOP<GlobalVariableGet("["+MAGICs+"] Level Orders"))
            {
            /*MT5*/if(PositionSelectByTicket(StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))))==true)
            ///*MT4*/if(OrderSelect(StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))),SELECT_BY_TICKET,MODE_TRADES)==true)
               {
               LOPc++;
               ArrayFill(LOP,(iLOP-1)*5+0,1,MAGICs);
               /*MT5*/ArrayFill(LOP,(iLOP-1)*5+1,1,LOP[iLOP-1][1]+PositionGetDouble(POSITION_PROFIT)+PositionGetDouble(POSITION_SWAP));
               ///*MT4*/ArrayFill(LOP,(iLOP-1)*5+1,1,LOP[iLOP-1][1]+OrderProfit()+OrderSwap()+OrderCommission());
               if(LOPc==1){ArrayFill(LOP,((iLOP-1)*5)+3,1,StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))));}
               if(LOPc==2){ArrayFill(LOP,((iLOP-1)*5)+4,1,StringSubstr(GlobalVariableName(i),(2+StringFind(GlobalVariableName(i)," #",0))));}
               if(LOPc==2){LOPc=0;}
               }
            }
         }
      }
   if(ArraySize(LOP)>0)
      {
      int iLOPP;
      iLOPP=Profit;
      if(CloseLevelOrders==ECLO2){iLOPP=Profit*(GlobalVariableGet("["+MAGICs+"] Level Orders"));}
      for(i=0; i<ArraySize(LOP)/5; i++)
         {
         if(NormalizeDouble(LOP[i][0],0)==MAGICs)
            {
            if((-LOP[i][1])<(-iLOPP*2) && (-LOP[i][1])<(-LOP[i][2]*2))
               {ArrayFill(LOP,(i*5)+2,1,(LOP[i][1])/2);}
            if(LOP[i][1]>iLOPP && LOP[i][1]<=LOP[i][2])
               {
               if(LOP[i][3]>0)
                  {
                  ticket=LOP[i][3];Print("-673- Closing by profit "+(LOP[i][2])+" ticket "+ticket);intClosePosition();CloseMode="CloseOneMagic";intDeleteGlobalVariables();GlobalVariableSet("["+MAGICs+"] Profit Cycle",LOP[i][2]/2+ProfitCycle);
                  }
               if(LOP[i][4]>0)
                  {
                  ticket=LOP[i][4];Print("-677- Closing by profit "+(LOP[i][2])+" ticket "+ticket);intClosePosition();CloseMode="CloseOneMagic";intDeleteGlobalVariables();GlobalVariableSet("["+MAGICs+"] Profit Cycle",LOP[i][2]/2+ProfitCycle);
                  }
               GlobalVariableSet("["+MAGICs+"] INDEX",GlobalVariableGet("["+MAGICs+"] INDEX")/DeMultiplicationVoltage); //Edition 26082021
               ArrayFill(LOP,(i*5)+2,1,0);
               }
            }
         ArrayFill(LOP,(i*5)+0,1,0);
         ArrayFill(LOP,(i*5)+1,1,0);
         ArrayFill(LOP,(i*5)+3,1,0);
         ArrayFill(LOP,(i*5)+4,1,0);
         }
      }
   return(0);
   }
Vladimir Karputov #:

Очень странные имена - похоже на декомпил. Покажите пожалуйста ещё Ваши другие кода - кода которые Вы писали сами.

В советнике разножу все по функциям, iFunctionExample(), внутри этих функция переменные iFE1, iFE2, iFE3 для int, для double dFE1, dFE2, dFE3. Мне так проще понимать что откуда.

Yury Lemeshev #:

В советнике разножу все по функциям, iFunctionExample(), внутри этих функция переменные iFE1, iFE2, iFE3 для int, для double dFE1, dFE2, dFE3. Мне так проще понимать что откуда.

Ладно. Спасибо за пояснение и за то что начали вставлять код правильно.

Yury Lemeshev #:

Я работаю одновременно с двумя или более ордерами. Сетка. Проверяю цена ниже или выше условной точки входа. Условные точки входа изначально были в массиве, теперь в глобальных.

И получается что происходит подменна цифр, но бог с подменой. Если бы  сравнение проходило бы правильно. Но и подмена тоже глючит.

сталкивался что SymbolInfoBid(name,SYMBOL_BID) может вернуть 0 или EMPTY_VALUE , нелишне проверять корректность

а вот двойное сравнение if (A>B && B-A<0) читается довольно весело: "А больше Б ? и даже если вот так ??"

всё-таки не бойтесь использовать журнал - напечатайте ваши переменные чтобы видеть что-же происходит на самом деле

PS/ конечно имена у переменных - жезть..как вы такой код читаете и пишите :-) а главное помните

Maxim Kuznetsov #:

сталкивался что SymbolInfoBid(name,SYMBOL_BID) может вернуть 0 или EMPTY_VALUE , нелишне проверять корректность

а вот двойное сравнение if (A>B && B-A<0) читается довольно весело: "А больше Б ? и даже если вот так ??"

всё-таки не бойтесь использовать журнал - напечатайте ваши переменные чтобы видеть что-же происходит на самом деле

PS/ конечно имена у переменных - жезть..как вы такой код читаете и пишите :-) а главное помните

Я напишу советник где эта ошибка должна быть очевидна, ну либо я не нарвусь на нее. Отпишусть попозже.

B-A<0 доп проверка чтобы в функцию не попадало, но однако и с других символов берутся данные которые обходят данную проверку.