Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 849

 
gince:

Почему выводит не тот обьект ? Должен быть Треугольник указывающий налево https://docs.mql4.com/ru/constants/objectconstants/arrows код 3, а появляется стрелка на верх Wingdings код 241.

 

 

Код программы (у меня стоит ObjectSet(objName, OBJPROP_ARROWCODE, 3);)

 

Почитай повнимательней. Я в подробностях не помню, но код 3 не входит в Wingdings.


ps; Вот что в примечании

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

 
Это советник.
AlexeyVik:

Почитай повнимательней. Я в подробностях не помню, но код 3 не входит в Wingdings.


ps; Вот что в примечании

Специальные коды стрелок не могут использоваться впользоЭвательских индикаторах при установке значения стрелки для линий,имеющих стиль DRAW_ARROW.

 

 

Это советник , а в нем функция.

 
gince:
Это советник.
Не важно.
 
AlexeyVik:
Не важно.

Ток когда можно ?

 
gince:
Это советник.

В том же советнике и вторая функция. Там все в порядке. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

void f_ArrowOpen(
                  datetime openTime,
                  int action,
                  double lots,
                  string symb,
                  double openPrice
                  )
{
   color c;
   string op="";
      if(action==1)
      {
         c=Blue;
         op="BUY";
      }
      else if(action==-1)
      {
         c=Red;
         op="SELL";
      }
   // order open arrow name:    #76840865 buy 0.05 EURUSDc at 1.30416

      string objName = StringConcatenate("#", TimeToString(openTime,TIME_DATE|TIME_MINUTES), " ", op, " ", lots, " ", symb, " at ", openPrice);
      ObjectCreate(objName, OBJ_ARROW, 0, openTime, openPrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 1);
      ObjectSetText(objName, "LOT: " + DoubleToStr(lots, 2));
}
//+------------------------------------------------------------------+ 
void f_ArrowClose(
                  datetime closeTime,
                  int action,          //íàïðàâëåíèå
                  double lots,
                  string symb,
                  double openPrice,
                  double closePrice,
                  double profit)
{
      color c;
      string op="";
      if(action==1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_BUY";
      }
      else if(action==-1)
      {
         if(profit>0)c=Blue;else if(profit<0)c=Red;else c=Yellow;
         op="cl_SELL";
      }
      
      string objName = StringConcatenate("#", closeTime, " ", op, " ", lots, " ", symb, " at ", openPrice, " close at ", closePrice);
      ObjectCreate(objName, OBJ_ARROW, 0, closeTime, closePrice);
      ObjectSet(objName, OBJPROP_COLOR, c);
      ObjectSet(objName, OBJPROP_ARROWCODE, 3);
      //ObjectSetText(objName, StringConcatenate("Profit: ", profit));
}
 
Подскажите пожалуйста. Советник торгует на основе сигналов индикаторов на каждом баре. А как сделать чтобы условия проверялись на каждом тике. Вот условия в индикаторе :
int limit, i; 
int counted_bars=IndicatorCounted(); // Сколько баров уже было посчитано 
if (counted_bars<0) return(-1); // Проверка возможной ошибки 
if (counted_bars>0) counted_bars--; // Пересчитываем последний посчитанный бар 
limit=Bars-counted_bars; // Начинаем с последнего посчитанного бара 
// - 1 - ============================ Окончание блока =================================== 

// - 2 - ======================= Отображение индикатора на истории ====================== 
for(i = limit; i >= 0; i--) 

FastMA = iMA(NULL, 0, FastMAPeriod, FastMAShift, FastMAMethod, FastMAPrice, i); 
SlowMA = iMA(NULL, 0, SlowMAPeriod, SlowMAShift, SlowMAMethod, SlowMAPrice, i); 


// - 2 - ============================ Окончание блока =================================== 

// - 3 - ======================= Выдача сигналов ======================================== 
//if (LastBar != Time[0]) // Один раз за один бар 
//{ 
в этом дело все?
 
gince:

В том же советнике и вторая функция. Там все в порядке. (ObjectSet(objName, OBJPROP_ARROWCODE, 1);)

 

Ты думаешь что я буду убеждать тебя в том, что ты не правильно что-то понимаешь? Потрать лучше своё время на эксперименты и попытки понять написанное.
 

Всем добрый день.

Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.

 
Craft:

Всем добрый день.

Подскажите, какое добавить условие перед OrderSend чтобы ордер не исполнялся, если предыдущая открытая позиция находится в минусе? Чтобы не было усреднения.

Вообще проверка вот так

 OrderSelect(ticket,SELECT_BY_TICKET);
 

    if(OrderProfit()<0)   {  }


А в скобках можно поставить все что угодно. Я например так использую, чтобы метод "мартин" работал )

 
Добрый вечер! Не могли бы вы подсказать, каким образом работает советник. Если я пишу return непосредственно в основной функции Start, советник завершает свою работу? Заранее спасибо!
Причина обращения: