[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 406

 
Спасибо! Но со всеми приведенными в ссылке примерами тоже не получилось...
 
int start()
  {
   int i, limit;
   int counted_bars=IndicatorCounted();
//---- 
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- 
   for(i=limit; i>=0; i--) 

      if (Close[i+1]>0) 

         Buffer0[i]=Close[i]/Close[i+1];

   for(i=limit; i>=0; i--) 

      double StdDev=iStdDevOnArray(Buffer0,Bars,16,0,MODE_SMA,i);

      Buffer1[i]=StdDev;
      

   return(0);
  }
Почему-то не работает, помогите разобраться в чём проблема! Спасибо!
 
Mr-Franklyn >>:
Почему-то не работает, помогите разобраться в чём проблема! Спасибо!

скобок не хватает

 

Пытаюсь сделать трал Эквити, чтобы зафиксировать его раньше, чем наберет лишние ордера:


написал такой код:

int init(){
      //Наиль - фиксируем сумму средств на начало работы советника
       EquityStart=AccountEquity();
       StartBalance=AccountBalance();
       if(GlobalVariableSet("EquityStart",EquityStart)==0)
       if(GlobalVariableSet("StartBalance",StartBalance)==0)
       return(false);
       //---- продолжение обработки
//===============

//трал у  меня выведен в отдельную функцию:
bool fPrEquity(){
   if(!PrEquity)return(true);
   static bool ClAllFlag=false;
   double Pr2=0;

      StartBalance=GlobalVariableGet("StartBalance");
      Pr2=AccountEquity()-StartBalance;
      
       if(Pr2>=ProcentToclose/100.0*AccountEquity()){
      Print ("Средстава возросли. Закрываем все!!!");
         ClAllFlag=true;
            StartBalance=AccountEquity();
            GlobalVariableSet("StartBalans",StartBalance);
         
       }
      if(ClAllFlag){
         if(fOrderCloseMarket(true,true)==0){
            ClAllFlag=false;

            return(true);
         }
         else{
            return(false);
         }
      } 
   return(true);           
}

Но советник начинает работать так:


Кто подскажет, в чем проблема?

 
Nail_Saby >>:

Пытаюсь сделать трал Эквити, чтобы зафиксировать его раньше, чем наберет лишние ордера:


написал такой код:

Но советник начинает работать так:


Кто подскажет, в чем проблема?

Вы, кажется, не с тем сравниваете:

if(Pr2>=ProcentToclose/100.0*AccountEquity())
а надо
if(Pr2>=ProcentToclose/100.0*StartBalance)
 
alsu >>:

Вы, кажется, не с тем сравниваете:

Исправил, но это не помогло...

Кстати, в журнале постоянно пишет, что

Средстава возросли. Закрываем все!!!

и пишет сумму эквити

Может тут что-то с циклами связано?

 
Nail_Saby писал(а) >>

Пытаюсь сделать трал Эквити, чтобы зафиксировать его раньше, чем наберет лишние ордера:

написал такой код:

Но советник начинает работать так:

Кто подскажет, в чем проблема?

После первого запуска функции значение переменной ClAllFlag принимает значение true и больше не меняет своего значения. Надо бы тип переменной сделать просто bool.

 

Поясните что не так делаю



выдает ошибку что отсутствует каталог на ftp сервере, но точно знаю что он там есть, где я ошибся?

 
Vinin >>:

После первого запуска функции значение переменной ClAllFlag принимает значение true и больше не меняет своего значения. Надо бы тип переменной сделать просто bool.

вы имеете в виду убрать static перед bool ClAllFlag ?

Но эта переменная используется и в других местах кода... там где идет закрытие всех ордеров.

Я попробовал это сделать - не помогает.

Смущают постоянные сообщения в журнале...Может где-то

return
лишнее стоит?
 
Nail_Saby писал(а) >>

вы имеете в виду убрать static перед bool ClAllFlag ?

Но эта переменная используется и в других местах кода... там где идет закрытие всех ордеров.

Я попробовал это сделать - не помогает.

Смущают постоянные сообщения в журнале...Может где-то

лишнее стоит?

Чему равно Pr2?

Наверно надо распринтовку значений делать просто.

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