мультисоветник открывает только бай, в чем причина?

 

ДД!

В тестере мультисоветник открывает только сделки бай,

хотя сигнал идет на бай и селл, в чем причина, не могу разобраться?

Вот часть кода:


//+----------------------------------------------------------------------------+
//|  Описание : Открытие позиций                                               |
//+----------------------------------------------------------------------------+
//int OpenSymbol(Symbol1)
int   OpenSymbol(string vSymbol)
  { //ccc
   bool error=true;
   double vpoint  = SymbolInfoDouble(vSymbol,SYMBOL_POINT);
   double mybid   = SymbolInfoDouble(vSymbol,SYMBOL_BID);
   double myask   = SymbolInfoDouble(vSymbol,SYMBOL_ASK);
   if (!ExistPositions(vSymbol))
       { //west
      if(GetSignal(vSymbol)==1)
        {//ade 
    {error=trade.Buy(0.1,vSymbol,myask,mybid-377*vpoint,myask+610*vpoint,"test_gme");}
           return(0);
        }
//=================================================================================
      if(GetSignal(vSymbol)==-1)
        {
          {error=trade.Sell(0.1,vSymbol,mybid,myask+377*vpoint,mybid-610*vpoint,"test_gme");}
                  return(0);
        }
      
     } 
   return(0);
  } 
//+----------------------------------------------------------------------------+
 

Я сразу подчистил:

//+----------------------------------------------------------------------------+
//|  Описание : Открытие позиций                                               |
//+----------------------------------------------------------------------------+
int   OpenSymbol(string vSymbol)
  { //ccc
   bool error=true;
   double vpoint  = SymbolInfoDouble(vSymbol,SYMBOL_POINT);
   double mybid   = SymbolInfoDouble(vSymbol,SYMBOL_BID);
   double myask   = SymbolInfoDouble(vSymbol,SYMBOL_ASK);
   if(mybid==0.0 || myask==0.0)
      return(0);
      
   if(!ExistPositions(vSymbol))
     { //west
      long signal=GetSignal(vSymbol);

      if(signal==1)
        {//ade 
         error=trade.Buy(0.1,vSymbol,myask,myask-377*vpoint,myask+610*vpoint,"test_gme");
         return(0);
        }

      if(signal==-1)
        {
         error=trade.Sell(0.1,vSymbol,mybid,mybid+377*vpoint,mybid-610*vpoint,"test_gme");
         return(0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+

Смотрите журнал - есть ли ошибки.

Начните вести более расширенный лог - на каком этапе возникает ошибка.

Внимательнее смотрите в функцию GetSignal

 

спасибо!

пока не получается.  Будем искать.

 

Возможно GetSignal( ) не возвращяет два раза одно и тоже. Тогда все логично.  


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



или делайте проверку на sell первой - будут одни продажи :)))

 
повтыкали ретурны везде - не хватает обнуления сигнала переменной signal после отработки сигнала писать например signal=0 и долой ретурны нафиг эти прерывания
 
Aleksey Semenov:
повтыкали ретурны везде - не хватает обнуления сигнала переменной signal после отработки сигнала писать например signal=0 и долой ретурны нафиг эти прерывания

для этого есть "else if"

 
fregat555:

ДД!

В тестере мультисоветник открывает только сделки бай,

хотя сигнал идет на бай и селл, в чем причина, не могу разобраться?

Вот часть кода:


Если вы используете функцию Кима, то

if(signal==1) -- BUY

if(signal==2) -- SELL

if(signal==-1) -- CLOSE

Это в случае, если вы не изменяли эту функцию. 

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