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

 
xmurik писал(а) >>
Где ошибка ?

Видимо слишком близко к текущей цене. Надо на стоплевел проверять MarketInfo(Symbol(),MODE_STOPLEVEL);

 
Vinin писал(а) >>

Видимо слишком близко к текущей цене. Надо на стоплевел проверять MarketInfo(Symbol(),MODE_STOPLEVEL);

До цены 210 пунктов. А тестер дает error 3.

 
xmurik писал(а) >>

До цены 210 пунктов. А тестер дает error 3.

Я думаю, неправильно задан expiration, куда-то в прошлое.

 
xmurik писал(а) >>

До цены 210 пунктов. А тестер дает error 3.

Недавно была у меня эта ошибка. Как-то справился

 
Помогите пож-та найти ошибку. Я уже не могу.. И даже не врубаюсь где ее искать. Ошибка типа: '\end_of_program' - unbalanced left parenthesis
Файлы:
 
Alex5757000 писал(а) >>
Помогите пож-та найти ошибку. Я уже не могу.. И даже не врубаюсь где ее искать. Ошибка типа: '\end_of_program' - unbalanced left parenthesis

if(NormalizeDouble(MathAbs(OrderOpenPrice()-Win_Price),Digits) < NormalizeDouble(Dist,Digits)) // не хватало закрывающей скобки

 
Vinin >>:

if(NormalizeDouble(MathAbs(OrderOpenPrice()-Win_Price),Digits) < NormalizeDouble(Dist,Digits)) // не хватало закрывающей скобки

Vinin спасибо Вам огромное :-). уж извините за столь нелепую ошибку, пока только начинаю программить, набираюсь опыта...

 
Roger писал(а) >>

Я думаю, неправильно задан expiration, куда-то в прошлое.

Точно. Проблема в нем была.

 

И опять к вам за помощью,... все вроде доделал советника,.... а вот с закрытием ордера по определенным условиям никак не получается сделать. Постоянно возникает ошибка с определением то тикета, то номера ордера, то вовсе недопустимое значение выдает в кодах при попытке определения ордера для его последующего закрытия. У меня нет фун-и учета ордеров, но вроде можно и без нее управиться, возможно есть неправильная постоновка прохода последовательных операций по коду,но вроде все прально. Помогите кто чем может, посмотрите код, подскажите че нужно добавить для закрытия ордера по условию,сделайте замечания на ход реализации всего кода в плане правильности последовательности обработки в фун-и start,а то такое ощущение что я ее как бы зациклил и в некоторых моментах при наступлении условия ордер не открываеться (пропускаеться для следующего случая) ....... !!! ..)))  Вот код!

//+-----------------Включаемые дериктивы-----------------------------+
#include <Param.mqh>          //фун-я параметры 
//#include <Message_Print.mqh>          //фун-я коммент
#include <isTradeTimeString_m.mqh> //фун-я торгов по времени
#include <TrailingStop.mqh>          //фун-я трайлинг 
#include <isNewBar.mqh>       //фун-я проверки нового бара
#include <TotalOrders.mqh>    //фун-я проверки кол-ва открытых сделок
#include <Crit_Flat.mqh>      //фун-я проверки флэт
#include <Crit_Sell.mqh>      //фун-я проверки сигнала  продажи
#include <Crit_Buy.mqh>       //фун-я проверки сигнала  покупки
#include <TakeProfitLastClosePos.mqh>      //фун-я определения профита послед закрыт поз
#include <GetTypeLastClosePos2.mqh>         //функция определения типа закрытой поз
//+-----------------Переменные---------------------------------------+
int               ExpertOrdersTotal;   //общее колличество открытых позиций
int tiket = 0;
int mn = 0;                                //магик


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   MinStop=MarketInfo(Symbol(),MODE_STOPLEVEL); //минимальное разрешимое отклонение стоп лосс от рыночной цены
//----
   return(0);
  }

int start()
  {

//Print("Проверка открытых ордеров 1");
//---------------------Проверка по времени------------1---------
  if (tim==true)
   {
   isTradeTimeString(); //торговля по времени
   if (isTradeTimeString(TimeBegin, TimeEnd))
     {
//---------------------Проверка трейлинга------------2---------
   TrailingStop();


//---------------------Проверка открытых ордеров------------3---------
   ExpertOrdersTotal = TotalBuy()+TotalSell(); // СКОЛЬКО ВСЕГО ОРДЕРОВ ОТКРЫТО  
   if (ExpertOrdersTotal>=Sdelki)         // если кол-во открытых сделок меньше максимального
     {                                   // кол-ва сделок, проверяем возможность открытия сделки
      //Print("превышено кол-во сделок,выход"); 
      return(0);
     }   
   else
     {

          Print("проверка появления нового бара ");

//--------------------проверка появления нового бара--------4---------
        Fun_New_Bar();                               // Обращение к функции и передача ей управления
        if (New_Bar==false)                          // Если бар не новый..
         {
          //Print("Нового бара пока нет,выход");   
          return;                                      // ..то уходим   
         }
        //Print("проверка сигнала ");
//--------------------проверка сигнала----------------------5---------
        Crit_Flat();
      
        Crit_Sell();
        Crit_Buy();
//        Print("коэф-нт покупки ",ves_buy);
//        Print("коэф-нт продажи ",ves_sell);
        
        if (Flat == true)  //проверка наличия флэта
          {
            return(0);
          }
        if (Trend==true)  //сделки по тренду
          {
              
              if (ves_buy < ves_sell) 
                {
                 tiket = OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Ask-TP*Point,"My order #",mn,0,Green);
                 Print ("Ордер открыт по тренду"); 
                } 
              if (ves_buy > ves_sell)
                {
                 tiket = OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-SL*Point,Ask+TP*Point,"My order #",mn,0,Red);
                 Print ("Ордер открыт по тренду"); 
                } 
          }
        else
          {       
        if (ves_buy > ves_sell && ves_buy >= param)
           {
             tiket = OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-SL*Point,Ask+TP*Point,"My order #",mn,0,Red);
             Print ("Ордер открыт по коэфициенту"); 
        //--------------------------------------------------
        //          доработать фун-ю открытия ордера
        //--------------------------------------------------
           }
           
        if (ves_buy < ves_sell && ves_sell >= param)
           {
            tiket = OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Ask-TP*Point,"My order #",mn,0,Green);
            Print ("Ордер открыт по коэфициенту");
        //--------------------------------------------------
        //          доработать фун-ю открытия ордера
        //--------------------------------------------------
           }
          }  
    
//+------------------------------------------------------------------------   
            
       
     }        //скобка проверки колва сделок
  Print("есть сделки, выход");

  }//скобка проверки времени   
 Print ("время не подошло");  
  }//проверка флага торговли по времени 
   return(0);                                  //ретурн основного старта
  }

вот сообственно и код. Раз уж я тут, спрошу еще один вопрос,.. есть ли ограничения какиенить по реализации советника, в плане его многократного пересчета или запроса параметров с дц? такие глобальные в смысле ограничения (не конкретного дц)!      

Жду помощи и немного критикующей оценки )

 
Alex5757000 >>:
Помогите пож-та найти ошибку. Я уже не могу.. И даже не врубаюсь где ее искать. Ошибка типа: '\end_of_program' - unbalanced left parenthesis

Семён Семёныч...

Научитесь писать вот такую конструкцию:

if(){}

после чего начинайте её заполнять тогда почти никогда не запутаетесь.

Ошибка типа: '\end_of_program' - unbalanced left parenthesis очень не приятная тем что компилятор точно не может определить местонахождение ошибки поэтому её лучше не делать, а избежать её можно указанным выше методом,можете гдето сделать заготовку и вставлять в нужных местах.

Следующие "Рясу в джинсы не заправляют"

if();{} - это не верная конструкция

забирайте, ваш код с иправлениями в прикреплённом файле.

Файлы:
Причина обращения: