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

 

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

Вопрос на засыпку.Можно описать в коде, чтобы параллельно выставлялись ордера на рабочем счете, с терминала "инвестор".

Что-бы не переносить в ручную.

Спасибо.

 
gvi2504 >>:

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

Вопрос на засыпку.Можно описать в коде, чтобы параллельно выставлялись ордера на рабочем счете, с терминала "инвестор".

Что-бы не переносить в ручную.

Спасибо.


копировщик сделок назвывается. на сайте в кодебазе есть.
 
fragile86 >>:


if (Bid > MA1 || Bid < MA2) // Проверка прохода диапазона
{
Alert("Цена находится за пределами диапазона.");// Сообщение
}

то если цена находится выше советник то и дело сигналит. а если я делаю так:

она и будет сигналить, так как у вас стоит условие или ( || )

вам надо поставить И ( && ). 

// Проверка прохода диапазона с возможным размещением МА друг относительно друга
if (Bid>MA1 && Bid<MA2) || (Bid<MA1 && Bid>MA2)) 
{

а тут


if (Bid > MA1 && Fact_Up==true) // Проверка прохода вверх
{
Fact_Dn=true; // Сообщать о цене выше МА1
Fact_Up=false; // Не сообщать о цене ниже МА1
Alert("Цена находится выше диапазона.");// Сообщение
}
//--------------------------------------------------------------------
if (Bid < MA2 && Fact_Dn==true) // Проверка прохода вниз
{
Fact_Up=true; // Сообщать о цене ниже МА2
Fact_Dn=false; // Не сообщать о цене выше МА2
Alert("Цена находится ниже диапазона.");// Сообщение
  }

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

 
sergeev >>:


копировщик сделок назвывается. на сайте в кодебазе есть.

Спасибо.

 
sergeev писал(а) >>

она и будет сигналить, так как у вас стоит условие или ( || )

вам надо поставить И ( && ).

а тут

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

спасибо за ответ. меня смущает только это: if (Bid>MA1 && Bid<MA2) || (Bid<MA1 && Bid>MA2)).

у меня две МА, одна (МА1) строится по High, другая (МА2) по Low. а здесь получается, что условие выполняется, когда цена выще High и одновременно ниже Low если поставить &&. ведь это невозможно.

может я что то неправильно понимаю, но я эту строчку читаю так: если цена выше МА1 и ниже МА2 или цена ниже МА1 и выше МА2, то ...

сейчас я написал так:

if (Bid > MA1 && Open < MA1) // Проверка прохода диапазона вверх
{
Alert("Цена находится выше диапазона.");// Сообщение
}
else
{
if (Bid < MA2 && Open > MA2) // Проверка прохода диапазона вниз
{
Alert("Цена находится ниже диапазона.");// Сообщение
}
}

в этом случае как только бар, открывшийся внутри диапазона пересекает МА, советник дает сигнал, но продолжает давать его каждый раз с приходом нового тика. а я стремлюсь, чтобы после того, как сигнал появился, на следущих тиках он его не давал. (не судите строго я в этом вобще ноль)
 
Господа программисты, знатоки MQL очень хочется копировщик сделок с реверсом, т.е. чтобы была возможность открывать противоположные образцовому счету ордера, очень пригодится для сливающих советников ну и всяких сливаторов, чтобы был полный переворот: например если сигнал на sell c TP и SL на образцовом счете, а на моем счете чтобы открывалась полностью обратная позиция вместо sell - buy, вместо TP - SL, вместо SL - TP, с отложенниками все по такой же схеме, буду очень признателен, но в разумных пределах.
 

Народ, помогите с OrderType(), после него отказывается работать, без него выставляется нормально. В чем может быть ошибка?

if(z==1){
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
double pbt=OrderOpenPrice();
OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
double pst=OrderOpenPrice();
double veha1=(pbt-pst+kon)*10000;
OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && c==0){ <--------------------------------------------------------------------------------------------
Print("Работоспособность ", veha1);
b11=OrderSend(Symbol(),OP_BUYSTOP,Lots,pbt+Point*10,3,0,0, "b11",1,0,Blue);
s2=OrderSend(Symbol(),OP_SELLSTOP,Lots,pst-Point*10,3,0,0, "s2",2,0,Red);
OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*40,Ask-Point*veha1,0,Red);
c=1;
}

Зарание спасибо!

 
if(z==1)
{
   OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
   double pbt=OrderOpenPrice();
   OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
   double pst=OrderOpenPrice();
   double veha1=(pbt-pst+kon)*10000;
   OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
   if(OrderType()==OP_SELL && c==0)
   { <--------------------------------------------------------------------------------------------
      Print("Работоспособность ", veha1);
      b11=OrderSend(Symbol(),OP_BUYSTOP,Lots,pbt+Point*10,3,0,0, "b11",1,0,Blue);
      s2=OrderSend(Symbol(),OP_SELLSTOP,Lots,pst-Point*10,3,0,0, "s2",2,0,Red);
      OrderSelect(1, SELECT_BY_POS, MODE_TRADES);
      OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*40,Ask-Point*veha1,0,Red);
      c=1;
   }
}
а каие ордера вы открываете? не отложенные случаем?
 

{ <--------------------------------------------------------------------------------------------

Вот это, что за фигня?

 

ага, открываю отложенник. когда он становится на рынок, открывается еще 1 и изменяются существующие на рынке.

{ <--------------------------------------------------------------------------------------------

Вот это, что за фигня?

просто показал где проблемма=)

Причина обращения: