Ответить
04.07.2015, 11:16
Аватар для satkras
satkras satkras вне форума Интересующийся
Регистрация: 30.06.2015 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1

Фундаментальный анализ Команды роботу советнику

Предлагаю в данной ветке рассмотреть определённые команды для роботов советников.

Мне на данном этапе написания советника требуется условие команды на открытие только одного ордера в определённый период условий, даже когда этот ордер закроется, вплоть до наступления других условий открытия ордера.
У меня пока не получается, открывается следующий ордер при закрытии предыдущего, а этого не требуется, пока условия не сменятся на противоположные.
04.07.2015, 17:01
Регистрация: 13.03.2009 / Сообщений: 2,406
Поблагодарили 1,980 раз(а) / Репутация: 2057
Так и добавь условие смены на противоположные.
static bool ПрошлоеУсловие;
bool Условие;
//Что то поднимающее флаг Условие

if(!ПрошлоеУсловие && Условие)
{
//Открыть ордер
}
ПрошлоеУсловие = Условие;

ps А чем не понравилась ветка Ваши вопросы по языку MQL4
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
04.07.2015, 19:49
Аватар для satkras
satkras satkras вне форума Интересующийся
Регистрация: 30.06.2015 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1
Даа. Тут как раз всё понятно, а где именно добавить?
Вот часть кода отвечающая за открытие ордеров:

if (OrdersTotal()==0)
{
if ( Close[1]>MA && Up == 0 && Down > 0 && Volume[0]<Ticke_svechi)
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Low[3],Ask+tp,NULL,MagicNumber,0,clrBlue);
else if (Close[1]>MA && Up > 0 && Down == 0 && Volume[0]<Ticke_svechi)
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,High[3],Bid-sl,NULL,MagicNumber,0,clrRed);
}
05.07.2015, 06:34
Аватар для AlexeyVik
AlexeyVik AlexeyVik на форуме Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,660
Поблагодарили 3,789 раз(а) / Репутация: 3781
Даа. Тут как раз всё понятно, а где именно добавить?
Вот это и называется программированием. А простое написание кода, с которым справится и пятиклассник, это не то...
05.07.2015, 15:25
Регистрация: 13.03.2009 / Сообщений: 2,406
Поблагодарили 1,980 раз(а) / Репутация: 2057
Как то так
char Signal=0;//Флаг сигнала
static char LastSignal;//Прошлое состояние флага сигнала
//Есловия
if ( Close[1]>MA && Up == 0 && Down > 0 && Volume[0]<Ticke_svechi)Signal=1;
else if (Close[1]>MA && Up > 0 && Down == 0 && Volume[0]<Ticke_svechi)Signal=-1;

if (OrdersTotal()==0)
{//Проверка условий и открытие ордера
if(Signal>0 && LastSignal<=0)
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Low[3],Ask+tp,NULL,MagicNumber,0,clrBlue);
if(Signal<0 && LastSignal>=0)
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,High[3],Bid-sl,NULL,MagicNumber,0,clrRed);
}
LastSignal=Signal;//Запомнить состояние флага для следующего тика

Код не проверял.
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 21:26. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO