Как найти время бара, в котором пересеклись скользящие средние? (код внутри) - страница 2

 

О, и Алладир - вы выглядите несносным типом.

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

 
DomGilberto:

О, и Алладир - вы выглядите несносным типом.

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

Если вы не можете быть вежливым, не пишите.
 

WHRoader (если вы не возражаете), не могли бы вы сказать мне, прав я или нет в этом?

double buyPrice = iHighest(Symbol(), 0, MODE_HIGH, iBarShift(Symbol(), 0, triggerBarTime, true), 0); 

int Buy_Price = buyPrice; 

int buyticket = OrderSend(Symbol(),Buy_Price,LotSize,Ask,3,0,0,NULL,MagicNumber,0,Green);   Usually I'd put OP_BUY where Buy_Price is...

Вы хотите сказать, что поскольку iHighest просто указывает номер бара, моя попытка поставить Buy_Price туда, где раньше был OP_BUY, не имеет никакого смысла, потому что OrderSend принимает двойное число? (когда iHighest - целое число?).

Как я могу преобразовать логику iHighest в цену, чтобы моя функция OrderSend поняла, что я хочу купить самый высокий из диапазона iHighest?

 
RaptorUK:
Если вы не можете быть вежливым, не пишите.


Да, ты прав. Извини.
 
DomGilberto:

WHRoader (если вас не затруднит) не могли бы вы подсказать, прав я или нет в этом?

"double buyPrice = iHighest(Symbol(), 0, MODE_HIGH, iBarShift(Symbol(), 0, triggerBarTime, true), 0);"

int Buy_Price= buyPrice;

"int buyticket =OrderSend(Symbol(),Buy_Price,LotSize,Ask,3,0,0,NULL,MagicNumber,0,Green);" Обычно я ставлю OP_BUY там, где Buy_Price....


  1. Воспроизвести видео
    Пожалуйста, отредактируйте ваше сообщение.
    Для больших объемов кода, прикрепите его.

  2. "double buyPrice = iHighest... 
    "double price = int bar index," не имеет смысла. Разбейте его на части:
    // double buyPrice = iHighest(Symbol(), 0, MODE_HIGH, iBarShift(Symbol(), 0, triggerBarTime, true), 0);
    int    iTBT     = iBarShift(Symbol(), 0, triggerBarTime, true),
           iHH      = iHighest(Symbol(), 0, MODE_HIGH, iTBT + 1, 0); // Include tBT bar. Len = from - to + 1
    double buyPrice = High[iHH];
    
  3. В большинстве функций (кроме marketInfo) вам не нужно использовать Symbol(). Вы можете использовать NULL в качестве текущего символа графика, так же как вы уже используете 0 в качестве текущего таймфрейма графика.
 

Омг - Почему после осознания все так ясно! Я думаю, это тот случай, когда практика делает совершенным.

Честно говоря, теперь я понимаю это гораздо лучше. Поставьте :) на мое лицо!

Я собираюсь попробовать сделать это сейчас и посмотреть, что у меня получится!

Спасибо!!!

 
int buyticket = OrderSend(Symbol(),buyPrice,LotSize,Ask,3,0,0,NULL,MagicNumber,0,Green);

Когда я пытаюсь использовать это ниже, я получаю ошибку в журнале, говорящую, что функция OrderSend cmd должна быть целым числом?

Я, очевидно, не понимаю, потому что вы упомянули, что "OrderSend принимает только цену (двойную), поэтому нет смысла открывать ордер по цене 9".

Очевидно, если я изменю его на "int Buy_Price = buyPrice", это работает для размещения ордеров, но это не имеет отношения к тому, где должен быть вход. (Это мой последний вопрос - я, конечно, не хочу обидеть!)

int iTBT= iBarShift(NULL,60, triggerBarTime, true),
         iHH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0); // Include tBT bar. Len = from - to + 1
            double buyPrice = High[iHH];
 
DomGilberto:

Когда я пытаюсь использовать это ниже, я получаю ошибку в журнале, говорящую, что функция OrderSend cmd должна быть целым числом?

Я, очевидно, не понимаю, потому что вы упомянули, что "OrderSend принимает только цену (двойную), поэтому нет смысла открывать ордер по цене 9".

Очевидно, что если я изменю его на "int Buy_Price = buyPrice", это работает для размещения ордеров, но это не имеет отношения к тому, где должен быть вход. (Это мой последний вопрос - я, конечно, не хочу обидеть!).

Ошибка заключается в команде в OrderSend(), я знаю, что вы не хотите это слышать, но если вы хотите учиться, вы также должны научиться проверять документацию и научиться читать ее... это все часть процесса... когда я кодирую команду OrderSend(), я каждый раз сверяю ее с документацией, чтобы проверить, правильно ли я запомнил.

int buyticket = OrderSend(Symbol(),buyPrice,LotSize,Ask,3,0,0,NULL,MagicNumber,0,Green);

Какой это тип ордера ? click -->OrderSend() говорит, что второй параметр-cmd - Тип операции. Он может быть любым из перечисления торговых операций.

 

Да, вы правы, RaptorUK - я действительно (практически во всем, что я делаю) читаю документацию (палец практически все время сидит на F1).

Иисус - свежим взглядом я понял, насколько глуп я был!

Я не хотел помещать buyPrice во второй параметр cmd, я хотел поместить его в 4-й параметр (double Price)!

Так что это работает (размещение в правильном порядке) - я изменил его на ордера buy и sellstop. Боже, как я раздражен тем, каким идиотом я был!

int buyticket = OrderSend(Symbol(),OP_BUYSTOP,LotSize,buyPrice,3,bsl,btp,NULL,MagicNumber,0,Green); 
      if(buyticket>0)OrderModify(buyticket,OrderOpenPrice(),bsl,btp,0,CLR_NONE);

int iTBT= iBarShift(NULL,60, triggerBarTime, true),
        iHH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0); // Include tBT bar. Len = from - to + 1
            double buyPrice = High[iHH];

Цена покупки" просто устанавливает ордер выше максимума самого последнего закрытого бара, который коснулся 21 EMA (вместо бара, который был самым высоким из пересечения MA и бара, который коснулся 21 EMA...).

Я поиграю и посмотрю, где я ошибаюсь! (Провел так много времени, глядя на это, что теперь становится больно, lol).

Спасибо!!!!

(p.s что означает // Include tBT bar. Len = от - до + 1 ноты?)

 
  1. DomGilberto:

    (p.s что означает // Включить бар tBT. Len = от - до + 1 нота?)

    HH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0); // Include tBT bar. Len = from - to + 1

    Наибольший индекс бара, начиная с нуля для iTBT+1 бара, включает бар iTBT.

    Ваш оригинальный пост

    double buyPrice = iHighest(Symbol(), 0, MODE_HIGH, iBarShift(Symbol(), 0, triggerBarTime, true), 0);
    
    не включает бар triggerBarTime.
  2. iHH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0); // Include tBT bar. Len = from - to + 1
    double buyPrice = High[iHH];
    Почему вы изменили NULL,0 на NULL,60? Теперь iHH действителен только для графика PERIOD_H1, и если текущий график НЕ H1, то High[iHH] будет ложным.
Причина обращения: