Ваши вопросы по языку MQL4

Артмен

Новичок форума
Не видел таких.
PHP:
Expand Collapse Copy
if(OrderType()==OP_BUY && OrderClosePrice()<=OrderStopLoss())
PHP:
Expand Collapse Copy
if(OrderType()==OP_SELL && OrderClosePrice()>=OrderStopLoss() && OrderStopLoss()!=0)

Не работает... Сов должен выключаться при закрытии ордера по Стоплоссу/Тэйкпрофиту, а он не выключается. Проверял на других условиях(не при закрытии ордера, а например при сигнале индюка) - прекрасно работает. :nda:
 

mobidik

-----
Не работает... Сов должен выключаться при закрытии ордера по Стоплоссу/Тэйкпрофиту, а он не выключается. Проверял на других условиях(не при закрытии ордера, а например при сигнале индюка) - прекрасно работает. :nda:

А Вы среди каких ордеров производите поиск нужного, да и как определяете нужный ордер?
 

Артмен

Новичок форума
А Вы среди каких ордеров производите поиск нужного, да и как определяете нужный ордер?

Ордер и искать в принципе не надо... сову разрешено только один ордер открывать.
И я пробовал искать ордер с OrdersTotal и с OrdersHistoryTotal.
 

morgan3

Прохожий
Автоматизация выставления индикаторов на график

Как сделать,чтобы индикатор1, выдавая например звуковой сигнал,вместо сигнала давал команду на выставление индикатора2 на график?
 

mobidik

-----
Ордер и искать в принципе не надо... сову разрешено только один ордер открывать.
И я пробовал искать ордер с OrdersTotal и с OrdersHistoryTotal.

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

Артмен

Новичок форума
Я не зря задал этот вопрос, т.к., как понял, Ваши действия совсем не верны.
1) Искать нужно только по историческим ордерам!
2) Не важно, сколько можно открывать позиций сову, т.к. это рыночные позиции у которых еще не сработал стоп или тейк - искать там нечего.
3) Нужно найти самый последний закрытый ордер, (1пункт) по времени закрытия.

Ещё один вопрос... Я его выше задавал но я его неправильно сформулировал. Есть сигнал индикатора. Как сделать что б советник перестал видеть этот сигнал через n число баров.
 

mobidik

-----
Ещё один вопрос... Я его выше задавал но я его неправильно сформулировал. Есть сигнал индикатора. Как сделать что б советник перестал видеть этот сигнал через n число баров.

Перебирать бары в цикле, с текущего по n - в наличии сигнала.
 

mobidik

-----
Как сделать,чтобы индикатор1, выдавая например звуковой сигнал,вместо сигнала давал команду на выставление индикатора2 на график?

Вместо алерта индюк должен нажать нужные клавиши, а эти клавиши будут являться "горячими" для какого-то индюка, как вариант, имхо.
 

Артмен

Новичок форума
Перебирать бары в цикле, с текущего по n - в наличии сигнала.

Я так и делал! Но всё равно не работало! Я написал так:
PHP:
Expand Collapse Copy
 extern int HowBars=5;

 int bars=0; //Переменная для расчёта баров
 bool Sig=false; //false - продажа true - покупка
 datetime time=0; //тайм сигнала
 bool SIGNAL=false; //Сигнал который пропускается после цикла
 if(SignalBUY!=EMPTY_VALUE) Sig=true; time=Time[0];
 if(SignalSELL!=EMPTY_VALUE) Sig=false; time=Time[0];
//Но я написал не в цикле(но в цикле тоже пробовал)
 if(Sig==true)
   {
     if(SignalBUY!=EMPTY_VALUE && time!=Time[0])
       {
             bars++;
             if(bars<=HowBars) SIGNAL=true; //Пропускается покупка
             if(bars>HowBars) bars=0; Sig=false;
       }
   }
 if(Sig==false)
   {
     if(SignalSELL!=EMPTY_VALUE && time!=Time[0])
       {
            bars++;
            if(bars<=HowBars) SIGNAL=false; //Пропускается продажа
            if(bars>HowBars) bars=0; Sig=true;
       }
   }

 if(SIGNAL==true)
   {
    //Покупаем
   }
 if(SIGNAL==false)
   {
    //Продаём
   }
 
Последнее редактирование:

mobidik

-----
Я так и делал! Но всё равно не работало! Я написал так:
PHP:
Expand Collapse Copy
 extern int HowBars=5;

 int bars=0; //Переменная для расчёта баров
 bool Sig=false; //false - продажа true - покупка
 datetime time=0; //тайм сигнала
 bool SIGNAL=false; //Сигнал который пропускается после цикла
 if(SignalBUY!=EMPTY_VALUE) Sig=true; time=Time[0];
 if(SignalSELL!=EMPTY_VALUE) Sig=false; time=Time[0];
//Но я написал не в цикле(но в цикле тоже пробовал)
 if(Sig==true)
   {
     if(SignalBUY!=EMPTY_VALUE && time!=Time[0])
       {
             bars++;
             if(bars<=HowBars) SIGNAL=true; //Пропускается покупка
             if(bars>HowBars) bars=0; Sig=false;
       }
   }
 if(Sig==false)
   {
     if(SignalSELL!=EMPTY_VALUE && time!=Time[0])
       {
            bars++;
            if(bars<=HowBars) SIGNAL=false; //Пропускается продажа
            if(bars>HowBars) bars=0; Sig=true;
       }
   }

 if(SIGNAL==true)
   {
    //Покупаем
   }
 if(SIGNAL==false)
   {
    //Продаём
   }

Вот Вам в качестве примера, а там уже используйте под свои нужды:

PHP:
Expand Collapse Copy
int  n   = 5;     // сканировать баров
int  i   = 0;     // с какого бара начинать сканирование
bool sig = false; // наличие сигнала

while(i<n+i)
 {
   double ind = iCustom(....,i);
   if(ind!=EMPTY_VALUE) 
    { 
      sig = true;
      break;
    }
   i++;
 }
 
if(sig)
 {
   // Есть сигнал за n баров начиная с i-го бара
 }
if(!sig)
 {
   // Сигнала нет за n баров начиная с i-го бара
 }
 

KriKs-Fx

Интересующийся
Благодарю Вас Влад!!! Вот вернулся с фазенды и снова за науку MQL :facepalm:.
 

Артмен

Новичок форума
Здравствуйте уважаемые программисты! Помогите пожалуйста с такой проблемой:
написал я маленький сов на 1 индюке от 1 большого сова который резко перестал работать(я его написал) при этом я большой сов не трогал - я вечером проверял его и всё работало, на следующий день сразу поставил его в тестер и он просто напросто не открывал ордера. То же самое и с маленьким на 1 индюке, который я написал чтоб перепроверить первый. Проверил его в тестере - работает так как и должен был. Потом я подождал где то ещё пол дня(при этом я к компу даже не подходил) и поставил его в тестер - не работает. На компе стоят 2 мощнейших антивируса - вирусов не может быть. Помогите пожалуйста. Заранее благодарен!
 

Вложения

Последнее редактирование:

vladradon

Программист
Здравствуйте уважаемые программисты! Помогите пожалуйста с такой проблемой:
написал я маленький сов на 1 индюке от 1 большого сова который резко перестал работать(я его написал) при этом я большой сов не трогал - я вечером проверял его и всё работало, на следующий день сразу поставил его в тестер и он просто напросто не открывал ордера. То же самое и с маленьким на 1 индюке, который я написал чтоб перепроверить первый. Проверил его в тестере - работает так как и должен был. Потом я подождал где то ещё пол дня(при этом я к компу даже не подходил) и поставил его в тестер - не работает. На компе стоят 2 мощнейших антивируса - вирусов не может быть. Помогите пожалуйста. Заранее благодарен!
Привет!
Не знаю, как у тебя сов мог работать, если считывание сигнала с индюка у тебя прописано через глобальные переменные терминала if(GlobalVariableGet("SVINGER SELL/BUY")==1..., а в индюке нет команд записи в глобалки данных. Ты ничего не напутал?;)
Я добавил вывод в глобалки в индюка и чуток поправил сова, но не тестировал.
 

Вложения

Последнее редактирование:

Артмен

Новичок форума
Привет!
Не знаю, как у тебя сов мог работать, если считывание сигнала с индюка у тебя прописано через глобальные переменные терминала if(GlobalVariableGet("SVINGER SELL/BUY")==1..., а в индюке нет команд записи в глобалки данных. Ты ничего не напутал?;)

Ой... прости индюк не тот скинул...)))
 

Вложения

Последнее редактирование:

vladradon

Программист
Это уже другой индюк в котором уже всё прописано только названия одинаковые
Я там выше уже поправленные выложил... У тебя индикаторы с одинаковыми именами с глобалками и без - они у тебя не будут конфликтовать? Может просто не тот индюк запускается?
 
Последнее редактирование:

Артмен

Новичок форума
Я там выше уже поправленные выложил... У тебя индикаторы с одинаковыми именами с глобалками и без - они у тебя не будут конфликтовать? Может просто не тот индюк запускается?

Ваще чёт не работает сов. Индюк работает а сов не одной сделки не открывает. Но насчёт конфликтования я щас проверю.
 
Последнее редактирование:
Верх