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

 
Ibiss >>:

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

меня этот вопрос долго мучает!! ПОМОГИТЕ!

Вот условие выхода:


Я не ас но

if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;

если (OMN не равно OMN или OS не равно OS) {то продолжаем}


но ето значит что ордер не принадлежит советнику

попробуй

if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) break;
 
Ibiss >>:

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

меня этот вопрос долго мучает!! ПОМОГИТЕ!

Вот условие выхода:


Snachala narusyj sebe blok shemy svoego algorutma, chtob tu vuzyalno vudel chto tu delaesh y po kakum yslovuyam y tebya zakruvayutsya ordera, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.

 

Господа, подскажите, есть что-нибудь готовое для вывода комментов на чарт к каждому ордеру. Т.е. стрелочка на графике и рядом коммент с причиной. И чтоб в тестере рисовалось :)

Спасибо.

 
AndBar >>:

Snachala narusyj sebe blok shemy svoego algorutma, chtob tu vuzyalno vudel chto tu delaesh y po kakum yslovuyam y tebya zakruvayutsya ordera, a vse eto delo perevestu v kod eto yge delo tehnuku - ya tak dymayu.


Hey man can you speak like this или вот так :) Все глаза уже сломал. :)
 

costy, не помогло,но спасиба !

 может кто знает как сделать чтоб при пересечении и обратном пересечении открывались и закрывались противоположные ордера!???

тут нужно некое волшебство...аааа...

видете сколько должно быть разных покупок и продаж? а их всего пара штук...

как можно исправить данный недуг?

кому не сложно, гляньте код! пожалуйста!

всё дело в коде советеника, а не в индюке..думаю..

а прoсадки такие..врагу не пoжелаешь - 96%... кoму интереснo:)

по идее должно быть воот так:


Файлы:
itrend.mq4  5 kb
 

короче, я решил переделать советник, прочитав прочитав про глобальные переменные, и эврика!!

и ещё проблемка была в тиках...

сделки открываются во всех пересечениях, но одно большое НО..они открываются бооольшими стопками...

народ, как мне эту проблему устранить? будьте милосердны)))

вот скрин:


"Зрелище не для слабонервных"

Файлы:
ggftest.mq4  3 kb
 
Ibiss >>:

costy, не помогло,но спасиба !

 может кто знает как сделать чтоб при пересечении и обратном пересечении открывались и закрывались противоположные ордера!???

тут нужно некое волшебство...аааа...

видете сколько должно быть разных покупок и продаж? а их всего пара штук...

как можно исправить данный недуг?

кому не сложно, гляньте код! пожалуйста!

всё дело в коде советеника, а не в индюке..думаю..

а прoсадки такие..врагу не пoжелаешь - 96%... кoму интереснo:)

по идее должно быть воот так:



Самый простой способ:

На каждом тике инициализируем 4 переменных индикатора. Две для красной линии и две для зелёной. Ну и соответственно две переменные торговых сигналов.

В таком случае программный код советника должен выглядеть следующим образом:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
// ---------- Вспомогательные переменные ------------
double Green_1,Green_2,Red_1,Red_2;// значения индикатора на первой и второй свечках
bool SigBuy,SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if(Green_2<=Red_2 && Green_1>Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if(Green_2>=Red_2 && Green_1<Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if(SigBuy){
    if(CloseObr){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend(тут пишем параметры установки лонга);
  }
  if(SigSell){
    if(CloseObr){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend(тут пишем параметры установки шорта);
  }
}
В общем виде советник должен так и работать. Может это не самый совершенный вариант набора кода, но зато он хорошо иллюстрирует логику его построения.
 

drknn, спасибо за идею и за код)!


случайнo не знаешь как бoрoться с тoлпoй  oрдерoв?)

 
Ibiss >>:

короче, я решил переделать советник, прочитав прочитав про глобальные переменные, и эврика!!

и ещё проблемка была в тиках...

сделки открываются во всех пересечениях, но одно большое НО..они открываются бооольшими стопками...

народ, как мне эту проблему устранить? будьте милосердны)))

вот скрин:


"Зрелище не для слабонервных"



Ну тогда можно так:

// ------ Пользовательские переменные -------------------
extern bool CloseObr=true;// закрывать ли противоположный ордер при возникновении торгового сигнала
extern int MAGIC=0;// у ордеров открытых вручную магик = 0
// ---------- Вспомогательные переменные ------------
double Green_1,Green_2,Red_1,Red_2;// значения индикатора на первой и второй свечках
bool SigBuy,SigSell;// торговые сигналы
int TICKET;

int start(){
  Green_1=iCustom(****);// зелёная на первой свече
  Green_2=iCustom(****);// зелёная на второй свече
  Red_1=iCustom(****);// красная на первой свече
  Red_2=iCustom(****);// красная на второй свече
  
  // ------- формируем торговые сигналы -------------
  
  SigBuy=false;
  SigSell=false;
  
  if(Green_2<=Red_2 && Green_1>Red_1){// зелёная пересекает красную снизу вверх
    SigBuy=true;
  }
  if(Green_2>=Red_2 && Green_1<Red_1){// зелёная пересекает красную сверху вниз
    SigSell=true;
  }
  
  // ------ Сигналы сформированы. Торгуем ------------------
  if(SigBuy && SchBuy(MAGIC)==0){
    if(CloseObr && SchSell(MAGIC)>0){
      // то удаляем все Sell-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend(тут пишем параметры установки лонга);
  }
  if(SigSell && SchSell(MAGIC)==0){
    if(CloseObr && SchBuy(MAGIC)>0){
      // то удаляем все Buy-ордера
    }
    // --- противоположные удалены. Открываем позу
    ......
    TICKET=OrderSend(тут пишем параметры установки шорта);
  }
return(0);
}
// --------- Пользовательские подпрограммы -----------------

// ==========================================================================================================================
// ************************* Счётчики ордеров *******************************************************************************
// ==========================================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy(int MAGIC){
  string SMB=Symbol();
  int SchBuy=0;
  int i;
  for (i=OrdersTotal()-1;i>=0;i--) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;}
      if(OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
  return(SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell(int MAGIC){
  string SMB=Symbol();
  int SchSell=0;
  int i;
  for (i=OrdersTotal()-1;i>=0;i--){
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {WriteError(i);}
    else {
      if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC){ continue;} 
      if(OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return(SchSell);     
}                  
//==================================================================================================
 
Bond >>:

Господа, подскажите, есть что-нибудь готовое для вывода комментов на чарт к каждому ордеру. Т.е. стрелочка на графике и рядом коммент с причиной. И чтоб в тестере рисовалось :)

Спасибо.


Чтоб рисовалось даже в тестере, нужно руками делать программный код.

При этом стрелки лучше задавать в функциях OrderSend() и OrderClose().

Коммент можно выводить по-разному. Из готовых - могу сказать, что это довольно специфичная задачка - вряд ли удастся найти готовый код.

Здесь в базе MQL4 я когда-то выкладывал свой скрипт, который наносит историю торгов на график. В последствии мою идею другие программеры "дожали". У меня просто стрелки и линии выводились, которые показывали точки открытия/закрытия ордеров. У скриптов других программеров впоследствии появились и комменты к ордерам, отображение цен исполнения. Вот это, пожалуй, найти здесь вполне удастся.