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

 
Figar0 >>:

А что это за конструкция вообще?

да я уже разобрался прогнал через тест.

конструкция ну и так понятно что просто убрал значение индикатора что смущает то?

 
1Rakso писал(а) >>

да я уже разобрался прогнал через тест.

конструкция ну и так понятно что просто убрал значение индикатора что смущает то?

Просто не понятно что это, как можно ответить если понимаешь что спрашивают?

Все индикаторы в МТ по умолчанию строятся по Bid (поэтому я спрсил что это) и потому корректно сравнивать их тоже с Bid не важно что за этим последует, бай или селл. А так правильно.

 
anat >>:



Подскажите, пожалуйста, как в эту конструкцию if(iSAR(NULL,0,step0,0.1,0)<Close[0]) вставить условие, при котором, например, если открыты позиции на покупку, то позиции на продажу не открываются пока не будут закрыты ВСЕ позиции на покупку. То есть, цикл торговли, купили 3 позиции, ждём пока все три не закроются. Позиции закрывадются только по стоплоссу или по тейкпрофиту. Закрылись все позиции, ждём сигнала, поступил сигнал, покупаем или продаём (в зависимости от сигнала) три позиции и т.д. "Полезные функции от KimIV" изучил. Можно использовать функции CountOrders(), ExistOrders(), ExistPositions(). Но как их практически вставить? Конструкция if((iSAR(NULL,0,step0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==false) не работает. Понимаю, что надо вставить логическую переменную, но как это сделать практически? Чего то я не догоняю.


Прочитал всю ветку. Решение нашёл такое - весь приведённый код заключаем в фигурные скобки, перед ними пишем if (OrdersTotal( ) == 0). Грубо, но работает. Хотелось бы через bool переменные, чтобы открывать любое кол-во ордеров, руководствуясь условием if (OrdersTotal() >=maxOpen) return;
 
anat >>:
Прочитал всю ветку. Решение нашёл такое - весь приведённый код заключаем в фигурные скобки, перед ними пишем if (OrdersTotal( ) == 0). Грубо, но работает. Хотелось бы через bool переменные, чтобы открывать любое кол-во ордеров, руководствуясь условием if (OrdersTotal() >=maxOpen) return;

если нужно разделить Total_sell и Total_buy попробуйте использовать функцию

int CalculateCurrentOrders(string symbol)  из  SimpleMACD

int CalculateCurrentOrders(int Type)// OP_BUY , OP_SELL
  {
   int buys=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() )
        {
         if(OrderType()==Type)  buys++;
        }
     } return(buys);
  }
 
подскажите пожалуста какая функция возвращает время закрытия текущей свечи???
 
Diver-si >>:

Это не стратеги, просто нужно проверить одно предположение. Кстати, почему то советник не совершает сделки? Не пойму почему.

Не знаю. Я на тестере прогонял у меня все работало. Возможно вы с параметрами ошиблись. Либо не поставили галочку разрешить советнику торговать. А еще время старшего ТФ задается в минутах! те в переменной TFUP указываете не м5 а 5, не м30 а 30, не H1 а 60 и тд.

 
gmMarat писал(а) >>
подскажите пожалуста какая функция возвращает время закрытия текущей свечи???

Что такое время закрытия текущей свечи? Текущая свеча еще не закрыта, иначе она уже не текущая, можно предполагать это время примерно так Time[0]+Period()*60

 
Figar0 >>:

Что такое время закрытия текущей свечи? Текущая свеча еще не закрыта, иначе она уже не текущая, можно предполагать это время примерно так Time[0]+Period()*60

Figar0 спасибо, это мне и надо было

 
Как определеить стоимость одного пункта при торговле одним лотом? Мне посоветовали формулу MarketInfo(Symbol(),MODE_LOTSIZE)*Point, но она абсолютно не верна! Для USDJPY по ней получаем 100000$*0.001=100$, хотя на самом деле это один доллар, как и для большинства инструментов.
 
Цена 1 пункта для стандартного лота:
 
double ad.QuotePoint   = MarketInfo ( Symbol () , MODE_POINT     )      ;
double ad.QuoteTick    = MarketInfo ( Symbol () , MODE_TICKSIZE  )      ;
double ad.NominalTick  = MarketInfo ( Symbol () , MODE_TICKVALUE )      ;

double ad.NominalPoint = ad.NominalTick  * ad.QuotePoint / ad.QuoteTick ; // Цена 1 пункта для стандартного лота
Цена 1 пункта для ордера известного размера "ad.OrderSize":

double ad.OrderPoint   = ad.NominalPoint * ad.OrderSize                 ;
Причина обращения: