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 сигнал в пройденную сторону уже не появится.
она и будет сигналить, так как у вас стоит условие или ( || )
вам надо поставить И ( && ).
а тут
автор хотел сказать, что сигнал надо давать только один раз. И затем флаг сразу сбрасывается на 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, с отложенниками все по такой же схеме, буду очень признателен, но в разумных пределах.
Добрый день всем.
Вопрос на засыпку.Можно описать в коде, чтобы параллельно выставлялись ордера на рабочем счете, с терминала "инвестор".
Что-бы не переносить в ручную.
Спасибо.
Добрый день всем.
Вопрос на засыпку.Можно описать в коде, чтобы параллельно выставлялись ордера на рабочем счете, с терминала "инвестор".
Что-бы не переносить в ручную.
Спасибо.
копировщик сделок назвывается. на сайте в кодебазе есть.if (Bid > MA1 || Bid < MA2) // Проверка прохода диапазона
{
Alert("Цена находится за пределами диапазона.");// Сообщение
}
то если цена находится выше советник то и дело сигналит. а если я делаю так:
она и будет сигналить, так как у вас стоит условие или ( || )
вам надо поставить И ( && ).
а тут
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 сигнал в пройденную сторону уже не появится.
копировщик сделок назвывается. на сайте в кодебазе есть.Спасибо.
она и будет сигналить, так как у вас стоит условие или ( || )
вам надо поставить И ( && ).
а тут
автор хотел сказать, что сигнал надо давать только один раз. И затем флаг сразу сбрасывается на 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("Цена находится ниже диапазона.");// Сообщение
}
}
Народ, помогите с 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;
}
Зарание спасибо!
{ <--------------------------------------------------------------------------------------------
Вот это, что за фигня?
ага, открываю отложенник. когда он становится на рынок, открывается еще 1 и изменяются существующие на рынке.
{ <--------------------------------------------------------------------------------------------
Вот это, что за фигня?
просто показал где проблемма=)