[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 97

 
MaxZ:

Я наверное что-то не понимаю:



С NewOrder разобрался спасибо теперь шаг работает
 
SeALALex:

С NewOrder разобрался спасибо теперь шаг работает

Будьте осторожны с данным кодом. Он был написан на ходу и не был проверен! :)))

И Я лишь написал один из вариантов решения Вашей задачи.


Кстати, Вы ранее приводили следующий код:

Болк открытия на бай
if(Buy==true) 
  {Buy=false;

   ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask, Digits),5,SL,TP,Order,070177,0,Orange);
   if(ticket>0)
    { 
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {Print("BUY order opened : ",OrderOpenPrice());
       Alert("Buy Order for ",Symbol());
       SendMail("Buy Order "+Symbol()+" "+Ask,SL);     
       }
     }
     else Print("Error opening BUY order : ",GetLastError()); 
     return(0); 
   }

А если, например, будет реквот?? То ордер BUY ведь не откроется, а сигнал на открытие мог быть и верным. И через пару часов Вы увидите как цена ушла далеко вверх, а ордер BUY не открылcя из-за реквота...

 
MaxZ:

Будьте осторожны с данным кодом. Он был написан на ходу и не был проверен! :)))

И Я лишь написал один из вариантов решения Вашей задачи.


Кстати, Вы ранее приводили следующий код:

А если, например, будет реквот?? То ордер BUY ведь не откроется, а сигнал на открытие мог быть и верным. И через пару часов Вы увидите как цена ушла далеко вверх, а ордер BUY не открылcя из-за реквота...


а как от него застраховаться?

 
SeALALex:


а как от него застраховаться?

Самый элементарный способ, переписать код иначе:

Болк открытия на бай
if(Buy==true) 
  {ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask, Digits),5,SL,TP,Order,070177,0,Orange);
   if(ticket>0)
    { 
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) 
      {Buy=false;
       Print("BUY order opened : ",OrderOpenPrice());
       Alert("Buy Order for ",Symbol());
       SendMail("Buy Order "+Symbol()+" "+Ask,SL);     
       }
     }
     else Print("Error opening BUY order : ",GetLastError()); 
     return(0); 
   }

Пока ордер не откроется, сигнал на открытие длинной позиции Buy будет висеть в состоянии True.

 
MaxZ:

Самый элементарный способ, переписать код иначе:

Пока ордер не откроется, сигнал на открытие длинной позиции Buy будет висеть в состоянии True.


Спасибо огромное! и Роману спасибо огроное!

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

Плизз моЗГ на бекрень что нужно показать какой кусок кода?

 
SeALALex:


Спасибо огромное! и Роману спасибо огроное!

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

Если Вы не будете использовать маржу в расчётах лота, а будете оперировать только постоянными параметрами, заданными, например, в extern-переменных, то и лоты соответственно будут увеличиваться только на постоянные значения. Принцип, по которому может быть написан код Я приводил Выше.

SeALALex:


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

Плизз моЗГ на бекрень что нужно показать какой кусок кода?

У Вас есть переменные Lots, LotsInitial и LotsStep. При смене тренда Lots обнуляете и присваиваете начальное значение LotsInitial. Если тренд продолжается и уже открыты ордера по тренду и пришёл сигнал, что нужно открыть новый ордер, увеличиваете переменную Lots с шагом LotsStep и открываете ордер.

Видно, что всю логику Вы понимаете, а почему-то превратить её в операторы if'ы не можете... Почему, не знаю.

Может поможет:

extern LotsInitial = 0.5;
extern LotsStep    = 0.1;
       Lots;

int start()
{
   ...

   if ((Тренд окончен) && (Все ордера закрыты) && (Пришёл сигнал о возможном начале нового тренда))
      Lots = LotsInitial;
 
   if ((Тренд подтверждён) && (Коррекция) && (Пришёл ещё сигнал открыться по тренду))
      Lots += LotsStep;
  
   ...
}
 
MaxZ:

Если Вы не будете использовать маржу в расчётах лота, а будете оперировать только постоянными параметрами, заданными, например, в extern-переменных, то и лоты соответственно будут увеличиваться только на постоянные значения. Принцип, по которому может быть написан код Я приводил Выше.

У Вас есть переменные Lots и LotsStep. При смене тренда Lots обнуляете и присваиваете начальное значение. Если тренд продолжается и уже открыты ордера по тренду и пришёл сигнал, что нужно открыть новый ордер, увеличиваете переменную Lots с шагом LotsStep и открываете ордер.

Видно, что всю логику Вы понимаете, а почему-то превратить её в операторы if'ы не можете... Почему, не знаю.


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

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

Вы бы сначала Все ошибки исправили. Зачем добавлять что-то в советник, если он и без этого не работает? Хотя данный код не похож на полный функционал советника. Видимо Вы повырезали куски кода из него, а Мне ошибки разгребать? :)))

Например, не закрыта функция init()... И непонятная переменная: LastOrder...

Исправьте ошибки, пожалуйста.

 
MaxZ:

Вы бы сначала Все ошибки исправили. Зачем добавлять что-то в советник, если он и без этого не работает? Хотя данный код не похож на полный функционал советника. Видимо Вы повырезали куски кода из него, а Мне ошибки разгребать? :)))

Например, не закрыта функция init()... И непонятная переменная: LastOrder...

Исправьте ошибки, пожалуйста.


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


Речь не о ND. point это размер пункта, умножим его на ноль пять это будет к примеру 0,00005, не вижу смысла сравнивать это число с OrderClosePrice()-OrderTakeProfit(). TP не гарантирует ровно такую же цену закрытия. Плюс для баев и селов будут разные условия проверки

Такая конструкция несколько надежнее.



Спасибо!!Читаю. Плюс для баев и селов будут разные условия проверки-Аведь правда!!
Причина обращения: