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

 

Что-то ну никак не хочет работать. ПОМОГИТЕ, ПОЖАЛУЙСТА.

Идея проверки следующая: если свеча больше определённого значения, то запретить дальнейшую торговлю.

bool Trade=true;

//----------запуск в start()

{.......

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen(); //--------открытие ордера если (нет открытых ордеров) И (свеча не больше чем)

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==-1) Trade=false; //---------присвоение значение Trade false при условии если (открытых ордеров нет) И (свеча оказалась больше чем)

......}

//------- использование Trade осуществляется в функции CheckForOpen().

void CheckForOpen() //-------------------проверки условий и открытия ордера

{int res;

if( Trade && A()==-1 && B()==-1) //------- проверка условия открытия

{ res=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,Ask+SL*Point,Bid-TP*Point,"",MAGICMA,0,Red); //---------если условие выполнилось, то ордер открывается

Trade=false; } //--------Trade присваивается значение запрета на торговлю. И здесь это срабатывает. Если ордер закрывается по тэйку, то дальше он ожидает наступления новых определённых условий при том, что старые условия всё ещё действуют (ранее советник открывал ордера непрерывно)

.........}

//--------------------------проверка высоты свечи

int CheckVolume()

{ double volume=High[1]-Low[1]; //------измерение высоты свечи

if (volume <= CandleVolume*Point) return (1); //----------если свеча меньше чем

if (volume > CandleVolume*Point) return (-1);//------------если свеча больше чем

return(0);}

Также побовал версию, но она так и не заработала:

void start()

{ .....

if(CalculateCurrentOrders(Symbol())==0 && CheckVolume()==1) CheckForOpen();

.....}

.....

int CheckVolume()

{ double volume=High[1]-Low[1]; //------измерение высоты свечи

if (volume <= CandleVolume*Point) return (1); //----------если свеча меньше чем

if (volume > CandleVolume*Point) {Trade=false; return (-1);}//------------если свеча больше чем

return(0);}

 
dzhini:

что-то ну никак не хочет работать.


Может индикатор вначале сделать
 
Vinin:

Может индикатор вначале сделать
а без него никак с этим не справиться?
 

помогите разобраться ! Как сделать так что бы принт один раз выводился, а то у меня на каждом тике випадает принт.



while(OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS, MODE_TRADES)){
    if(OrderType() == OP_BUY)
     {
       Print ("-------   ",OrderSymbol()," "," BUY ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                       return(0);
                }
    if(OrderType() == OP_SELL)
      {
       Print ("-------   ",OrderSymbol()," "," SELL ",OrderLots()," trade was opened at ", OrderOpenPrice(),"; Stop loss:", OrderStopLoss(),
          "; Take profit:", OrderTakeProfit(), "; Ticket:", OrderTicket(),"; Open time:", OrderOpenTime());
                      
       }
index++;
 
itum:

помогите разобраться ! Как сделать так что бы принт один раз выводился, а то у меня на каждом тике випадает принт.


выводите этот принт в момент открытия ордера.
 
sergeev:
выводите этот принт в момент открытия ордера.


Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.

 
itum:


Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.

тогда выводите в коментарий на экран. Comment
 

Что это за ошибка ? Если я отправляю тестовое письмо с терминала то выдает ошибку

- 2010.12.28 18:23:55 Mail: 530 5.7.0 Must issue a STARTTLS command first. y1sm3265289fak.15

 
dzhini:
а без него никак с этим не справиться?

Можно конечно, но с помощью индикатора легко проверить визуально работу алгоритма
 
itum:


Мне нужно выводить информацию о уже имеющихся ордерах, которые были открыты вручную или же другим советником.


Как вариант, можно сделать счётчик принтов. Объявляем целочисленную переменную. Далее проверяем, если ордеров нет, то обнуляем её. Далее проверка - если переменная = нулю и ордера в рынке есть, то принтуем данные ордеров и увеличиваем эту переменную на 1. Как только ордера позакрываются, переменная снова станет равна нулю. Это значит, что код будет ждать появления хотя бы одного ордера и выводить инфу о нём в журнал.

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