[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 218

 
ViktorF:

При работе советника выскакивают такие ошибки:

При этом были моменты, когда ордера либо не закрывались, либо не открывались в определенных моментах.

Насколько несработка закрытий/открытий связана с этими ошибками? Как эти ошибки обойти (желательно без замены терминала на MT5)?

Смотрите тут и тут... ну и тут...

Почему бы не ввести в строку поиска название ошибки и сразу получить ответ?

 
Roman.:


За***чите частыми запросами в реальной торговле своего брокера с последующим запретом от него для Вас автоматической торговли - торговать самому только телефоном придется.

Модифицируйте ордера через определенное количество пунктов (интервал), например, 50 или 100 - это при пятизнаке (допустим, при движении цены в Вашу сторону - модифи ордер), и все будет нормуль. :-))) ИМХО, конечно же.

Гм...


Полностью одобряю...
 

Доброго дня! Цитата учебника:

В инициализирующей последовательности допускается пропуск одной или нескольких констант. В этом случае соответствующие элементы массивов числовых типов инициализируются нолём, а элементы массивов типа string инициализируются строковым значением "" (открывающая и закрывающая двойная кавычка без промежутка), т.е. пустой строкой (не путать с пробелом).

Вопрос 1: Что происходит элементами типа bool при пропуске?

Идея следующая: создаем одномерный массив флагов параметров открытия сделки, следовательно

bool Open[20] {par1,par2,par3....,par20}

if (MA1>MA2) par1=true;

if (MA7>MA8) par2=true; ...

if (ma33>ma55) par20=true;

Кто сталкивался с подобными решениями - подскажите:

2 - направление верное?

3- как дальше записать варианты параметров типа if (Open [12] {1,0,0,1,1...,0 } ) OrderSend() и т.д. - правильно?

 
ilmur:

поможите плиз... в советнике есть функция проверки открытых ордеров ..одновременно может быть открыт один ордер...но при вписывание размера стопа на прямую в момент открытия ордера выдает ошибку 130...например было так

if(вниз>0)

{

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,0,Bid-TakeProfit*Point,0,16384,0,Red);

вписываю стоп размером 100

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,100,Bid-TakeProfit*Point,0,16384,0,Red); ...выдает ошибку 130 в тестере

дц альпари...может нужно модифицировать после открытия ордер и выставить стоп?..подскажите как примерно можно это сделать или укажите на советник где это сделано...пожалуйсто


алпари не открывает сделки со стоплоссами и тейками
 
100yan:

Идея следующая: создаем одномерный массив флагов параметров открытия сделки, следовательно

bool Open[20] {par1,par2,par3....,par20}

if (MA1>MA2) par1=true;

if (MA7>MA8) par2=true; ...

if (ma33>ma55) par20=true;

Кто сталкивался с подобными решениями - подскажите:

2 - направление верное?

3- как дальше записать варианты параметров типа if (Open [12] {1,0,0,1,1...,0 } ) OrderSend() и т.д. - правильно?

какое направление и что значит верное?

и как тебе сказать как чтото там записать правильно если непонятна сама задача

 
int OrderStatus() {
   int z1=0, z2=0;  // порядок для массива
   int i, k=OrdersTotal();
      for (i=1; i<=k; i++) {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if (OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketBS[z1]=OrderTicket(); // присваем массиву под 1 ячейкой первый найденный ордер тикет
            z1++;
            }
            if (OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && OrderMagicNumber()==MG) {
            TicketSS[z2]=OrderTicket();
            z2++;
            }
         }
      }
}
Кто может помочь, почему не присваивает значения Ордертикетов в массив TicketBS[] и TicketSS[] ??? пишет всегда 0...
 
eddy:

какое направление и что значит верное?

и как тебе сказать как чтото там записать правильно если непонятна сама задача

1. направление хода мысли верное?

2. как сравнить варианты параметров с заданным массивом? Т.е. создали массив с правильными параметрами. Например, что бы не писать if((MA1>MA2)&&(MA7>MA8)&& ....) а использовать вариант записи массива для открытия ордера тип12 Open [12] {1,1,1,0,1...,0 }, соответственно набор параметров я вляется условием открытия ордера тип12.

 

тип12 Open [12] {1,1,1,0,1...,0 }

что это? элементами пользовательских массивов являются переменные, а у тебя почемуто тело тут (фигурные скобки).

 
eddy:

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


Инициализация массива


Массив может быть инициализирован только константами соответствующего типа. Одномерные и многомерные массивы инициализируются одномерной последовательностью констант, перечисленных через запятую. Последовательность обрамляется фигурными скобками:
bool Mas_b[5] = { false, true, false, true, true }

 
ты хочешь запомнить параметры для открытия ордера? для этого надо будет иметь несколько переменных bool, для каждого параметра, чтоб проверять соответствует ли им рынок
Причина обращения: