Unbalanced left parenthesis - страница 3

 

Такая вот проблема.У меня эксперт работает на отложенных ордерах, ограничение на количество выставленных ордеров абсолютно жёсткое-(1), но терминал

на это плюёт и выставляет их сколько душе угодно.Кто-нибудь с этим сталкивался?

 
petrov74:

Такая вот проблема.У меня эксперт работает на отложенных ордерах, ограничение на количество выставленных ордеров абсолютно жёсткое-(1), но терминал

на это плюёт и выставляет их сколько душе угодно.Кто-нибудь с этим сталкивался?


Давайте код, уберите то что жалко, остальное на стол, ошибка в нем.
 
Figar0:
petrov74:

Такая вот проблема.У меня эксперт работает на отложенных ордерах, ограничение на количество выставленных ордеров абсолютно жёсткое-(1), но терминал

на это плюёт и выставляет их сколько душе угодно.Кто-нибудь с этим сталкивался?


Давайте код, уберите то что жалко, остальное на стол, ошибка в нем.


У него ещё много странностей,в частности,он иногда не соблюдает параметры по стопам и выдаёт уйму одинаковых результатов на разных комбинациях параметров при

оптимизации.Сам код- в прикреплённом файле,параметры для оптимизации от 0.1 до 20 с шагом 0.1 для всех семи параметров.

 
    int N=1+MathRound(AccountProfit()/100); 
    int total;
    //int DindexLow;
    //int DindexHigh;   
        total=OrdersTotal(); 
        if(total<N)
    if ((iMA(NULL,t,1,0,MODE_SMA,PRICE_HIGH,0)-iMA(NULL,t,MATrendperiod,0,MODE_SMA,PRICE_MEDIAN,0))>0) // пробой-продажа 
               Stoploss1      =40;
               Takeprofit1    =25+MathAbs(Dt1);
               Vo1            =25+MathAbs(Do1);
               Pv1            =Px*Dm1;

И почему же он должен открывать только один ордер? Да и по логики не хватает кучи фигурных скобок. Eсли хотите чтобы открывался только один ордер:

if (OrdersTotal()<1) ticket3=OrderSend(symbol,OP_BUYLIMIT,Lots,Ask-Vo3*Point,3,Bid-Stoploss3*Point,Ask+Takeprofit3*Point);
 
Figar0:
    int N=1+MathRound(AccountProfit()/100); 
    int total;
    //int DindexLow;
    //int DindexHigh;   
        total=OrdersTotal(); 
        if(total<N)
    if ((iMA(NULL,t,1,0,MODE_SMA,PRICE_HIGH,0)-iMA(NULL,t,MATrendperiod,0,MODE_SMA,PRICE_MEDIAN,0))>0) // пробой-продажа 
               Stoploss1      =40;
               Takeprofit1    =25+MathAbs(Dt1);
               Vo1            =25+MathAbs(Do1);
               Pv1            =Px*Dm1;
И почему же он должен открывать только один ордер? Да и по логики не хватает кучи фигурных скобок.
А он и без реинвестирования чудит,я проверял.
 
petrov74: А он и без реинвестирования чудит,я проверял.

В куче мест после условия if не хватает фигурных собок, вот и чудит. Удивляюсь что вообще работает. А реинвестированием Вы называете увеличение кол-ва открытых ордеров на все депо? Обычно увеличивают лот.
 
Figar0:
petrov74: А он и без реинвестирования чудит,я проверял.

В куче мест после условия if не хватает фигурных собок, вот и чудит. Удивляюсь что вообще работает. А реинвестированием Вы называете увеличение кол-ва открытых ордеров на все депо? Обычно увеличивают лот.
Насчёт скобок-просьба поподробнее,а то я человек тёмный.А с количеством ордеров-так надёжнее,а то с размером лота он чудил ещё круче.
 

Ну например:

    if ((iMA(NULL,t,1,0,MODE_SMA,PRICE_HIGH,0)-iMA(NULL,t,MATrendperiod,0,MODE_SMA,PRICE_MEDIAN,0))>0) // пробой-продажа 
               Stoploss1      =40;
               Takeprofit1    =25+MathAbs(Dt1);
               Vo1            =25+MathAbs(Do1);
               Pv1            =Px*Dm1;
Условие распространяется только на Stoploss1 =40; По коду таких мест хватает.
Причина обращения: