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

fxsaber #:

Раз занялись исчезновением графических объектов, обратите внимание на эту проблему.

Исправлено

Ilyas #:

Исправлено

Спасибо!

Мучаюсь уже второй день.

Переодически

if(A>B), где A=0.1 и B=0.2 проходит в функцию.

Проблеме в тестере MT5.


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

Yury Lemeshev #:

Мучаюсь уже второй день.

Переодически

if(A>B), где A=0.1 и B=0.2 проходит в функцию.

Проблеме в тестере MT5.


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

код (по возможности) полностью покажите - чтобы не угадывать где вы опечатались :-)

скорее какая-нить простейшая ошибка, типа того что int B=0.2

Код:  

 int iGSO1;

   double dGSO1,dGSO2;
   string sGSO1;
   for(iGSO1=0; iGSO1<GlobalVariablesTotal(); iGSO1++)
      {
      sGSO1=GlobalVariableName(iGSO1);
      if(StringFind(sGSO1,"["+MAGICs+"] [GRID#",0)!=-1 && StringFind(sGSO1," BUY ",0)!=-1)
         {
         symbol=StringSubstr(sGSO1,StringFind(sGSO1," BUY ",0)+5);
         if(SymbolInfoDouble(symbol,SYMBOL_BID,dGSO1)==true)
            {
            dGSO2=GlobalVariableGet(sGSO1);
            if(dGSO1<dGSO2 && dGSO1-dGSO2<0)
               {
               iOrderComment=NormalizeDouble(dGSO2,5)+" "+NormalizeDouble(dGSO1,5)+" "+(dGSO1-dGSO2);VO2=0;volumeticket=0.01;intOpenPositionFromGrid();
               ArraySort(iGSA);
               ArrayFill(iGSA,0,1,iGSO1);
               ArrayFill(iGSA,1,1,MAGICs);
               ArrayFill(iGSA,2,1,dGSO2);
               ArrayFill(iGSA,3,1,ticket);GlobalVariableDel(sGSO1);
               }
            }
         }
      if(StringFind(sGSO1,"["+MAGICs+"] [GRID#",0)!=-1 && StringFind(sGSO1," SELL ",0)!=-1)
         {
         symbol=StringSubstr(sGSO1,StringFind(sGSO1," SELL ",0)+6);
         if(SymbolInfoDouble(symbol,SYMBOL_BID,dGSO1)==true)
            {
            dGSO2=GlobalVariableGet(sGSO1);
            if(dGSO1>dGSO2 && dGSO2-dGSO1<0)
               {
               iOrderComment=NormalizeDouble(dGSO2,5)+" "+NormalizeDouble(dGSO1,5)+" "+(dGSO2-dGSO1);VO2=1;volumeticket=0.01;intOpenPositionFromGrid();
               ArraySort(iGSA);
               ArrayFill(iGSA,0,1,iGSO1);
               ArrayFill(iGSA,1,1,MAGICs);
               ArrayFill(iGSA,2,1,dGSO2);
               ArrayFill(iGSA,3,1,ticket);GlobalVariableDel(sGSO1);
               }
            }
         }
      }
Если конечно это понятно и достаточно.
Yury Lemeshev #:
Если конечно это понятно и достаточно.

Что за имена переменных?

Yury Lemeshev #:

Код:  

dGSO1 вообще где-нить инициализуется ? что-то не видно

распечайте подозреваемых в журнал и посмотрите 

PrintFormat("эти GSO: %f %f",dGSO1,dGSO2);

перед условием...в котором вы кстати одно и то-же проверяете дважды

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

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

symbol="";
         symbol=StringSubstr(sGSO1,StringFind(sGSO1," SELL ",0)+6);
         dGSO1=0;
         if(SymbolInfoDouble(symbol,SYMBOL_BID,dGSO1)==true)
            {
            dGSO2=GlobalVariableGet(sGSO1);
            if(dGSO1>dGSO2 && dGSO2-dGSO1<0)

Я обнуляю данные перед записью новых, при этом сам символ записывается новый парвильно, но данные по символу берет с другого.
Файлы:
1mj3v0k1ez.png  24 kb